Where does it stand?
Ask a team where an application stands and you will probably get a different answer from each person. 'Almost finished', 'in testing', 'it is already in production, but it still needs…'. Without defined phases, the status of an application is an opinion.
Phases with names
A useful lifecycle has few phases and each one has a concrete result:
| Phase | Ends when there is… |
|---|---|
| Idea | A described problem and somebody sponsoring it |
| Specification | What is going to be built, what is not, and how you will know it works |
| Minimum product | A version deployed in a development environment that meets the essentials |
| Acceptance | The same version, in an environment identical to production, reviewed by whoever asked for it |
| Production | The approved version, deployed and observed |
Gates, not meetings
Between phases there are approval gates. A gate is not a meeting: it is a question with a written answer.
- It has a criterion: what has to be true to pass.
- It has an owner: a specific person who approves, by name.
- It leaves a record: the approval is written down with a date, and if it is rejected, with the reason.
Gates that depend on human judgement (is this what was asked for?, do we accept this risk?) are approved by a person. Those that can be checked automatically (does it compile?, do the tests pass?, is any document missing?) are checked by the platform, and are not up for debate.
What you gain
- The status of each application is a fact, not an opinion.
- Nothing reaches production without somebody by name having decided it.
- Conversations focus on what needs judgement, because the rest is automated.
The first gate that really matters is moving from the idea to something buildable. That is the specification.
How we apply it: Platform Engineering.