Six Techniques Lie at the Heart of IT Agility
Written by David Noel-Davies   

The skill levels of project teams can be measured by their capabilities in these techniques. By employing these techniques, a project team will always be able to produce competent (and sometimes even brilliant) results.

These six techniques are a simple yet comprehensive set of skills that can be taught and mastered by people involved in building systems. These core techniques are:
1) Joint applications design (JAD)
2) Process mapping
3) Data modeling
4) System prototyping
5) Object oriented design and programming
6) System testing and rollout.
There are other techniques that may be relevant from time to time, but these six core techniques are always relevant in every situation regardless of the technology being used or the problems being addressed. The best practitioners of IT agility are competent in all of them and masters of some of them.
IT agility happens when people use creative combinations of these techniques to define, design and build solution systems for the challenges they face. The JAD technique is key for pooling the insights and ideas of business and technical people to define possible solutions. Combinations of JAD, process mapping, and system prototyping are key to further exploration of possible solution systems and creation of detailed system design specifications. Then building systems from design specifications calls for the techniques of object oriented design and programming and system testing and rollout.
These techniques are well known in the IT profession; they weren’t created yesterday. Do a web search on any of these techniques and you will find hundreds of references to them and many options for getting education and training in them. In IT agility, these are the basic skills of the game. It is possible to get a very accurate assessment of the chances for success of a project team on an agile development project (or any IT development project for that matter) by measuring their skill levels in these six core techniques.
Of course people on project teams need to be skilled in the use of the specific programming languages, operating systems, databases and software packages that will be used, but without solid competency in the core techniques, they cannot be agile. Without competency in these techniques, whatever technologies people use tend to be employed in rigid and clumsy ways. This is because people who are not competent in the core techniques tend to learn particular technologies by rote memorization which limits their options for flexibility and responsiveness.
In a fast-paced, agile organization, people need the higher level skills encompassed in these core techniques to operate effectively. In the “good old days” when companies and technologies did not change so fast people had time to spend years learning a particular programming language and they could spend years learning the operating procedures of their organization. Rote learning had a chance to produce value because things stayed the same long enough for the rote learner to come to an understanding of higher level requirements by digesting masses of low level details.
But these days, as things change faster and faster, it is critical for people to be competent in the use of higher level skills that allow them to analyze many different situations, organize and communicate their ideas, and design solutions to new problems using many different technologies. So people with these skills can always deliver value quickly regardless of the technologies being used and the organizations they work with.
Are there any other high level skills that you would add to these six core techniques?