← All work

Mapping how engineers actually ship — and where the organization gets in their way

A CTO asked me to find out why shipping felt harder than it should. I ran a service-design study with developers, QA, and SRE, and turned their own mental models of the delivery process into a journey map that gave engineers and leadership a shared plan — and led to a CI/CD pipeline for continuous release.

Role
Lead Designer
Company
Namely
Year
2016

Context

Namely was a fast-growing HR, payroll, and benefits SaaS in New York. By 2016 the engineering organization had outgrown the habits of a startup: multiple feature teams, a monolithic codebase with a few services breaking off, a growing SRE function, and a release process that had accreted one fix at a time.

The chief technology officer had a question that engineering metrics couldn’t answer: why does shipping feel harder than it should, and what would actually help? Velocity charts showed the symptom. Nobody had a picture of the experience of writing, testing, and releasing code from the engineer’s side — what they believed about the process, where they felt capable, where they felt stuck, and what they thought leadership misunderstood.

He asked design to find out. The brief was not “make engineers faster.” It was: understand how engineers think about the delivery process so the organization can support them properly, and so quality and security come out of the process rather than being inspected in at the end.

Problem

Engineering leadership and engineers were describing the same process in different languages. Leadership saw a pipeline — stages, tools, environments. Engineers experienced a sequence of moments: the part that felt like craft, the part that felt like waiting, the part that felt like a black box.

Three things made this hard to see from the top:

  • The pain was distributed. No single stage was broken. Flaky tests, hand-run QA, merge conflicts from large release trains, a deploy nobody could see into — each was tolerable alone and exhausting together.
  • Motivation and quality were being treated as separate problems. The org was discussing “engineer happiness” in one meeting and “test coverage and release risk” in another. The engineers never separated them.
  • The people closest to the problem had never been asked as a group. Developers, QA engineers, and SRE each had a partial map and a theory about the others.

Approach

Treat engineers as the users, and the delivery process as the product. I ran the study the way I would run discovery for a customer-facing product: structured sessions, individual reflection before group discussion, and a synthesis the participants could check against their own experience.

Recruit across the whole delivery chain. Participants came from the feature teams, core services, QA, SRE, and product — the people who hand work to each other. Mixing them was deliberate: the hand-offs were where the mental models diverged.

Engineers in a workshop room writing on large sheets at standing tables, with the facilitation prompts posted on the wall.
Individual reflection first. Each engineer filled in their own sheet before anyone talked, so the loudest mental model didn’t become the only one.

Ask about feeling before asking about process. Each person answered the same eight prompts on paper: your role and who you work closely with; the tools you use and the tools you wish you had; when you feel rewarded in the development process, and when you feel frustrated; what you’re proud of, and where the bottlenecks are. The emotional prompts came before the process prompts on purpose. People will tell you what they believe about a process once they have named how it makes them feel.

Close-up of the workshop wall: the eight facilitation prompts, participants' filled-in sheets with dot votes, and a list of delivery stages being revised by hand.
The prompts, the sheets, and the first argument about what the stages even are — “writing code” was split, merged, and renumbered three times before the room agreed.

Build the map in the room, not afterward. With the sheets on the wall, the group named the stages together — writing code, code review, QA testing, UAT, deploy — and then filled five lanes for each: what they’re doing, how they feel, which tools, which environment, and the bottleneck. Dot voting ranked the bottlenecks so the map reflected the room’s priorities rather than mine.

Hand-drawn journey map on a large sheet: five stages across the top from writing code to deploy, with rows for doing, tools, environment, and bottleneck filled in by the group.Problem and potential-solution sticky notes clustered on a sheet: build and deploy overhead, fragile and manual tests, infrequent release schedule, paired with ideas like a Git fork strategy, breaking the monolith into services, and defining required test coverage.
Left: the map as the group drew it, with the same tools showing up in different capacities at every stage. Right: problems in blue, the engineers’ own proposed solutions in yellow, with the numbers from the dot vote.

What we shipped

The deliverable was the synthesized journey map, presented to the CTO and the engineering leadership team, and then shared back to every participant.

