Preamble

The Profession

What it means to be an engineer

On this page

Engineers solve problems. That's the job. That's the whole job.


Problem Solvers Across Domains

An aircraft maintainer troubleshooting a hydraulic failure is doing the same work as you. Gather information. Form hypotheses. Test. Isolate. Fix. Verify.

A recruiter matching candidates to roles is doing the same work as an architect matching solutions to constraints. Understand requirements. Understand options. Find the fit. Manage tradeoffs.

A cop working a scene is doing the same work as an engineer responding to an incident. Stabilize. Gather facts. Establish timeline. Identify root cause. Document.

The pattern follows you. The domain changes. The tools change. The problem-solving pattern doesn't.

This is why you can move between industries, languages, paradigms. The specific knowledge is learnable. The pattern is transferable.

Strip away the tools, the languages, the frameworks. What's left? You solve problems. That's it. That's the job. Everything else is implementation detail.

The code is not the job. The code is an artifact of the job. The job is solving the problem.


The Responsibility

Software eats the world.[1] That means we're building the world.

The system you ship will be used by people. It will handle their data, their money, their medical records, their communications. It will succeed or fail them.

The architectural decision you make today will constrain the engineers who come after you. They will inherit your tradeoffs. They will live with your shortcuts.

The code you write will be read more than it's written.[2] Someone, maybe you in six months, will need to understand it, modify it, debug it at 2 AM.

Responsibility means:

  • Ship working software. Not almost-working. Working.
  • Be honest about tradeoffs. Document what you're giving up.
  • Leave it better than you found it. The Boy Scout Rule applies.[3]
  • Think about the next person. They're real and they'll curse or thank you.
  • Admit what you don't know. Pretending costs more than asking.

Responsibility also runs upward, toward the mission. Many organizations hand you tickets with the why stripped out, and it is entirely possible to complete every assigned task while failing the larger objective. A perfectly executed task can still miss the mission. The engineers I trust find out what capability the work creates or restores, why it matters now, and what would make the effort a failure even if every box got checked.

Mission cuts the other way too. I have watched "the mission" used to justify endless urgency and skipped safeguards. Orientation clarifies priorities. It does not suspend judgment.


The Craft

Engineering is a craft. Craft requires practice, discipline, and standards.

Craft is not perfectionism. Perfectionism is the enemy of shipping. Craft is about appropriate quality: knowing what level of quality this situation requires and consistently hitting it.

Practice means you don't just do the work; you reflect on it. What went well? What didn't? What will you do differently? Experience without reflection is just time spent.[4]

Discipline means you do the right thing even when no one's watching. You write tests when you could skip them. You refactor when you could ship the hack. You document when you could leave it implicit. Not because someone's checking. Because that's the standard.

Standards means you have a bar and you hold it. You know what good looks like, and you notice when tiredness or pressure starts negotiating with it.

I can tell you what appropriate quality looked like the last time it cost me something. A respected colleague pushed on a framework chapter of this very book: the evidence did not support publishing it as authority. The first instinct available was to defend the prose. Polishing it further would have been easy, and would have improved nothing that mattered. Instead the chapter came down and was rebuilt around an evidence ledger and the stories that actually happened; P-Cubed tells that story. The prose was never the problem. The confidence in the claims was. That is the distinction craft cares about: quality is not polish; it is warranted confidence.

A craftsperson knows:

  • The difference between done and perfect
  • When to invest in polish and when to ship
  • How to make tradeoffs without making excuses
  • That the best code is no code at all[5]

There is one more piece of the craft, and I learned it late. The work is not finished when you can do it. The best people I have worked with learn systems well enough to make other people better inside them. The capability is not supposed to stop with you.


What Professionals Actually Do

A job is what you do for money. A profession is what you are.

I have watched engineers hide behind "I was just following orders," "that's how we've always done it," "the PM said it was fine." The ones I trust don't. The engineer owns the technical decision. Not by being difficult; by being honest about what is possible, what is risky, and what is known.

Nobody hands you a contract when you start calling yourself an engineer. But the people who wear the title well share the same habits, and none of them were born with the list:

  1. They own their work. They understand the problem before they solve it. When it breaks, they fix it. When it's wrong, they say so first. When it's unclear, they ask.

  2. They keep learning. The field moves. They move with it.

  3. They help the next ones. The veterans helped them.[6] The chain continues.

  4. They ship. Ideas are cheap. Execution is everything. Done is better than perfect.

  5. They are honest. About timelines, about risks, about what they know. Surprises are worse than bad news.

That is not a deal anyone offers you. It is what the work looks like when someone takes it seriously. Everything else in this manual builds on it.


The job is solving problems. The craft is solving them well. The profession is doing both, consistently, over a career.


  1. Marc Andreessen, "Why Software Is Eating the World," The Wall Street Journal, August 20, 2011. ↩︎

  2. A principle emphasized throughout Robert C. Martin's Clean Code (2008) and Guido van Rossum's design philosophy for Python. ↩︎

  3. Robert C. Martin applied the Boy Scouts' "Leave the campground cleaner than you found it" to software in Clean Code (2008). ↩︎

  4. Echoes John Dewey's observation: "We do not learn from experience... we learn from reflecting on experience." See also Donald Schön's The Reflective Practitioner (1983). ↩︎

  5. Jeff Atwood, "The Best Code is No Code At All," Coding Horror, May 30, 2007. ↩︎

  6. Proverbs 27:17, "As iron sharpens iron, so one person sharpens another." ↩︎