Alex Keizer recommends McConnell's “Rapid Development” for good ideas on software development projects.
Let me back up a bit and explain a bit more of where I would like to go with this.
“Software” has been recognized as an engineering activity for at least 30 years. That is, it was recognized that some “process” was involved in its creation. The first hint I had was Donald E. Knuth's “Art of Computer Programming” {please note the title!}. Since then there have been methodologies, methods, techniques, processes, management schemes, etc that have been proposed, advocated, crusaded, etc.
My conceit is that there can be a “unified field theory”. As with all Pattern literature it is not the patterns themselves that I hope to contribute (as if they weren't in use already they wouldn't be patterns) as it is the thought that this discipline can be so codefied, and that arguments such as “Agile development or Not” can be seen as different solutions (balances) to the set of forces that each project is faced with.
And that by moving up to this level of abstraction will allow the heat and energy now being expended arguing “which is better” can instead be spent creatively on defining the balance point(s) where a particular pattern is useful.
In this theory I would like to limit the number of forces (perhaps better thought of as force categories) and the elements of control (parameters brought into a specific balance in a specific pattern). But I am willing to be convinced that there are more than I have so far enumerated.
As a teaser, some of the pattern force balances that fit this theory include:
- Offshore/Multisite Development
- Agile Development
- Waterfall Development
- Collaborative Development
- Competitive Market Development
Plus others, of course.