Please take a moment to temporarily push all you’ve learned about large-system software development on the stack in your brain and imbibe some timeless advice from this thoughtful, 1992, NASA report: “Recommended Approach To Software Development“:
Ok, now that you’re done processing what you’ve just seen, you can pop the stack.
Some people like to ask: “What happened before the big bang?“. Being a geeko-nerd, I like to ask: “What happened before the first product backlog?”.
Regarding agile framework definitions, IMO, Scrum has the most well-documented and coherent definition of the bunch. However, since it remains silent on the issue, I still wonder: “WTF happens before the first product backlog?”.
For innately complex systems requiring a large amount of coordinated effort, here’s what I think should happen:
- A small group of senior domain analysts and system architects should spend a fair amount of un-pressured time to develop and document the high level, technical blueprints (structures + behaviors) for what needs to be built.
- The authoring group should disseminate and educate the rest of the development team on the technical vision.
- The team should populate and iterate on the first version of the product backlog.
- The team should decide on, and put in place, the development toolset and infrastructure that will be used to develop and test the system throughout the effort.
- The team, including the technical authors, should start incrementally and iteratively building the system – revisiting/updating the plans/product backlog frequently when new knowledge is discovered as the project moves forward.
What do YOU think should happen before the first product backlog?
Gee, look at all those fancy, multidividual contributor titles. And then there is the development team, a.k.a the title-less induhvidual contributors.