There are lots of descriptions of what it means to be agile. Some are good, some are better, some are lame. But what is the description of being agile in a domain where not being agile means you are dead. You die in a ball of flames, crash into the ground, break into a 1,000 little pieces, never to be seen again.
This is the real definition of being agile. This is Col. John Boyd's approach to being agile. For the software development business it means what each of the items in the diagram say:
- Unfolding circumstances - nothing stays the same. Emergence is natural, but responding to emergence must be deliberate. Non-deliberate response will cause you to crash and burn
- Outside information - all useful information is outside information. Looking at reports, pictures on the wall, pretty charts is driving in the rear view mirror. The real information comes to you in real time
- Unfolding interaction with the environment - when the project comes in contact with the customer, the developers, the suppliers things change. They have to change by the very definition of contact.
- Creation of implicit guidance and control - guidance,that is effective guidance - is implicit. It is subtle, it is just that guidance, not command and control. There are certainly commands and there is most certainly control. Direction to change course is a command. Deciding that we've arrived at on overspent state and providing more resources is certainly control.
- Feedback - Optimism is the disease, feedback is the cure - Kent Beck
- Feedforward - this is a term used in adaptive control systems. Control system found in aircraft, refineries, paper mills, power plants. Feedforward control system keep the system between the white lines before it has a chance to go outside the white lines. Self centering steering is an example. Without a feed-forward system, you are always driving in the rear view mirror. It can be done, but you only learn you ran over something - like a skunk - after you've run over it.
- Taking action and testing those actions - management is all about taking action. Management is a verb. Software development is a verb.
- Understanding the cultural traditions, generic heritage, the analysis and synthesis activities, all the previous experiences, and all the new information gathered along the way - these will all bite you if you haven't taken action to understand, control, feed-forward corrective actions.
In the military flying business there are forms for everything. There is a form to be filled out when there is an accident, a crash. At the bottom of some page, I forget, there is a question condition of remains? There are several check boxes. One is labeled BBR - Burned Beyond Recognition.
Don't let your project crash and burn and you end up BBR.