HN Debrief

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

  • AI
  • Programming
  • Developer Tools
  • Management

The post pushes back on a now-common AI-era line that “code was never the hard part,” arguing that it erases the real skill in programming and understates why software work has long been hard, costly, and prestigious. The author’s case is that if coding were truly trivial, the industry would not have built whole careers, interview systems, textbooks, and identities around it, and software would not be as fragile and bug-prone as it is. The core complaint is less about semantics than status. Reducing programming to mere transcription makes it sound like the only remaining valuable work is product judgment or management.

Treat this as a warning about language, not just AI. If you lead engineering, be precise about whether you mean typing, implementation, architecture, or product discovery, because teams are making hiring, process, and AI adoption decisions off those distinctions.

Discussion mood

Mostly skeptical of the article’s framing but also skeptical of the slogan it attacks. The dominant mood was that people are talking past each other with loose definitions of “code” and “coding,” and that AI hype has made that imprecision worse. Many also sounded wary or tired about quality drops from AI-assisted development and from organizations that already undervalue engineering craft.

Key insights

  1. 01

    No evidence behind the strongest AI claims

    The most aggressive claim in the conversation was that software work is now barely above line-chef labor because AI makes it easy. What changed people’s reading of that claim was not the bravado but the refusal to produce any supporting example when asked. That exchange became a useful proxy for the broader AI coding debate. A lot of confidence is resting on anecdotes that collapse when someone asks for a concrete repo, a correctness bar, or even a bounded domain.

    Push your team to evaluate AI coding tools on specific tasks with explicit quality thresholds. Do not let strategic decisions ride on vibes, especially when the loudest advocates cannot show audited outcomes.

      Attribution:
    • jibal #1
    • a2ff6eeb0 #1 #2 #3
    • ethin #1
  2. 02

    Regulated software shifts effort outside the code

    Medical-device work was a clean example of where implementation can be small while the real load sits in risk analysis, standards compliance, documentation, and review. One commenter described a project that changed about 100 lines of code but still took months because the process around IEC 62304 dominated the schedule. That is a sharper version of the “code is not the hard part” claim than most people mean. It is not that coding is trivial, but that in some domains the surrounding process is the actual product constraint.

    If you operate in healthcare, finance, gambling, aviation, or industrial systems, measure AI or productivity claims against compliance workflow, not just lines produced. That is where schedules and risk live.

      Attribution:
    • HeyLaughingBoy #1
    • woodruffw #1
  3. 03

    Context management is what LLMs are really changing

    One experienced commenter reframed the hard part of programming as human context management. The difficulty was never only syntax. It was holding the problem, the codebase, the constraints, and the future change surface in your head at once. Their claim was that LLMs help most by taking some of that representational burden off humans, whether by rewriting gnarly legacy C into something readable or by absorbing refactors that used to demand careful mental bookkeeping. That is a more precise and useful description than saying coding is easy.

    Look for AI gains where engineers lose time juggling structure and local transformations across a large codebase. Expect weaker returns where the hard part is deciding the right abstraction or understanding the real-world system.

      Attribution:
    • michaelrpeskin #1
    • chasd00 #1
  4. 04

    Maintenance is a design problem, not a moral one

    A sharp side discussion argued that maintenance should not be romanticized as value creation. It is entropy control. The better framing is to design for low-maintenance software from the start by minimizing independently rotting parts, build steps, dependencies, and operational surfaces. Static site generators, header-only libraries, and containers were all cited as examples of patterns people reach for because they reduce babysitting, not because they are ideologically simpler.

    When adopting AI for faster implementation, raise the bar on low-maintenance architecture at the same time. Otherwise you trade short-term speed for a permanently larger surface area to nurse.

      Attribution:
    • TeMPOraL #1
    • truncate #1
  5. 05

    Most arguments fail because 'coding' means different jobs

    A useful clarification was that people are overloading “coding” to cover at least three different things. There is literal typing and syntax recall. There is low-level implementation choice, where abstractions and tradeoffs get baked into code. And there is the broader engineering loop where requirements and design change in response to what implementation teaches you. Once those meanings get mixed together, people appear to disagree more than they really do. The argument is partly semantic, but not merely semantic, because each definition implies a different view of what AI can replace.

    Define the layer under discussion before debating productivity or headcount. Teams should separate rote code generation, implementation design, and end-to-end engineering when setting expectations for AI assistance.

      Attribution:
    • Toutouxc #1
    • electric_toucan #1
    • dofm #1
  6. 06

    Code was not the bottleneck at some companies

    One concise reframing cut through a lot of noise: the right claim is often “code was never the bottleneck,” not “code was never the hard part.” In that view, software organizations were already constrained more by integrations, QA, requirement refinement, and coordination than by raw implementation throughput. That does not diminish coding skill. It just says that speeding up one stage in a multi-bottleneck system does not automatically move the business much.

    Map your delivery pipeline before assuming AI coding speed translates into business velocity. If merges, QA, architecture review, or dependency coordination are slower than implementation, that is where gains will stall.

      Attribution:
    • JackSlateur #1

Against the grain

  1. 01

    For some engineers coding really is easiest

    One commenter made the most grounded version of the pro-slogan case. They do not deny that coding is objectively difficult. They simply find people, ambiguity, and bureaucracy harder than implementation because coding is the part they are personally strongest at and enjoy enough to do on weekends. That matters because some of the outrage comes from treating a statement about role bottlenecks as if it were a statement about universal human difficulty.

    Be careful turning personal comparative advantage into general theory. What feels easy to senior specialists may still be the scarce capability your team cannot replace.

      Attribution:
    • xordon #1
  2. 02

    Most paid software is repetitive application work

    A few commenters pushed back on the thread’s craft-heavy self-image by saying most commercial programming is neither kernel work nor original algorithm design. It is applied assembly on top of abstractions owned by other teams or vendors. In that world, deep implementation skill is still real, but a lot of paid work is repetitive enough that AI and average engineers can already cover much of it. The hard part becomes choosing the right components and fitting them to a contract model.

    If your product is mostly orchestration and standard patterns, expect more pressure on engineering leverage and staffing. Differentiate with domain insight, integration quality, and maintenance discipline rather than assuming raw coding difficulty will protect the role.

      Attribution:
    • galaxyLogic #1
    • jdw64 #1
    • a3w #1
  3. 03

    LLMs are already good enough for many blanks

    A pragmatic minority said the whole debate gets overheated because plenty of coding work really is filling in obvious blanks. On that narrower slice, LLMs are already useful and often competent. Their weakness is architecture, not boilerplate or routine business logic. That view undercuts both extremes. AI is neither replacing all engineers nor confined to toy demos.

    Use AI aggressively on bounded, reviewable implementation tasks. Keep humans responsible for architecture, invariants, and long-term structure until tools prove they can carry those loads reliably.

      Attribution:
    • d--b #1

In plain english

CRUD
Create, read, update, delete, shorthand for standard business software that mostly stores and edits data.
IEC 62304
An international safety standard that defines the software lifecycle process for medical device software.
QA
Quality assurance, the testing and validation work used to check whether software behaves correctly.

Reference links

Books and essays on software work

Talks and media about software roles and labor

Research and technical references

Career and communication

Background concepts and examples

  • AI effect
    Linked to explain the tendency to redefine intelligence after machines learn a task.
  • Programming Motherfucker
    Referenced jokingly in a subthread about requirement understanding and 'hat-wearing'.