How Software Development ChangedLesson 63 of 87

Contents

How Software Development Changed

Lesson 63 of 87. Sign in to keep your place.

Module 7 · Skill, hiring and the missing rung

The layer that does not get cheaper

10 min read

The selection rule

People ask which skills survive. The useful version of the question is narrower: where is the feedback loop broken?

When generated code is wrong in a way that fails immediately and loudly, you do not need to know much. You run it, it throws, you ask again. The cost of not knowing is one iteration.

When generated code is wrong in a way that is silent, delayed, or only visible under load, you need to know, because nothing in the loop will tell you. That is the selection rule. The durable skills are the ones whose absence produces silence.

Data modelling and invariants

A schema is a set of promises about what can never be true. NOT NULL promises absence is impossible. A foreign key promises no orphan. A unique constraint promises no duplicate. Get these right and a whole category of bug becomes unrepresentable; get them wrong and the data rots quietly for two years and then someone runs a report.

A generator will produce a plausible schema. It cannot know that in your business a customer can have two active subscriptions during a migration window, or that the legacy import has rows with a blank email that you are contractually obliged to keep. These facts are not in any training corpus. They are in a conversation somebody had in 2021.

The failure is silent and arrives years later, which is exactly the shape the rule selects for.

Concurrency and time

Races do not throw. They produce a wrong number, occasionally, under load, on the days that matter.

What to actually hold:

  • At-least-once means duplicates. Every queue and every retry delivers twice sometimes. If the handler is not idempotent, you have a double charge waiting for a bad afternoon.
  • Retries amplify. A service that retries three times turns a partial outage into a full one. Exponential backoff with jitter exists because synchronised retries are a thundering herd.
  • Clocks lie. They go backwards over NTP corrections, they differ between machines, and now() in two places is two different times.
  • A timeout is a decision, not a safety net. No timeout means a hung thread forever; a timeout shorter than the work means you retry work that is still running.

Failure and operations

The generated version of a network call almost always assumes success and handles the exception. What it does not do is decide what the system should do when a dependency is up but slow, which is the failure mode that actually takes services down. Circuit breakers, bulkheads, backpressure, load shedding: these are choices about behaviour under partial failure, and they follow from what your business can tolerate.

Reading instruments

The strongest single investment is the ability to read the outputs the machine cannot fake.

SQL
EXPLAIN (ANALYZE, BUFFERS) SELECT ... ;

That tells you whether the index was used, how far the estimate was from reality, and where the time went. A sequential scan on ten rows in development and on forty million in production is the same query and a different outage.

Same family: a flame graph from perf or py-spy, a tcpdump capture, a heap dump, EXPLAIN on a Mongo aggregation, the GC log. Each one is a direct measurement rather than an opinion. All of these tools are free and open source and run on any laptop.

Numbers to hold in your head

Jeff Dean’s latency table, in the shape worth memorising: an L1 cache reference is about a nanosecond. Main memory is about a hundred. A random read from a good SSD is on the order of tens of microseconds. A round trip inside a data centre is around half a millisecond. London to California and back is about 150 milliseconds and cannot be improved, because it is the speed of light in glass.

Why this matters: these ratios let you reject a proposed design in ten seconds without measuring. Anything that says “we will do a network call per row” is dead on arrival for a million rows, and you know that from arithmetic.

What this is not

This is not a claim that syntax no longer matters. You cannot review what you cannot read, and you cannot read a language you do not know. It is a claim about where marginal study time pays now.

And be honest about the shape of the advice: this is a reasoned selection, not a measured one. Nobody has ranked skills by future value with data, and anyone presenting such a ranking is selling a course. The rule (invest where the failure is silent) is defensible. The specific list is a starting point, and your system will have its own silences.

Every lesson here is open. Your progress is recorded once you pass the AI at Work exam.

Check your understanding

Why does the “invest where failure is silent” rule put data modelling above framework syntax?

Pick the one you would defend. Your answer stays private.

Next lesson · 9 minPractising when the answer is one keystroke away

Stuck on something?Ask Larissa, your AI tutor

How to cite: Addaly (2026) ‘The layer that does not get cheaper’, in How Software Development Changed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/how-software-changed/what-stays-worth-learning (Accessed: 13 October 2026).