Plans are worthless, but planning is everything.
General Dwight D. EisenhowerNo plan survives contact with the enemy.
Field Marshal Helmuth von MoltkePlan to scrap your first system. You will anyway.
Systemantics: How Systems Work and Especially How They Fail
Yes, plans are useless but the planning process is indispensible: it describes the objective, allies, obstacles with work arounds, costs, and risks. Without a solid plan how do we know if we succeeded? What will success even look like?
Project planning
Waterfall
Waterfall is an old-school project management system, favored by defense contractors, aerospace firms, and other risk-averse entities. Waterfall development has three parts, each of which can take months or years in a large project:
- Generate requirements.
- Write code.
- Test code.
The glaring thermal-exhaust-port-on-your-Death-Star flaw is that you don’t start testing until months (or years) after starting to write code, which means that problems which could have been easily fixed early in the development cycle require much more work to correct.
The least initial deviation from the truth is multiplied later a thousandfold.
Aristotle
Waterfall also generates huge mounds of plans in the documentation phase, plans which get out of sync with the software and grow more useless the longer the project drags on. Companies who want to ship projects on time a meet customer expectations are discarding Waterfall and using Agile.
Agile
Agile is a new way of managing projects where you break the project into sprints, each sprint being a self-contained development cycle that lasts two to four weeks:
- Sprint planning meeting. Decide which requirements (software features) to develop in this sprint.
- Sprint. Write the software using test-driven development: write each test first then write just enough code to make the test pass and no more. Writing the test first defines success up front.
- Review. Demo the new feature to stakeholders and get feedback from them.
- Retrospective. Assess the team’s performance and adjust as needed.
Agile works so well that even the U.S. military signed off on it:
SpaceX appears to be an ‘existence proof’ that modern DevOps commercial practices can be used effectively for rapidly changing systems that are mission critical for national security.
You need planning, not more plans.