HN DigestHacker Newsletter, digested

Issue #805#Favorites

“Code was never the hard part” is an insult to all programmers

TL;DR

Senko Rašić argues that the AI-era slogan "code was never the hard part" belittles a hard craft. Programmers should learn both to write good code and to understand users, he says. He calls both "code is easy" and "code is art" cope.

The article

  • If coding were easy, Rašić asks, why did programmers earn high salaries and sit leetcode-style interviews long before ZIRP? Why would books like TAOCP and SICP exist? And why is software so buggy?
  • If deciding what to build were the hard part, product managers, market researchers and business analysts would be the best-paid people in software. Instead they are often seen as clueless or as pencil pushers.
  • Most programmers he has met don't want to talk to stakeholders. The ones who claim to "solve customer problems" mostly argue about monads and DRY. He later retracted a split-personality jab at people who care about both craft and customers.
  • His answer is "why not both". Understanding users and writing good code are both critical. Declaring either "code is easy" or "code is art that cannot be automated" is cope.
  • Some things won't change. Complexity keeps growing, software rots, and users can't say what they want. Some skills will lose value, like fighting memory bugs in C, the way punch cards and COBOL did before.
  • Seniors should learn UX, customer interviews and business strategy. Juniors should go deeper into fundamentals like pointers, the memory hierarchy and HTTP. Nobody should hand their judgement to AI or become a "meat proxy".

Why it matters

Read the original for its run of "if coding is easy..." questions. It also has a reading list that includes SICP and The Mom Test. The summary keeps the argument but loses the tone, which provoked much of the thread.

The discussion

A large, heated thread. Most commenters said the essay attacks a straw man. To them the slogan means coding is the easiest part or not the bottleneck, not that it is easy. The rest split by domain. Enterprise and CRUD developers said requirements and organisations are the real difficulty. People doing systems, performance and scientific work insisted the code itself is hard. AI coding came up in nearly every subthread.

The essay attacks a misreading of the slogan

Most commenters read the slogan as saying coding is the least hard of many hard parts, or that it isn't the bottleneck. Read that way, the essay's questions about salaries and Carmack miss the point. Commenters drew the line between typing and programming, or between code and the decisions inside it, and said AI has pulled the two apart. Others answered that a blanket slogan misleads business leaders whatever its defenders meant.

there's much, much more to a software engineer's job than just coding, and that other stuff is very hard to do well, and people pay for that.

— @wesselbindt

AI has decoupled “typing the code” from “making the decisions about what to type” because AI can generate code from very ambiguous prompts.

— @electric_toucan

It depends on the domain

Enterprise, CRUD and frontend developers said their code is mostly simple validation, SQL and mapping, and the hard part is pinning down requirements. People working on HPC, embedded, trading systems, distributed systems or novel math said the code itself is the bottleneck. One described PhD work optimised until memory bandwidth and the CPU pipelines were saturated. Several said the answer changes with career stage and with the layer of the stack you work in.

In the end, whether coding was difficult or easy depends entirely on which layer you're working in.

— @jdw64

In my career code was the hard part for the first few years. Then I got over the hump and everything else about my job was harder.

— @Waterluvian

Code is design, not transcription

A large camp argued that you can't finish requirements and design before coding. Writing the code shows what is wrong with the plan, which is why waterfall failed. Performance, invariants and maintainability all live in the code, and bad loops can undo a sound architecture. The other side said the hard decisions happen upstream in specs and architecture, and that rushing into code produces systems that barely hold together.

The idea that code is mere transcription - which I see a lot in these AI discussions - is completely false. Code is a form of low-level design and is where the rubber hits the road.

— @blub

if you are an actually good developer there are choices that emerge only from the first draft of the code

— @dofm

Organisations, not code, are the bottleneck

Many described projects where the code was trivial and the time went to meetings, compliance, shifting priorities and review queues. One medical-device change touched about 100 lines and took months of process. In another case a build the CIO ordered took two weeks, then years of design meetings followed. Several said AI has made this worse, with more low-quality code to review and product owners generating designs with AI.

The actual code that changed was probably only around 100 LOC but the project took several months. Heck, the code was simple enough that an intern could have done it.

— @HeyLaughingBoy

If a tool was going to come along and automate away a huge part of a programmer’s job, I think most would want that tool to eliminate the meetings, ambiguity, scope creep, and administrative work… not the coding itself.

— @al_borland

Do salaries prove coding is hard?

The essay's salary argument started a long debate. Some said many people simply can't learn to code, pointing to CS101 dropouts and failed screening interviews. Others said pay follows supply and demand and the economics of writing software once and selling it everywhere. In their view programmers are paid because software is cheaper than the labour it replaces, not because the work is hard.

IMO coding requires a particular way of thinking that a large subset of people just aren't good at

— @hn_throwaway_99

But we haven't really been paid because it's difficult, we've been paid because we're cheaper than the alternative.

— @pjmorris

Consensus

Writing code that works and building the right system that stays maintainable are different jobs, and the second one is hard. Most of the argument came from people meaning different things by "coding".

Dissent

A sizable minority sided with Rašić. To them code really was the hard part, and the slogan is cope or an AI-evangelist mantra. The people repeating it, they said, have lost touch with real coding. Separately, several readers called the essay a straw man or rage-bait, and some criticised its split-personality jab.