The finished Engineer Journey Map. Top half: four stages — writing code, testing, UAT, deploy — with an emotion curve that starts high at 'coding is fun' and 'collaborative code review', drops through 'tests failing and slow' and 'very manual', recovers at 'passed PR', dips at 'unpredictable scope of change', and ends high at 'shipped'. Below, environment, dev, and QA lanes run under the stages, and an opportunities grid groups findings into infrastructure, automation and tools, testing, and deployment impact.
The map. Emotion on top, environments and roles underneath, and the opportunities grid at the bottom — so a leader could read the feeling, then the mechanism, then what to do.

A few findings mattered more than the rest:

  • The emotional low points were not the hard stages — they were the opaque ones. Engineers were happiest writing code and reviewing each other’s. Morale dropped where they lost sight of what was happening: slow and inconsistent test runs, hand-run QA, and a deploy that, in one engineer’s words, became a black box the moment a pull request was created.
  • Quality problems and motivation problems had the same root. Fragile tests, large release trains, and an unpredictable scope of change made engineers both less confident in the code and less invested in the release. The org didn’t need a morale program and a quality program; it needed the same fixes.
  • Compliance and security were felt as interruptions, not as part of the work. Nobody disagreed with them. They arrived late, at UAT and deploy, with no workflow to meet them earlier, so they landed as friction instead of craft.
  • Engineers already had the solutions. The yellow notes — a Git fork and release strategy, breaking the monolith into services, defining required test coverage, fixing every flaky test, documenting how teams merge code — came from the participants, not from a consultant.

The map grouped those into four opportunity areas with named owners: infrastructure (environments, standards, documentation), automation and tools (CI reliability, Git workflow, deployment automation), testing (coverage, flaky tests, the unit-to-acceptance ratio), and deployment impact (scope communication, client notification, compliance, separating deployment from release).

Outcome

  • Engineering built a CI/CD pipeline for continuous release — the map’s biggest single opportunity, replacing the infrequent, fixed release train and the hand-packaged deploy that engineers had described as a black box
  • Engineers and leadership reached a shared understanding of how to improve delivery efficiency, with one map to prioritize against instead of two vocabularies — the first time motivation, quality, and release risk were discussed as one problem
  • The engineers’ own proposals — a Git workflow strategy, test-coverage standards, flaky-test cleanup, documentation on how teams merge code — carried into the improvement roadmap rather than being reinvented by leadership

What I’d do differently

I’d instrument the map. The study captured what engineers believed and felt, and that was the point, but I had no baseline for the mechanics — lead time, change-failure rate, how often a release was rolled back. Pairing the emotional curve with a few delivery metrics would have let leadership see the cost of each low point, and would have given us a way to re-run the map a year later and show what moved.

Why this matters more in 2026

Ten years on, I would make a broader case for this work to any executive — a CTO, a chief product officer, a COO — not only the one who commissioned it. The experience of the people doing the work is an operating asset. Mapping it the way we would map a customer’s journey is the most direct way I know to improve how an organization runs, and that shows up where executives care about it: in the quality, speed, and security of what reaches clients.

The map earned its keep in 2016 by replacing a management view of the delivery process — stages, tools, throughput — with the engineers’ own view of it. That is the method. The specific findings were about a release train and a deploy pipeline, but the pattern underneath travels: people do their best work where the process is legible to them, and they disengage where it goes dark. Every organization has a stretch of its operation that is a black box to the people inside it, and that stretch is usually where quality quietly leaks out.

In 2026 the black box has moved. Across technology organizations, an agent now drafts much of the code, and the engineer’s job has shifted toward specifying, reviewing, and verifying. The part of the work that used to be the reward is partly delegated; the part that used to be opaque — did this change do what it should, is it secure, what else did it touch — is now most of the job. If I were running this study today, I would expect the curve to have inverted, and I would want leadership to see that inversion before it shows up as attrition, rework, or a security incident.

The same map, ten years later

