Book
Software Engineering
What postings now ask for, system design at the level actually assessed, product sense for engineers, code and review, debugging and the coding round, what changes from mid to staff, the loop round by round, and choosing a track.
The largest field in this atlas at 2,609 postings. Written for the general software engineering loop rather than any one specialism.
CHAPTER 1
What a software engineering job description now asks for
AI in 89%. Product sense in 84% — higher than distributed systems at 75%. Mentorship in 43%.
CHAPTER 2
System design, at the level actually asked
The round that decides most senior loops. Not a memorised architecture — a sequence of defensible trade-offs.
CHAPTER 3
Product sense for engineers
Named in 84% of postings, above distributed systems. The largest gap between how engineers prepare and what is asked.
CHAPTER 4
Code, review and the 9%
Testing appears in 9% of postings because it is assumed. Here is what is actually being assessed.
CHAPTER 5
Debugging, and the coding round
What the coding interview actually measures, and the method that transfers to production.
CHAPTER 6
What actually changes from mid to senior to staff
The most common promotion failure is doing the previous level extremely well.
CHAPTER 7
The software engineering loop, round by round
Five rounds, each testing something specific. Knowing which lets you choose the right story.
CHAPTER 8
Backend, frontend, full-stack, mobile — and where the demand is
What the corpus says about each track, and what that means for how you position yourself.
CHAPTER 9
Databases for application engineers
Indexes, query plans, isolation levels and the N+1. The single largest source of production performance problems, and the area application engineers are least taught.
CHAPTER 10
Distributed systems: the failures that only happen in production
Retries that cause the outage, idempotency, the two-generals problem in a payments API, and why 'just add a queue' moves the problem rather than solving it.
CHAPTER 11
API design and caching
Contracts you cannot take back, the four cache invalidation strategies, and the two failure modes that turn a cache into an outage.
CHAPTER 12
Frontend engineering, past the framework
Where the HTML gets made, why state management is the actual hard problem, and the performance the user feels rather than the one your laptop shows.
CHAPTER 13
Mobile engineering, and the constraints that shape it
Why mobile is not frontend with a different renderer: you cannot hot-fix, the platform can reject you, and the device is hostile.
CHAPTER 14
The framework landscape, measured
React under a new owner, a compiler instead of signals, a Vue release everyone thinks shipped and hasn't, and the two-thirds of the web nobody writes blog posts about.
CHAPTER 15
Build tooling after the Rust migration
One bundler for dev and prod, three vendor camps, a runtime that changed hands — and why almost every number in this chapter is published by someone who benefits from it.
CHAPTER 16
Web performance, measured on real users
The three metrics, the numbers the whole web is failing, and the one-line fixes most sites still have not made.
CHAPTER 17
Cross-platform mobile, and how to actually choose
The migration that finished while nobody was looking, the adoption statistic everyone quotes wrongly, and the option that shares logic without sharing UI.
CHAPTER 18
The platform gates: distribution as an engineering constraint
Target-API deadlines, the end of anonymous Android distribution, an AI consent screen you must build, and a fee model that changed last week.
CHAPTER 19
Testing tools: two races that are over
Why one runner won on architecture rather than features, why migration is smaller than teams assume, and the mobile tools that are actually worth the setup.
CHAPTER 20
Choosing a database, and the licence histories behind it
Why Postgres won, where 'just use Postgres' is genuinely wrong, and the two licence timelines that get asked about and misreported.
CHAPTER 21
Which language, and what the interview actually tests in each
What 659 job descriptions actually name, why the usual percentages are wrong, and the trap each language sets in an interview.
CHAPTER 22
Getting a password out of a vault, in code
Vault and CyberArk from the application developer's side — the circular problem underneath, and the code that solves it.
CHAPTER 23
Git and GitHub, actually explained
Eight chapters on this site say 'pull request' as though you already know. This is the one that assumes you do not.
CHAPTER 24
Your editor, and putting a model in it
What the tools are, what actually gets sent when you use them, and how to run a model on your own laptop.
CHAPTER 25
GitHub Copilot, honestly
What the modes actually are, what it costs now that billing has changed, and what the evidence says about whether it helps.
CHAPTER 26
Vibe coding, spec-driven development, and which to use
Where both terms came from, what the evidence actually says about them, what each produces, and how to use them personally and in a company.
CHAPTER 27
Devin, Blitzy, and the autonomy spectrum
The product tiers between an autocomplete and a fleet of agents, who the vendors actually are, and the one thing that changes as you climb.
CHAPTER 28
Factory, Blitzy, and buying at the top of the spectrum
Three differently shaped products, what the vendor numbers do and do not support, and how to evaluate one without running a year-long pilot.
CHAPTER 29
Prompting, for people who have to ship
What actually works, what is cargo cult, where to put instructions so a coding agent reads them, and how prompt shape drives your bill.
CHAPTER 30
APIs, webhooks and MCP
Three ways software talks to software, what each is genuinely for, and a worked Confluence chatbot using two of them.
CHAPTER 31
Building an MCP server in an enterprise
What the job market actually asks for, how MCP design differs from API design, and the decisions that separate a demo server from one you can run.