Agile, Emergence and Deliberate Design
Emergence is good, but…
…it takes time, and
…under some circumstances it may not happen!
If you have been there … done that … then you don’t have to wait for your application architecture to emerge over several iterations. You can use your past experience to nail it down at the beginning.
However, if all the team members are new to the problem or the technology – experimentation, trail and error would be need to arrive at the design and architecture.
Alternately, the team can take the help of a specialist who can get them going. This can cut down lot of exploration into blind alley. You may feel that it is be better to learn the hard way but imagine if we had to learn everything by ourselves from scratch – you may have to start by inventing the wheel!
So, a good question to ask is…
…where do you draw the line between the allowing the design to emerge and doing an upfront and deliberate design?
…to what detail should go?
…how much of external help should you take?