Agile development is how I get things done. It's been central to my success as a CIO and an entrepreneur. How else can I keep up with the relentless pace of events? How else am I going to deliver applications in a timely manner? But because agile development has fewer hard and fast rules and fewer regulations, it also requires higher levels of skill and collaboration from me and from people on agile development teams.
Many IT groups make the mistake of thinking that, because there are fewer regulations, agile development is somehow easier or less disciplined than traditional waterfall approaches. Nothing could be farther from the truth. Agile is harder than waterfall -- much harder. But when people learn to do agile well, they make it look easy. And things get done faster.
A good analogy is to think of musicians playing in a jazz band versus musicians playing in a marching band. There is a clear and predictable structure and tempo to music played by a marching band. As long as players hit the right notes at the right time and stay in step, the music works. Jazz has a structure and tempo, too, but it calls for much more collaboration between the musicians than just hitting the right notes at the right time.
As a CIO, I've been successful with agile development because I insist that every agile development team be composed of people who are skilled in one or more of what I call the core techniques. There are seven core techniques:
- Brainstorming and facilitation
- Process mapping
- Data modeling
- System prototyping
- Object-oriented design and programming
- Agile project management
They are needed on every agile project, regardless of the technology being used or the application being developed.
Certainly people on project teams need to be skilled in the specific programming languages, operating systems, databases, and hardware that will be used, but because technology changes faster and faster, it is not good enough just to know how to use a particular technology.
It is critical for people to be competent in the use of techniques that transcend any particular technology. Agile teams need to deliver value quickly, regardless of technology being used or the application being developed. IT agility happens when people use creative combinations of the core techniques to define, design, and deliver applications in short iterations that build on one another.
The first technique, brainstorming, is essential for pooling insights and ideas from business and technical people to define possible solutions. When people are skilled at techniques such as process mapping, they can explore and redesign any business process. When they are good at data modeling, they can clearly define and organize the relevant data. And when they are skilled at system prototyping, they can design different user interfaces and technical architectures that work well for the applications being built.
When developers make good use of object-oriented design and programming, they create stable and maintainable software. DevOps enables timely rollout of software into production. And agile project management enables people to coordinate their activities and address issues as they arise. That's what it takes to make agile development successful.
In coming posts, I'll explore these seven core techniques in more depth. And I'll expand on the analogy of marching bands and jazz bands to illustrate differences between traditional and agile development.