Business Goals and Alignment: What Took Me So Long to Understand as a Programmer

I have been writing code for almost twenty years, and only in the last few years have I finally formed a picture of why it is being written. Not just "which feature was requested", but what change it is supposed to produce in the business and how we will know that it did.

It is uncomfortable to admit. But it seems to be normal in our industry.

The cascade of goals from the top to the laptop

Why engineers do not see the business goal

In a large company, there is a layered cake of roles between strategy and a ticket: CPO, product manager, product owner, business analyst, project manager, team lead, scrum master. Each layer digests the context and passes down an increasingly concrete formulation.

It works. And it also breaks understanding: the developer receives a ready-made ticket with a design and acceptance criteria. There is no need to ask questions - everything has already been chewed up. Great DX, zero connection to reality.

Three things happen next:

  1. You start treating output as your goal instead of outcome: closed tickets, merged PRs, story points. Everything is measurable, everything is green, and the business impact is zero.
  2. You cannot challenge the task on its merits. You can only say "it is expensive" or "it is a dirty hack". The argument becomes about architecture instead of the hypothesis.
  3. When you join a small company or start your own project, where those layers do not exist, you discover that you never learned to formulate a task. Other people had always done it for you.

It was not management that dragged me towards understanding, but my own product: when there is nobody to pass the "why" to, you have to answer it yourself.

The cascade: eight levels

The most useful thing I have drawn for myself is a ladder. Each lower level exists only to move the level above it. If the connection cannot be explained in one sentence, the level is unnecessary or unfocused.

# Level The question at this level Horizon Typical company roles
1 Vision / Mission Why do we exist at all? 5+ years Founders, CEO, board of directors
2 Strategy Where and by what means will we win? 1-3 years CEO, CPO, functional leaders
3 Objectives What should change in numbers? year / quarter Business and product leaders, domain owners
4 KPI + Target How will we know we have succeeded? same period Goal owner, product/data/finance leads
5 Levers Through what mechanism do we move the KPI? quarter Product, marketing/sales/operations leads, tech lead
6 Initiatives Which project pulls the lever? weeks-months Product owner, business analyst, project manager, tech lead, designer
7 Team outcomes What is the team's contribution? sprint / month Team lead, scrum master, team
8 IC work What exactly am I doing this week? days IC: programmer, designer, analyst and other specialists

A programmer lives at level 8 and sometimes level 7. That is not the problem - the problem is that levels 7-8 start inventing their own goals because the real ones were never shown to them. That is how "rewrite it in a new framework" becomes a quarterly goal.

Here is the difference between concepts that are constantly confused:

Concept What it is Example
Objective desired state reduce returns
KPI what we use to measure progress return rate %
Target success threshold <= 4% by October 1
Metric any measurable quantity clicks on the "guarantee" block
Guardrail what we must not break along the way CSAT does not decline

The key point: one objective has one primary KPI and one or two guardrails. If there are five KPIs, the team optimizes the one that is easiest to move.

Typical goals at each level

Below is a cheat sheet for how goals sound on each floor. It is not meant to help you choose a "correct" goal from a list, but to (a) recognize the language of each level and (b) catch substitutions when a lower-level formulation comes down from above ("build us a mobile app" is an initiative, not a goal).

Levels 1-2: Vision and Strategy

Vision is not measured, and that is fine: its job is to set a frame in which turning down opportunities looks logical rather than cowardly. The test is simple: if any company in the industry could use your vision, it is a slogan, not a vision.

Strategy, on the other hand, is a choice between mutually exclusive options. Typical examples:

Strategy type Sounds like What follows from it downstream
Cost leadership we win on price and cost goals around unit economics, automation, self-serve
Product differentiation we win through quality and trust goals around retention, NPS, data quality
Niche focus we win in one segment and do not target the rest goals around share in the segment, not overall growth
Distribution and speed we win through our channel and speed of entry goals around partnerships, time to market
Platform and ecosystem we win because others build on us goals around integrations, API adoption
Moving upmarket we move from SMB to enterprise goals around average contract value, security, compliance
Changing the monetization model licenses to subscriptions, one-off sales to recurring revenue goals around the share of recurring revenue

A sign that there is no strategy: an annual list that says "grow, improve quality, enter new segments, reduce costs, speed up development" - everything at once, with no alternatives rejected.

Level 3: Objectives

Numbers appear here, but not solutions yet. Typical groups include:

