Lightning Lesson · 30 minutes · the written version

You have a list of everything
you shipped. None of it says
what you decided.

Writing the code was the thing many senior engineers were valued for, and it is no longer scarce. What survives is judgement: choosing under real uncertainty, owning it in writing, and being followed by people who do not report to you. That shift is moving faster than most promotion rubrics have been rewritten, which is exactly where the opportunity sits.

Ehsan Gazar
Staff Software Engineer at Tipalti
Where this goes · three moves, 30 minutes

One argument, in three moves.

0–101 · What you are actually promoted for nowthe criteria that survive cheap implementation, and the ones that quietly stopped counting
10–202 · Turn one decision into evidencethe template, a worked example that passes, and a real one that fails
20–303 · Move an org that does not report to youwhich written artefacts travel, and which ones nobody opens twice
How to read this

This is the written version of the lesson's material, put together afterwards from the lesson's own published objectives and the takeaway repo. It is not a transcript and it does not claim to reproduce what was said on the night. Where a number appears, it comes from running the repo, and the source ledger sits in this page's HTML.

By the end of this

You'll be able to…

1Name what you are actually promoted for now. The criteria that survive cheap implementation, and the ones that quietly stopped counting.
2Turn a decision you made into promotion evidence. How to write up a judgement call so a committee sees the scope, not just the work.
3Move an org that does not report to you. Influence without authority: the written artefacts that travel, and the ones nobody reads.
The recognition beat

Almost every packet is a
list of things that happened.

Open the document you keep for review season. Count the sentences that describe a choice you could have made differently. In most people's, and this includes strong people's, that count is zero.

What you wrote

Shipped the checkout refactor. Led the migration. Improved p95. Mentored two engineers. Every line true, every line a description of work that occurred.

What the reader needs

Someone who was not there, deciding in twenty minutes, against six other candidates. They cannot see the work. They can only see the page, and the page has no choices on it.

The packet is not thin because you did not do enough. It is thin because everything in it is implementation.
The reframe · the sentence the whole thing hangs on

Implementation got cheap.
Judgement did not.

You are promoted for the part that did not get cheap.
// Not the thing you built. The decision you can prove you owned.

This is not a claim that code stopped mattering. It is a claim about scarcity. When the typing gets cheaper, the price of the typing falls, and whatever is left holding the value is what you get paid and promoted for. What is left is choosing under uncertainty, and being accountable for that choice in writing.

The frame · three questions, portable to any ladder

A stranger reads one page.
Can they answer these three?

1
What could you have done instead?
The alternative you rejected, and what it would have cost as well as what it would have bought. This is the one nobody writes.
judgement
2
What changed, in a number?
One figure with a unit. If you have none, name the one you would collect next time and say so plainly. That is stronger than an adjective.
accountability
3
Who changed what they did, and what did they read?
People outside your reporting line, and the artefact that moved them. A meeting is not an artefact.
scope
Judgement, accountability, scope. Rubrics word them differently everywhere, but a committee is doing these three whatever the form says.
The artifact · one decision, eight headings

This is the whole template.

1## The decision one sentence, past tense, a verb you can be held to
2## The uncertainty at the time what was genuinely not knowable when you had to choose
3## Options considered at least one line starting "Rejected:" · mandatory
4## The counterfactual "If we had…" · what the other path would have broken
5## What it cost and what it moved at least one number with a unit
6## Who I moved, and how names outside your line, and the document they read
7## What I would do differently one honest line, not a humility performance
8## Links the ADR, the design doc, the measurement, the thread
copy it → templates/evidence-entry.md
Run it · the control

First, something that passes.

The repo ships the rubric as a script. It does not judge whether your decision was any good, because nothing can tell that from a text file. It checks that the page carries what a reader who was not in the room needs.

Notice

It still raises a warning on a document it passes. A checker that only ever prints red is not a tool, it is a mood, and one that never prints anything is a rubber stamp.

runbook step 1 → runbook.md
$ node --experimental-strip-types \
    scripts/check.ts examples/worked-example.md

examples/worked-example.md
  warn  placeholders   4 unfilled <placeholder> slots left.
  PASS  1 warning, 0 problems
The turn · two entries, same engineer, same year

Which one gets promoted?

Entry A
6 projects
Migration led. Checkout refactored. Two engineers mentored. On-call rota rebuilt. Every claim true. Nothing in it a model could not have produced from a commit log.
Entry B
1 decision
One choice, the option rejected, what that option would have broken, one number, and the name of the team that changed course because of a page they read without the author in the room.
Most rooms answer A, and they are being reasonable: A is more work, and more work has been the answer for most of these engineers' careers.
The break · the slide this turns on

The most valuable sentence
is about the thing you
did not build.

A decision with no rejected option is a task.
// And a committee cannot grade a task. There was nothing to get wrong.

Six delivered projects with no rejected options describe someone who executes. One decision with two rejected options, priced, describes someone who was trusted to choose. The second is the definition of the level, and it fits on one page.

Why it works · said slowly

A committee cannot grade an outcome.
It can only grade the gap.

Outcomes are contaminated. Good quarters happen to people who chose badly, and bad quarters happen to people who chose well, and everyone in the room knows it. So the thing a reader is actually reaching for is the distance between what happened and what would have happened otherwise.

What a rejected option supplies

The other branch. Without it there is no gap to measure, so the reader has nothing to attribute to you and falls back to volume, which is the criterion that just stopped counting.

Why it also protects you

It is the only section that survives a project going badly. "I chose X over Y, here is what Y would have cost, and here is what I got wrong" is a promotable entry about a failure.

The evidence · run it on a document that is not stupid

Four problems, and every
sentence is one a good
engineer would write.

