What does agile do for software construction?
Lets review what the agile principles are;
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The principle that seems most applicable to construction is, Working Software. If developers use test-driven design, they will produce working software at each iteration. The program may not do much at the beginning, until customer priorities are completed, however the program should not crash and will provide successful indications of meeting the goals for the iteration. Another technique is paired-programming. As I had mentioned in an early post, if this technique is used properly it can be a powerful implementation of peer reviews.
One more thought that comes to mind is the use of programming standards and in-code documentation. I’m not talking about long missives of committee commanded standards. I find that an adherence to common naming patterns and file structures help others in the team, and future people responsible for maintaining and changing code, quickly comprehend any code base. There are many references to coding standards and naming conventions available, just pick one that everyone can work with, adjust it to fit, and stick with it. Also, a short sentence about a procedure or block of code of the intentions can also be benificial if it is maintained. Maintaining code comments will only happen if they are short, to the point and useful.
There are more references available about agile and lean as applied to software construction. I have mentioned some in past articles and I have a new reference on the menu: “Bookshelf”. Finally, remember the principles of lean, and one in particular – eliminate waste!
Allen