Group Typical goals Usual owner
Growth attract new customers, enter a segment or geography, increase revenue CEO, CRO, product
Retention reduce churn, reactivate dormant users, increase repeat purchases product, retention/CRM
Monetization increase average order value, share of paying users, upsell product, monetization, sales
Unit economics reduce CAC, improve LTV/CAC, make a segment profitable finance, marketing
Activation get a new user to value product, onboarding
Efficiency reduce the cost of serving a customer and manual work operations, support, platform
Trust and risk reduce returns, incidents, fraud and penalties product, support, security
People retain key employees, reduce time to hire HR, leaders

A rule that saves a quarter: a goal should be formulated as a change in the state of the customer or business, not as a list of tasks. "Reduce returns" is a goal. "Implement a new returns system" is already an initiative, and belongs at level 6, not level 3.

Level 4: KPI and Target

One objective means one primary KPI. A guardrail is always needed because any KPI can be moved by breaking a neighbor:

Objective Primary KPI Typical guardrail
Reduce churn monthly churn / NRR do not lose revenue through discounts
Increase activation share reaching the key action within 7 days support load does not increase
Increase average order value AOV / ARPU conversion does not decline
Reduce returns return rate over 30 days CSAT (customer satisfaction) must not fall below the previous quarter's average: 4.6 out of 5
Reduce support cost cost per ticket resolution time does not increase
Speed up delivery lead time to production incident frequency does not increase

A target is a threshold and a date: "<= 4% by October 1". Without a date, a goal is open-ended, and an open-ended goal can neither lose nor win.

Level 5: Levers

A lever answers the question "through what mechanism?" It is useful to remember that every KPI has a finite number of levers, and they can be listed:

KPI Levers
Revenue traffic, conversion, average order value, purchase frequency, price
Churn onboarding, perceived value, support quality, price/packaging, migration to annual plans
CAC channel mix, lead quality, sales funnel conversion, referrals
Returns pre-purchase expectations, accuracy of product data, logistics quality, product quality itself
Support cost self-service, removing the causes of contacts, automation, templates

This is exactly where most "engineering goals" live: speed up builds, remove legacy code, increase test coverage. These are valid levers, but they are not objectives. If such an item appears in a quarterly goal list without an answer to "which KPI above does it move?", the team has assigned itself a goal - exactly the problem described earlier.

Levels 6-8: Initiatives, team outcomes and IC work

Formulations become concrete here, and the main requirement is a link upwards:

Level Good formulation Bad formulation
Initiative an expectations block on the product page and at checkout, pulling the "pre-payment expectations" lever redesign the product page
Team outcome share of returns with the "other" reason below 15% for two weeks finish the epic by the end of the sprint
IC work reason_code schema and dashboard to measure hypothesis H3 closed 12 tickets

The four-question test

Before taking on a task, I now ask:

  1. Which higher level does it move? Name the KPI or initiative.
  2. How will we know in 2-4 weeks that it is moving? (A leading indicator, not revenue a year from now.)
  3. What must we not sacrifice? (The guardrail.)
  4. What are we not doing because we chose this?

If there are no answers, this is not a task from the cascade. It is an item from somebody's wish list. Sometimes that is fine (technical debt, an experiment, learning), but then it should be called that instead of pretending that we are moving the business.

The fourth question is the most uncomfortable and the most honest. Strategy is primarily about rejecting alternatives. If nothing is rejected, there is no strategy either.

A programmer is a designer too

The lecture "Understanding the Task" by Ilya Birman helped me a lot here. It is about designers, but a programmer is the same kind of designer - only the material is a system rather than pixels.

The main thesis: designers formulate a task in the language of design - "make it more convenient", "remove an extra step", "modernize the website". That is not a task, because it has no solution: anything would fit. There is nothing substantive to discuss, so the conversation degenerates into "move the logo" and "add a bit of red".

Programmers do exactly the same thing, only with a different vocabulary: "remove legacy code", "move to microservices", "increase test coverage", "speed up the build". The test is the same - if any solution would fit, the task is formulated incorrectly.

My favorite example from the lecture: Birman visited a client selling electronic magazines and, out of habit, wanted to remove registration - everyone knows registration is a barrier. But registration was a funnel step for them: first they collected an email, then a phone number, then called the person and sold a subscription tailored to what they had actually read. Removing it would have broken the business model. The only thing that saved them was that the client refused.

