Planning is everything

22 Apr 2019

Plans are worthless, but planning is everything.

General Dwight D. Eisenhower

No plan survives contact with the enemy.

Field Marshal Helmuth von Moltke

Plan 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:

  1. Generate requirements.
  2. Write code.
  3. 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

In fact when W.W. Royce wrote the first analysis of the waterfall process he stated: “The implementation…is risky and invites failure.”

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 that meet customer expectations are discarding Waterfall and using Agile.

Agile

Agile is a new way of managing large projects: it uses adaptive planning, early delivery, and continuous improvement.

One version of Agile, called Scrum, breaks the project into sprints, each sprint being a self-contained development cycle that lasts one to four weeks:

  1. Sprint planning meeting. Decide which requirements (software features) to develop in this sprint.
  2. Sprint. Write the software using test-driven development: write the test first then write just enough code to make the test pass and no more. Writing the test first defines success up front.
  3. Review. Demo the new software to stakeholders and get feedback from them.
  4. Retrospective. Assess the team’s performance and adjust as needed.

Agile works so well that even the U.S. military noticed and 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.

Written documentation isn’t terribly important in Agile, certainly not to the level of importance when using Waterfall. Agile values working software over comprehensive documentation and says the most efficient and effective method of conveying information to and within a development team is face-to-face conversation, not more documentation.

You need planning, not more plans.