Does agile development suffer from lack of architecture and design? Are agile solutions inferior to those developed using non-agile approaches?
Twenty years ago the answer would have been ‘yes’. Twenty years ago the software profession was less mature than it is today. Software engineering lacked standardization back then.
Today, we have patterns — architecture patters, design patterns, solution patterns, even workflow patterns. Whatever problem your team is trying to solve, it’s likely that someone has already solved a similar problem and published a pattern for the solution.
Thus, software professionals can get more done in less time by adopting a pattern and customizing it to their needs.
Solutions at the speed of change
Some will argue that every problem is unique requiring analysis and design time to craft the optimal solution. I would counter that in today’s fast-paced business world there just isn’t time to craft the ideal solution. Furthermore, business models and technology implementations are changing so fast that solutions are outdated shortly after they are delivered.
The lack-of-design argument against agile just doesn’t hold up any longer — with one exception. If your team is blazing a new trail, attempting to solve a problem that has never been solved before, you will need significant analysis and design time before development can begin.
In this situation, I’d argue that you are conducting research, not building software. Once the research is complete, why not proceed using an agile approach?
If you want a good source of software patterns, check out the Hillside Group Patterns Library.
Do you have anything to add?