The weak example in the repo is not a strawman. Helped, supported, contributed to, was involved in: these are what modesty sounds like in writing, and modesty in a packet reads as absence.

why each one costs you → examples/what-the-checker-caught.md
$ node --experimental-strip-types \
    scripts/check.ts examples/weak-example.md

examples/weak-example.md
  FAIL  rejected-option   No "Rejected:" option.
  FAIL  a-number          No number with a unit anywhere.
  FAIL  named-influence   Who I moved is too thin. Name the
                          teams, and name the thing they read.
  FAIL  weak-verbs        7 proximity verbs (helped, worked
                          on, was involved in, supported,
                          assisted, contributed to).
  warn  counterfactual    One clause. Say what would have
                          broken, for whom, and when.
  warn  length            149 words. Under 200 usually means
                          the uncertainty is missing.
  4 problems, 2 warnings
The honest contrast · where this is weakest

Two ways this fails,
and one of them is mine.

1
Writing does not promote you if nobody with a vote reads it.
A perfect entry in a private repo is worth nothing. This fixes the half of the problem that is yours. Getting it in front of the people who decide is the other half, and it is not a writing problem.
the honest limit
2
An unevidenced counterfactual reads as arrogance.
"Without me this would have failed" is worse than saying nothing, because it invites the reader to argue with you instead of with the page. Be conservative and link the measurement.
the trap
And the checker's own limit

It cannot tell whether a decision was good. A well-formed entry about a bad decision passes; a badly formed entry about an excellent decision fails. That second case is the whole reason the template exists, and it is also the reason the tool is not a judge.

Objective three · influence without authority

An artefact travels or it doesn't.

The thing you producedDoes it work when you are not in the room?Why
Decision record naming the irreversible operationYesSomebody else quotes one line of it in a review you were never invited to
A benchmark with the method written downYesIt settles the argument again, next quarter, without you
A migration guide someone followed without asking youYesSilence is the evidence. Nobody had to ask
A long comment on a pull requestRarelyIt dies with the branch and is unfindable within a month
Agreement in a planning meetingNoA meeting cannot be read by somebody who was not in it
A strategy deck with no decision in itNoIt is read once, admired, and never cited
The test is not how good the document is. It is whether it changed what somebody did after you stopped talking.
Zoom out · the packet is a byproduct

Written monthly, this costs six hours a year.
Written in review week, it cannot be done.

By the time the packet is due you know how everything turned out, so the uncertainty is gone and you cannot reconstruct what you did not know eleven months ago. That missing uncertainty is exactly the part that proves it was a judgement call.

On the day you decide
Five minutes. The decision, what you did not know, what you rejected, what you expected, who has to change.
decision-log-entry.md
Six months later
One line: what actually happened. That line is the difference between a claim and evidence.
one line
Review season
Six of these, ordered strongest first, is a packet. You are editing, not remembering.
packet-outline.md
The takeaway · what to write tonight

Pick the decision where you
could have gone the other way.

Not your biggest project. The one where a reasonable person would have chosen differently, and you had to pick anyway. If you cannot name what you rejected, pick another one, because that one was a task.

1What did you argue about for more than a week? Length of argument is a decent proxy for genuine uncertainty. Nobody argues for a week about something obvious.
2What did you choose that you would struggle to defend in one line today? If it is still hard to justify, the trade-off was real and it is still real.
3What did somebody else stop doing because of something you wrote? That is objective three, and it is usually the entry people had forgotten they had.
Wednesday · three steps, and one of them does the work

Forty-five minutes, once.

1
Five minutes, from memory
Fill the decision log entry with no other tab open. Capture what you did not know before you go looking for evidence and quietly rewrite the past.
2
Thirty minutes, every heading
Fill the full entry in order. Leave an empty heading empty. Then run the checker and expect two to four failures on a first draft.
3
Ten minutes, one question
Give it to somebody one team over who was not there. Ask only: "from this page alone, what would have happened if I had chosen the other option?"
Step three is the one that does the real work, and it is the one everybody skips. The checker can see that a counterfactual sentence exists. It cannot see whether it lands.
The repo · public, MIT, no install, no network

Everything here, cloneable.

Node 22.6 or newer and nothing else. Three templates, two worked examples, the executable rubric, and a runbook that goes from a blank file to a finished entry in forty-five minutes. Your own entries land in a gitignored folder, so a real packet never leaves your machine by accident.

Start with runbook.md. Step 1 shows you the checker passing before step 2 shows you it failing, which is the right order for believing either of them.
Your turn · three minutes, and then silence

Name one decision
you could have made
differently.

Not the project. The fork. One sentence: what you chose, and what you chose against. If the second half is hard to write, that is the finding, and it is a more useful finding than any slide here.

If nothing comes: that is not a career problem, it is a documentation problem, and it is fixable starting with the next decision you make rather than the last one.
Recap · five lines

What to take away.

1You are promoted for the part that did not get cheap. Implementation got cheap. Judgement did not.
2A decision with no rejected option is a task. The most valuable sentence in your packet is about the thing you did not build.
3A committee cannot grade an outcome, only the gap. The gap between what happened and what would have happened is what the rejected option supplies.
4One number with a unit beats any adjective. If you have none, name the one you would collect next time and say so plainly.
5A meeting cannot be read by somebody who was not in it. Influence without authority is an artefact that kept working after you left the room.
Two things, in this order

Write one entry. Then tell me
the decision you couldn't write up.

Clone the repo, run the checker on the two examples, then fill the template on one real decision. Forty-five minutes, tonight, on something you already did.

Then reply and tell me about the one you tried to write up and could not, because the rejected option would not come. Those are the interesting ones, and they are usually the difference between a career that stalled and one that was never written down.

If this is the shape of the problem you are hitting, From Senior to Staff is a live cohort of it. Small and capped.