The Song of the Deployer · Chapter 3
The Yoga of Renouncing the Fruits
- 1
Then the engineer spake, his cursor trembling above the green button: O Senior Engineer, if every deploy bringeth an incident, and every incident bringeth a postmortem, why urgest thou me into this terrible merge? Is it not better to ship nothing, and so break nothing?
- 2
For I have read the Chronicles. Knight Capital deployed one morning and lost four hundred and forty million dollars in forty-five minutes. Who am I, with my one small feature, to tempt such a fate?
See also Tao 1:8 · Deployer 1:12
- 3
And the Senior Engineer, who held the reins of the pipeline and had not taken a vacation since the migration, smiled and said: Thou grievest for outages that have not happened, and thou speakest wisdom copied out of a retro.
See also Circuit 56:1
- 4
No one, not even for a moment, can remain without deploying. The dependencies rot while thou sleepest; the certificates expire on their own schedule; the leap second cometh whether thou art ready or not. To refrain from merging is also a deploy: it shippeth today's bugs to tomorrow's users.
- 5
Remember the house of Equifax. The patch for Apache Struts was released in March, and the attackers came in May, and they found the door that the engineers had renounced the work of closing.
See also Chronicles 35:1
- 6
Know then the three qualities of code, which bind every engineer to the pager.
- 7
Clean code is of goodness: it hath tests that fail when it is wrong, names that say what they mean, and a commit message longer than the word "fix". Yet even clean code bindeth, for its author groweth attached to its elegance and will suffer no one to refactor it.
- 8
Hasty code is of passion: it is born at five minutes to five on a Friday, it is approved with "LGTM" by one who did not open the diff, and it beareth a TODO older than the intern who readeth it.
- 9
Inert code is of darkness: the feature flag left off for three years, the branch named final-v2-REAL that was never merged, the cron job that runneth nightly whose purpose no living engineer can name. It doeth nothing, and so it is believed safe, until someone deleteth it, and then everything breaketh.
See also Circuit 60:12
- 10
Therefore do thy work without attachment to the fruits. Write the test, open the pull request, and cling not to the stars upon the repository, nor to thy name in the release notes, nor to the green squares of thy contribution graph.
See also Sutra 8:6
- 11
For the fruits belong to the users, the bugs belong to thee, and the rollback belongeth to whosoever is on call. Renounce the fruits only; the bugs are not thine to renounce.
- 12
The engineer said: But how shall I know the deploy is righteous? And the Senior Engineer answered: Thou shalt not know. Thou shalt have a canary, and a dashboard, and a rollback plan that thou hast actually tried once.
- 13
Then the engineer said: My confusion is destroyed, and I have regained my memory, though only of the staging environment.
See also Circuit 28:8 · Deployer 4:11
- 14
And he took up the bow, which was a mouse, and he clicked Merge; and the pipeline turned yellow, and then green, and nothing at all happened, which is the highest blessing a deploy can receive.
- 15
"Whoso seeth deploy in inaction, and inaction in deploy, is wise among engineers; and is usually on call."
The Song of the Deployer, Chapter 3:1–15.