The 2016 map redrawn in the structure the engineers built it in, and the map I would expect to draw in any technology organization in 2026, when an agent drafts most of the code. Same rows; the reward and the black box trade places.

2016 — as the engineers mapped it

Stage
Writing code
Testing
UAT
Deploy
Doing
  • Write code, unit test, open a pull request
  • Team code review
  • Deploy to the feature team's shared environment
  • New automated tests
  • Confirm scope of testing
  • UAT or pre-prod, troubleshooting with production data
  • Branches merged, regression tests
  • Release candidate = merged branches + regression
  • Production deployment
  • Smoke test
Feeling
Environment
Dev local
Feature team shared env.
UAT / pre-prod
Pre-prod / prod
Dev
Developers, every stage
QA
QA engineers, from testing onward
Opportunities
Infrastructure
  • Not enough training and documentation; engineers don't feel enabled
  • No shared engineering standards and principles
  • QA environments per feature, not per feature team
  • Adding new services and assets into environments (Docker)
  • More resources; config management within the app
Automation + tools
  • CI not effective: unclear failure handling, not fault-tolerant, long runtimes
  • No workflow to meet code compliance automatically
  • Black-box testing is broken — very manual
  • Manual merge from prod to other branches
  • No deployment automation or standards; need a Git workflow strategy
Testing
  • Fragile tests, long runs, inconsistent results
  • Many manual tests, low automated coverage
  • Large releases mean heavy coordination and risk
  • Too many acceptance tests, too few unit tests
Deployment impact
  • Scope of change is unpredictable and large
  • Compliance arrives late; clients need notice in time
  • Devs unclear on the business value of a release; rely on SRE for non-functional impact
  • Little difference between deployment and release
  1. Writing code
    • Write code, unit test, open a pull request
    • Team code review

    Environment Dev local

    Active Dev

  2. Testing
    • Deploy to the feature team's shared environment
    • New automated tests
    • Confirm scope of testing

    Environment Feature team shared env.

    Active Dev · QA

  3. UAT
    • UAT or pre-prod, troubleshooting with production data
    • Branches merged, regression tests
    • Release candidate = merged branches + regression

    Environment UAT / pre-prod

    Active Dev · QA

  4. Deploy
    • Production deployment
    • Smoke test

    Environment Pre-prod / prod

    Active Dev · QA

Feeling

  1. Coding is fun
  2. Collaborative code review
  3. Tests failing and slow; too much manual testing
  4. Very manual
  5. Passed PR
  6. Unpredictable scope of change
  7. Shipped

Opportunities

Infrastructure
Writing code → Testing
  • Not enough training and documentation; engineers don't feel enabled
  • No shared engineering standards and principles
  • QA environments per feature, not per feature team
UAT → Deploy
  • Adding new services and assets into environments (Docker)
  • More resources; config management within the app
Automation + tools
Writing code → Testing
  • CI not effective: unclear failure handling, not fault-tolerant, long runtimes
UAT
  • No workflow to meet code compliance automatically
  • Black-box testing is broken — very manual
Deploy
  • Manual merge from prod to other branches
  • No deployment automation or standards; need a Git workflow strategy
Testing
Testing → UAT
  • Fragile tests, long runs, inconsistent results
  • Many manual tests, low automated coverage
  • Large releases mean heavy coordination and risk
  • Too many acceptance tests, too few unit tests
Deployment impact
UAT → Deploy
  • Scope of change is unpredictable and large
  • Compliance arrives late; clients need notice in time
  • Devs unclear on the business value of a release; rely on SRE for non-functional impact
  • Little difference between deployment and release

2026 — as I would expect to map it now

Stage
Specify & generate
Review & verify
Release gates
Deploy & observe
Doing
  • Frame the problem, constraints, and acceptance criteria
  • An agent drafts the code and tests; the engineer steers
  • Read code you didn't write
  • Run agent-written tests against human-written checks
  • Confirm the real scope of the change
  • Security and compliance checks on generated code
  • Provenance: what the agent did, and why
  • Release candidate
  • Continuous deploy
  • Watch the change in production; roll back fast
