Team Lead Mindset
Technical Strategy and Roadmaps
Strategy versus wish list, roadmaps as bets with date ranges, saying no, build versus buy, migrations and a one-page strategy template.
On this page
- Words used in this lesson
- A strategy is not a wish list
- Technical vision: a picture, not a spec
- The plan is a bet, and dates are ranges
- Saying no (and what to say instead)
- Build versus buy
- Migrations: the plan matters more than the target
- How to write a one-page technical strategy
- Try it
- Interview questions
- Key takeaways
- What's next
In one line: a technical strategy is not a list of wishes. It says what is going wrong (a diagnosis), what rule you will follow because of it (a guiding policy), and what you will actually do (actions that fit together). A roadmap is then a set of bets with date ranges, and a good lead is just as clear about what the team will not do.
"What is your plan for the platform this year?" "Should we build it or buy it?" "Why are we not doing X?" These questions come from product, from your manager and from interviewers. A list of features is not an answer. This lesson gives a simple frame for strategy, a way to write a one-page technical strategy, and short guides for roadmaps, saying no, build versus buy and migrations.
Read Lesson 0 first for the answer shape. Strategy sits on top of smaller decisions: Lesson 1 (packages), Lesson 2 (languages and frameworks) and Lesson 5 (design docs and RFCs). For debt and the rewrite trap see Lesson 6, and for stakeholders and change see Lesson 10.
Everything here is common practice and opinion. Companies differ a lot. Use the ideas, not the exact words, and always use your own true examples.
What I checked. This series has no code to run, so I ran nothing. I read directly (raw text on GitHub) the Technical strategy, Strategy, Planning and Change management sections of charlax/engineering-management, and the Architecture and Technologies sections of kuchin/awesome-cto. I only have those lists' one-line descriptions of each article. I did not open any of the articles themselves, for example Joel Spolsky's "Things You Should Never Do", Dan McKinley's "Choose Boring Technology", the Spotify migrations article, or the roadmapping and OKR posts. Will Larson's strategy posts ("Write five, then synthesize: good engineering strategy is boring" and "Is engineering strategy useful?") are on the list, but his site could not be opened from my environment, so I do not describe them beyond their titles. The "diagnosis, guiding policy, coherent actions" frame is a well-known frame from Richard Rumelt's book Good Strategy Bad Strategy. I did not re-read the book here, and I did not find it in the lists I read, so treat my wording as my own summary from memory. The one-page template, the examples and the sample wording are mine.
Words used in this lesson
- Strategy is a plan for overcoming a specific hard problem, built on an honest look at the situation.
- A diagnosis is a plain statement of what is going on and why it is hard. It is the first part of the frame below.
- A guiding policy is a rule that narrows the choices, for example "we will not add a new database engine this year".
- Coherent actions are the steps that follow the policy and support each other.
- A technical vision is a short picture of where the system and the team should be in a few years.
- A roadmap is a plan of what you intend to work on and roughly when. It is a set of bets, not a contract.
- Now / next / later is a way to show a roadmap in three buckets instead of exact dates.
- Build versus buy is the choice between writing something yourself and paying for (or adopting) a ready-made one.
- A migration is moving from an old system, library or API to a new one.
- An innovation token (from "Choose Boring Technology") is the idea that a team can afford only a few new, risky technologies. I know it from the way charlax's list describes it.
A strategy is not a wish list
Many "strategies" are really lists: improve performance, adopt microservices, raise quality, use AI. Nothing in them tells you what to do on Monday morning, or what to refuse. A simple test: can this document make someone say no? If every idea fits, it is a wish list.
A well-known frame (from Rumelt's Good Strategy Bad Strategy; I did not re-read it, see the note above) has three parts:
| Part | Question it answers | Example |
|---|---|---|
| Diagnosis | What is the real problem? | "Releases take two weeks because three teams edit one shared module with no tests." |
| Guiding policy | What rule will we follow? | "We will carve out that module behind a small interface, and no team changes it directly until that is done." |
| Coherent actions | What will we do, and do the steps fit together? | "Add tests around the current behaviour, define the interface, move one team at a time, then delete the old path." |
Two things make this useful for a lead:
- The diagnosis is the hard part. A weak diagnosis ("our code is old") leads to weak actions ("rewrite it"). A sharp one ("changes to this module are slow and break other teams") leads to focused actions.
- The policy removes options on purpose. "We will not add a new datastore this year" is a policy. It helps because people stop proposing five databases and start solving the real problem.
The Strategy section of charlax's list has related ideas. I have only the list's description of each, but the descriptions are useful:
- The waterline principle (attributed to Bill Gore). Imagine a decision gone wrong blows a hole in the side of a ship. A hole above the waterline you can patch and learn from. A hole below it can sink you. Great teams make big bets, but they avoid big bets that can blow a hole below the waterline. For a lead: make most decisions fast and reversible, and slow down for the few that you cannot undo.
- Start from the customer and go backward. The list links a talk where stopping a project was the right call "because it was a technology without any customer".
- Write five, then synthesize. The title of one of Will Larson's posts. I did not read it, so I will only say that the title suggests writing several small pieces first and finding the common thread afterwards.
Technical vision: a picture, not a spec
A technical vision is a few sentences about where you want the system to be in about two to three years, written so that a new engineer can understand it. It is not a design. It is a direction.
A good vision is:
- Short. One page at most.
- Concrete enough to say no. "A small number of services that each one team can deploy alone" is better than "a modern architecture".
- Linked to the business. If the company needs to enter a new market, the vision should say how the system helps.
- Honest about trade-offs. "We accept a larger bill to keep the team small" is a real choice.
A vision that nobody remembers is not a vision. A quick test: ask three engineers separately where the system is going. If you get three different answers, the vision is not working.
The plan is a bet, and dates are ranges
The Planning section of charlax's list has several short ideas about roadmaps. Again, I only have the list's summary lines:
- Expect confidence to fall over time. One article ("The Fundamentals of Roadmapping") says the best a leader can do is a 12 to 18 month plan pointing in the right direction, broken down by quarter, with the assumption that confidence in each later quarter is lower. Team roadmaps then come from those focus areas.
- Plan with milestones, not only stories. A listed article argues for managing through milestones.
- Planning has rules. A listed post ("How to plan?") has bullets such as "do fewer things", "don't wait to kill bad ideas" and "minimize dependencies". I have only the bullets, not the reasoning.
- A checklist for judging a roadmap. Another listed post gives questions such as: does it connect to the mission? Is it outcome-oriented? Is it flexible? Does it name major dependencies and risks? Does it feel aggressive but achievable?
- Outcomes over output. A listed OKR article says objectives and key results should ideally measure outcomes, not output. Another warns about the "build trap": shipping features and forgetting the value they were for.
- A clear theory of success. A listed post asks: "Does our resource allocation actually support our theory of success?" and "What signals will tell us whether our theory is plausible or not, and how long will it be before we get those signals?"
From these I take a few working rules (my own):
- Treat each item as a bet. Write what you expect to gain, what it costs, and what would make you stop.
- Give dates as ranges. "Late Q2 to early Q3" is honest. A single date for something far away is a promise you cannot keep. See estimates in Lesson 3.
- Be firm near, loose far. The next six weeks can be specific. Next year should be a direction.
- Say how you will know. Pick one measure that would show the bet worked.
Now / next / later
A common way to show a roadmap without false precision:
| Bucket | What goes in | How sure are you |
|---|---|---|
| Now | Work in progress or about to start, with owners | High |
| Next | Work you plan to start after "now" is finished | Medium. Scope may change |
| Later | Ideas and bets you want to keep in view | Low. May be dropped |
Example for a platform team (invented for this lesson):
| Now | Next | Later |
|---|---|---|
| Add tests and an interface around the shared billing module | Move team A and team B to the new interface | Remove the old billing path |
| Weekly deploys become daily for two services | Daily deploys for the rest | Self-service rollbacks |
| Upgrade the main framework to the supported version | Review the choice of queue |
Notice that every item is something a person can start or stop. "Improve quality" would not fit in a bucket.
A roadmap shown outside the team becomes a promise. Once product or sales see a date, they plan around it. Label the status clearly (committed, planned, idea) and repeat that "later" can change. This is the same trust problem as in Lesson 10.
Saying no (and what to say instead)
A strategy that never refuses anything is not a strategy. A lead has to say no to good ideas. A few ways to do it without losing trust:
- Say no to the idea, not the person. "This is a good idea. It does not fit what we chose for this quarter."
- Show the trade. "We can do this if we drop that. Which do you prefer?" This turns a refusal into a shared choice.
- Link to the strategy. "Our policy this year is to reduce the number of services. A new service would go against it." People accept a rule more easily than a mood.
- Give a later date or a smaller version. "Not this quarter. We can do a one-week spike to check the risk."
- Write it down. A "not doing" list in the strategy page saves repeating the same talk.
The Planning section also lists a post about what to do when "everything is important but nothing is getting done". From the list's bullets: get agreement that there is a problem, make one view of all work, agree criteria for comparing projects, then sequence them and commit to the sequence. I have only the bullets, but the order is sensible: you cannot say no fairly until all the work is on one list.
Build versus buy
charlax's Strategy section links a "Build vs Buy" article (title only for me). Here is a plain way to think about it (my own):
| Question | Leans to buy (or adopt) | Leans to build |
|---|---|---|
| Is this what makes our product special? | No, it is common plumbing (auth, email, payments, search) | Yes, it is the core of our value |
| Does the market already have good options? | Yes, several | No, nothing fits |
| How much does it cost to keep going? | Running it is a distraction | We have the people and the interest |
| How hard is it to leave later? | We can swap it behind our own interface | The vendor would lock us in deeply |
| What if the vendor fails or raises prices? | We have a fallback plan | We depend on one provider with no exit |
Points to remember:
- The real cost of building is maintenance. The first version is the cheap part. Someone must run it, patch it and explain it to new hires for years. This is the same idea as in Lesson 1: adopting is a promise to keep up.
- The real cost of buying is the contract and the exit. Check data export, pricing at ten times your size, support, and what happens if the service shuts down.
- A thin wrapper helps both ways. Put your own small interface in front of a bought service so you can switch later.
- Choose boring technology where you can. The "innovation tokens" idea (from the way charlax's list describes the talk) says you can afford only a few risky choices. Spend them on things that matter to the product.
- Be careful with the cold-shower list. Charlax's list links hwayne/awesome-cold-showers, "for when people get too hyped up about things". I did not read its entries. The idea of keeping a list of reasons for caution is still useful when a new technology is exciting.
For architecture hype in particular, the Architecture section of awesome-cto includes titles such as "Microservices – Please, don't" and "10 Modern Software Over-Engineering Mistakes". I only know them by title. I mention them because they show that a strong opinion exists on both sides, and a lead should know the arguments for the choice they make.
Migrations: the plan matters more than the target
A migration is where strategy meets daily work. The Technical strategy section of charlax's list has the "Tech Migrations, the Spotify Way" article, summarised there as: ruthlessly prioritize; treat migrations like a product (accountability, test first, train, lead with value, know your customers, make it a bit of a game); and automate, and move up the stack. I did not read the article itself.
The same section has "5 Red Flags Signaling Your Rebuild Will Fail" (title only) and Joel Spolsky's rule against rewrites, covered in Lesson 6.
A migration plan I would write (my own):
- Why now? One sentence on the cost of staying. If you cannot write it, do not migrate.
- Scope. What moves and what stays. List the users of the old thing.
- Tests first. Capture current behaviour so you can compare old and new.
- Run both. Keep old and new side by side, and move traffic or users in small steps.
- Automate the boring part. A script (a codemod) that changes many files is safer than hand edits.
- Make it easy for other teams. Docs, a helper, an owner who answers questions.
- Set an end date and delete the old path. A migration that never ends leaves you with two systems, which is worse than one.
- Track progress. A simple count: "31 of 48 services moved".
Half-finished migrations are a common trap. If you start three at once, you may finish none. Limit the number of migrations in flight, in the same way as you limit work in progress.
Changing how people work is also a migration. The Change management section of charlax's list includes "Nemawashi" (quietly laying the foundation for a proposed change, as the list quotes it) and a post on why the status quo is hard to change in engineering teams, with ideas such as "declare process bankruptcy". I have only those summary lines. They agree with Lesson 10: talk to people before the meeting, not in it.
How to write a one-page technical strategy
A one-page format (my own, built on the three-part frame):
# Technical strategy: <area>, <period>## Where we are (diagnosis)Three to five sentences. Facts and numbers. What is hard and why.## What we will do (guiding policy)Two or three rules. Each one should rule something out.## Actions (next 2 quarters)- Action 1 -- owner -- expected effect -- how we will know- Action 2 -- ...- Action 3 -- ...## What we will not do- Item -- reason## Risks and what would change our mind- Risk -- early signal -- what we do## Roadmap (now / next / later)Table, with date ranges, not dates.Tips for writing it:
- Use real facts. Deploy time, incident count, cost per month, time to onboard. Numbers help argue the diagnosis.
- Write it with the team. Show a draft to the senior engineers first. A strategy that surprises people will be ignored.
- Keep it to one page. If it needs ten, the thinking is not finished.
- Review it on a schedule. Every quarter, ask what changed, and edit the page. Keep old versions so you can see how your thinking moved.
- Keep decision records beside it. The strategy sets the direction. Each large choice inside it can have its own record, as in Lesson 5.
Try it
Wish or strategy? Read this: "In 2026 we will improve reliability, adopt Kubernetes, and speed up delivery." Is it a strategy? What is missing? Answer: It is a wish list. There is no diagnosis (what is unreliable, and why), no guiding policy (a rule that rules something out), and the actions are not connected. Rewrite it with a cause ("70% of incidents come from manual deploys"), a rule ("all production changes go through the pipeline"), and steps that fit that rule.
Write a policy. Your diagnosis: "three teams use four different queue systems and nobody can fix them all." Write one guiding policy. Answer: For example: "New work uses the queue we already run most. We will not add another queue technology this year, and we will move the two smallest uses over the next two quarters." It rules things out and it gives a direction.
Turn a date into a range. A stakeholder asks, "When will the new checkout be done?" You have no estimate yet. What do you say? Answer: "I expect between X and Y weeks after the spike. I will give you a tighter range by the end of next week, and I will tell you early if it moves." Say what the range depends on.
Build or buy? You need a way to send email and SMS notifications. Which way do you lean, and what would change your mind? Answer: I lean to buy, because it is common plumbing and not our product's core. I would put a small interface in front so we can switch. I would change my mind if our volume made the bill very large, if privacy rules limited vendors, or if no vendor met a hard requirement.
Interview questions
What is the difference between a strategy and a plan or a wish list? (Must know)
A wish list says what we would like. A plan lists the steps. A strategy starts from an honest diagnosis of what is hard, chooses a guiding rule that rules some options out, and then lists actions that fit together. A simple test I use is: can the document make someone say no? If every idea fits inside it, it is a wish list. I use the three-part frame (diagnosis, guiding policy, coherent actions) that comes from Rumelt's book. I know it as a well-known frame and I have not re-read the book recently.
How would you write a technical strategy for your team? (Must know)
On one page. I would start with the diagnosis using real numbers: deploy time, incident count, onboarding time. Then two or three rules that rule things out, then actions for the next two quarters with owners and a way to know it worked. I add a "what we will not do" list and the risks that would change my mind. I write it with the senior engineers first so nobody is surprised, and I review it every quarter.
How do you plan a roadmap when you cannot predict the future? (Must know)
I treat it as a set of bets. The next weeks are specific, the next quarters are a direction, and later items are ideas. I show dates as ranges and use now, next and later. For each bet I write the expected gain, the cost, and the signal that would make us stop. I tell stakeholders that the far part can change, and I update the roadmap when facts change rather than defending it.
Follow-up: "What if sales wants a firm date?" I give the range and name the biggest risks. I offer a firm date for a smaller scope, and I say what we would drop to keep it. A single date for something uncertain is a promise I cannot keep.
How do you say no to a feature request that is a good idea? (Senior signal)
I say no to the timing, not the idea or the person. I link it to the strategy ("this quarter we chose to reduce services, and this adds one"), show the trade ("we can do it if we drop X"), and offer a smaller version or a later date. I add it to a visible list so it is not lost. The refusal is easier when everyone already knows the priorities and the reasons.
Build or buy? How do you decide? (Must know)
I ask whether it is core to what makes our product special, whether good options exist, what it costs to run for years, and how hard it is to leave. Common plumbing like email, payments or authentication usually leans to buy. Core product logic leans to build. The real cost of building is maintenance, and the real cost of buying is the contract and the exit. I put a thin interface of my own in front of anything bought so I can switch. I write the decision down with the date and the reasons that would make me revisit it.
How do you run a large migration? (Senior signal)
I start with why now, in one sentence, and the scope. I capture current behaviour in tests, run old and new side by side, and move users in small steps. I automate repeated changes with scripts and make it easy for other teams with docs and a named helper. I set an end date and delete the old path, because a migration that never ends leaves two systems. I track a simple count of progress and limit how many migrations run at once.
A senior engineer wants to rewrite the system. How do you respond? (Senior signal)
I ask what is really hurting: slow delivery, bugs, cost, or hiring. I ask for a measurable goal. I point to the usual risks, which are lost bug fixes, a long time with no new value, and two systems to run. Then I look for the smaller version: carve out the worst part behind an interface, or migrate in steps. If a rewrite is still the right answer for one small part, I want a plan to compare old and new, and a date to review. See Lesson 6.
How do you make sure the team follows the strategy? (Senior signal)
By making it small, shared and visible. The team helped write it, so it is not a surprise. It fits on one page and sits next to our roadmap. I refer to it when we decide what to do and what to refuse, and I celebrate work that fits it. I review it each quarter and I change it openly when facts change. A strategy people never see in daily choices is just a document.
How do you balance new technology with the "boring" choice? (Trap)
The trap is saying "always boring" or "always new". I say a team can afford only a few risky choices, so I spend them where they give an advantage to the product, and I use well-understood tools elsewhere. For a new tool I ask who in the team has used it in production, how we hire for it, what the exit is, and what problem it solves that the current tool cannot. A decision record keeps the reasons visible.
How do you know your strategy is working? (Senior signal)
I choose the signal before I start. If the diagnosis said that releases take two weeks, I measure release time. I look at outcomes, not just output: not "we shipped the new interface" but "teams change this module without breaking others". I set a date to look at the numbers and agree what would make us change course. If the signal does not move, I say so and adjust.
Key takeaways
- A strategy is a diagnosis, a guiding policy that rules things out, and actions that fit together. If it cannot make someone say no, it is a wish list.
- The diagnosis is the hardest and most valuable part. Use facts.
- A roadmap is a set of bets. Give date ranges, be firm near and loose far, and use now, next and later.
- Say no to the timing, link it to the strategy, show the trade, and keep a "not doing" list.
- Build or buy: ask whether it is core, what it costs to maintain, and how hard it is to leave. Put your own interface in front of anything bought.
- Plan migrations with tests, side-by-side running, automation, an end date and a progress count. Do not leave them half done.
- One page, written with the team, reviewed every quarter.
- The Rumelt frame here is a well-known frame that I did not re-read. The article summaries come only from the reading lists' one-line descriptions. Adapt all of this to your team.
What's next
Next: Career growth, promotion and the staff-engineer path, Lesson 13. Practise: write the diagnosis paragraph of a one-page technical strategy for your own team, using at least two real numbers, and show it to one senior colleague.
Published by Jainik · Last updated · How these lessons are made
Keep learning
Related lessons
- Design a Parking Lot · Design Patterns & LLD
- TDD, Property-Based Testing, Mutation Testing and a Team Strategy · Testing From Zero
Part of the study guide
Related series