Birman gives another separate example, about online tests. He formulated the task as: "increase the number of online test participants by removing barriers to participation". The team explained the value of the tests, simplified payment and completion, invented ways to attract people and bring them back to the site. The project launched, but failed: there were almost no visitors. The team was solving the wrong problem. First they needed to ask: "Where will the people come from, and why would they visit this site at all?"

This example shows the difference between an outcome, a lever and a hypothesis:

  • outcome - increase the number of participants;
  • lever - remove barriers;
  • hypothesis - if we remove barriers, the number of participants will increase.

The outcome was clear, but nobody tested the hypothesis about the cause. That is why a task should specify not only the desired outcome, but also a testable hypothesis: what exactly should move it and how we will know.

And the third thing I took from it: "increase profit" is not a business task. If an entrepreneur knew how to set that task for themselves, they would simply solve it. In their head there is a set of hypotheses: open a second restaurant, replace the chef, launch a promotion. Your job is to understand which hypothesis exactly they believe in and why.

Understanding the task also needs to be written down. Not for formality: while writing, you discover gaps, and the client discovers that you understood the wrong thing. The programmer's equivalent is a short design doc or PR description: context, hypothesis, what we measure and what we risk.

Where the cascade breaks

Join Symptom
Strategy <-> Objectives a dozen annual goals, with no alternatives rejected
Objectives <-> KPI goals expressed in words, without a formula or owner
KPI <-> Levers vanity metrics: reach, number of features
Levers <-> Initiatives "we are building projects", but nobody knows which lever they pull
Initiatives <-> Team design and engineering invent their own goals
Team <-> IC an activity report (story points, number of PRs) instead of a contribution

The last row is about my former self. "Closed 12 tickets" is a report that I was busy, not that anything changed. A good version sounds different: "closed hypothesis H3 about the conditions block on the product page; we are checking the share of returns with the not as described reason after 14 days".

Why you cannot optimize one lever

Another trap: even the right KPI, taken alone, breaks its neighbors.

Optimizing only What breaks
Reach junk traffic, conversion falls
Conversion aggressive UX, returns and support load increase
Average order value conversion falls, customers feel pressured
Support speed answer quality falls
Development speed incidents and hidden debt

Birman makes the same point: you can get conversion to 100% if the "buy" button clicks itself. Only then everyone will return the purchase.

This is not fixed by micromanaging individuals, but by connecting primary KPI + guardrails + a shared review at levels 3-4. If the support team's KPI is response time, while the product team's KPI is conversion, and they never meet in the same review, they will fight while each is right within their own layer.

What it looks like as a whole

A continuous example, so that nothing remains abstract:

Strategy: win through trust and a low cost of delivery mistakes,
          not through raw reach
  └─ Objective: reduce returns
      └─ KPI: return_rate = returned / paid over 30 days, -15% per quarter
         Guardrail: CSAT (customer satisfaction) must not fall below
                   the previous quarter's average: 4.6 out of 5
          └─ Lever: customer expectations before payment
              └─ Initiative: conditions block on the product page and at checkout
                  ├─ Design: make "what will I get and when?" clear
                  ├─ Eng: accurate availability and delivery dates,
                  │        structured return reasons, A/B test
                  └─ Support: a shared taxonomy of reasons

And my part as an engineer for one week:

  • Task: reason_code schema + feature flag + dashboard
  • Link upwards: moves the return_rate KPI through the "conditions block" initiative
  • DoD: events are written for at least 95% of returned orders
  • Leading signal: share of the "other" reason below 15% for two weeks
  • Non-goal: we are not changing the returns process itself this quarter

The kill criterion is this: if the leading signals are green for three weeks but return_rate does not move, the hypothesis is wrong, not the execution. We change the initiative instead of pressuring people to "make it prettier".

What I changed for myself

  • I do not start with tasks. I start with levels 2-4: what we believe in and how we measure it.
  • I keep it small: 1-3 goals per quarter, one primary KPI per goal, 1-2 significant threads in progress.
  • I first place every incoming idea on a level: is it strategy, a goal, a lever, an initiative or already a task? Half of the ideas turn out to be backlog levers rather than priorities.
  • In reviews I look at KPIs and leading signals, not the percentage of completed tasks.
  • If I cannot explain in one sentence which higher level my work moves, I go and ask. This is not "getting involved in someone else's business" - it is the only way not to waste a quarter going in the wrong direction.

Layers of roles in large companies were invented to unburden engineers. The side effect is that engineers forget how to ask "why". The question costs less than a quarter of work in the wrong direction.