I have read the books and worked in “agile” teams. I can see the simple (lean) roots and the reason for change, but something has started to niggle me. The “agile” mantra is fundamentally about project management . I have seen little to persuade me that software engineering as a practice has gone through the same paradigm shift.

Fundamentally we work in the same ways, yes we have test driven design, yes we unit test, but are we looking beyond this to “agile”- value driven development environments that reduce the cost to create code, that allow customers to even create some of the assets? I don’t see it (personally). Where is the blend of computer science and mathematical rigor in our work? Why are we, for example, defining “glue” logic by hand - Code it in a formal state machine description? Tie components together using a formal language and build tools that testers and customers can use to work in this language (under the hood). Unite all customers around the code, do not exclude or provide layers requiring interpretation (and a chance for errors).

The more I read about flow based programming and look at the games industry (especially in the area of “tools” which allow children to construct robust software). The more I think we (as software engineers) should be re-thinking how we actually construct and build software and more importantly how we allow different stakeholders to access and modify it.