Feeling
Environment
Local + agent sandbox
CI / preview env.
Staging
Prod + observability
Engineer
Engineers, every stage — now reviewing more than writing
Agent
Drafting, testing, explaining its changes
Opportunities
Agent infrastructure
  • Sandboxes and context the agent can be trusted in
  • Standards, documentation, and the design system in a form the agent can read
  • Provenance recorded with every change: prompt, model, what was touched
Automation + tools
  • Agent in CI with clear failure handling, not a second black box
  • Compliance met automatically and early, in the spec and the review
  • Deployment automation assumed, not aspired to
Verification
  • Tests the engineer trusts over tests the agent wrote
  • Coverage and review standards defined for generated code
  • Review tooling that explains what changed and why
  • Change sets kept small enough to understand
Accountability & security
  • Security review that no longer assumes a human wrote every line
  • A named engineer who stands behind each change
  • Scope and client impact communicated before, not after
  • Deployment still separated from release
  1. Specify & generate
    • Frame the problem, constraints, and acceptance criteria
    • An agent drafts the code and tests; the engineer steers

    Environment Local + agent sandbox

    Active Engineer · Agent

  2. Review & verify
    • Read code you didn't write
    • Run agent-written tests against human-written checks
    • Confirm the real scope of the change

    Environment CI / preview env.

    Active Engineer · Agent

  3. Release gates
    • Security and compliance checks on generated code
    • Provenance: what the agent did, and why
    • Release candidate

    Environment Staging

    Active Engineer · Agent

  4. Deploy & observe
    • Continuous deploy
    • Watch the change in production; roll back fast

    Environment Prod + observability

    Active Engineer

Feeling

  1. Framing the problem is the craft
  2. Fast first draft
  3. “I didn't write this”
  4. Reviewing is most of the job
  5. Verified and understood
  6. Is it secure? Who stands behind it?
  7. Shipped, and visible

Opportunities

Agent infrastructure
Specify → Verify
  • Sandboxes and context the agent can be trusted in
  • Standards, documentation, and the design system in a form the agent can read
Release → Deploy
  • Provenance recorded with every change: prompt, model, what was touched
Automation + tools
Specify → Verify
  • Agent in CI with clear failure handling, not a second black box
Release
  • Compliance met automatically and early, in the spec and the review
Deploy
  • Deployment automation assumed, not aspired to
Verification
Verify → Release
  • Tests the engineer trusts over tests the agent wrote
  • Coverage and review standards defined for generated code
  • Review tooling that explains what changed and why
  • Change sets kept small enough to understand
Accountability & security
Release → Deploy
  • Security review that no longer assumes a human wrote every line
  • A named engineer who stands behind each change
  • Scope and client impact communicated before, not after
  • Deployment still separated from release
What moved
Dimension20162026
Where the reward isWriting code, collaborative code reviewFraming the problem, judging the result
Where the black box isThe deploy pipelineThe model, and what it changed
Where quality and security are decidedLate: at UAT and deploy, as interruptionsEarly: in the spec and in review, as the work itself
What leadership must make legibleEnvironments, tests, release scopeWhat the agent did, why, and how it was checked

The constant across both: engineers are motivated by what they can see and demoralized by what they can't. The organization's job is to make the opaque part legible — reviewable, testable, and secure.

What an executive gets from this is not a morale survey. It is a shared, human-centered picture of how the organization actually operates, drawn by the people who operate it, that puts motivation, quality, and risk on one page. In 2016 that page led to continuous release. In 2026 it would show where to make AI-assisted work legible — reviewable, testable, secure — so that the people building the product can stand behind it, and the clients on the other end get something better.

What I carry forward

Research the people who build the product with the same seriousness as the people who buy it. I lead a design organization inside a bank now, and I still run the same play: ask how the work feels before asking how it flows, build the map in the room, and let the people doing the work name the fixes. Improving how an organization operates in a human-centered way is the fastest route I know to better outcomes for the people it serves — and the fastest way to get a leadership team to see one problem where it had been managing three.