Top
Best
New

Posted by senko 1 day ago

“Code was never the hard part” is an insult to all programmers(blog.senko.net)
896 points | 552 comments
prinny_ 1 day ago|
I believe there are some programming jobs in which the code is absolutely the easier part. Not all of us work in signal processing, integrated systems or have to push upstream to Linux kernel because the company we work for really needs a memory allocation optimization for its data centers.

Navigating customer requirements and building something that satisfies both market's needs and company strategy can be an incredibly difficult and frustrating problem to solve. Especially if you need to also oversee the execution of the strategy. So not only you have to predict what they want or know the domain deeply enough to understand what they say they want is not what they really want, you also have to come up with a plan for executing your solution in a corporate environment.

There is a reason that books like "the staff engineer's path" cover topics such as local maximums, communication, establishing support for executing a plan or creating alignment on big efforts. In large corporate environments with multiple international customers, code is most of the time not the hardest problem.

rockemsockem 1 day ago||
IDK, a sufficiently complex consumer or enterprise app winds up having big performance problems if people don't know what they're doing w.r.t. the code they write and how they connect systems together with that code. Those performance problems start out not mattering much, first it impacts one seldom-used part of the site, then another, but that chips away at users and can eventually tank the product. That doesn't even get into writing code such that it can be well-understood and modified easily later. It also says nothing about reducing/fixing bugs.

If you have a site whose performance steadily gets worse and the rate of new features steadily declines and the rate of bugs steadily goes up, then your site/app will probably not have a great future.

All of those things depend on solid code. If staff engineers who are too busy talking and building consensus such that they aren't connected with the actual programming and situation on the ground, then all the talking and consensus-building won't matter.

buran77 1 day ago|||
> a sufficiently complex consumer or enterprise app winds up having big performance problems if people don't know what they're doing w.r.t. the code they write and how they connect systems together with that code.

On those complex systems in particular the problems start long before any code is written.

A software engineer can create and understand the specs, requirements, design the system, architectural decisions, define everything about that software and data, model everything, failure, performance, operational topics, documents everything, etc. before a single line of code is written, and of course they can write good code. Then there are the coders who patch together chunks of code from Stack Overflow or whatever boilerplate they have in the company's repository. I know every coder likes to call themselves a "software engineer" but there's a world of difference between the two types.

For the first group code was never the hardest part. For the second group there was never any other part.

kcexn 1 day ago|||
I think most people who write code are the latter and not the former. The industry has diluted the term "engineer" so much that they maybe don't even realise that traditional engineering projects are about more than just implementation work.
burgerzzz 19 hours ago|||
Each unit of work in any given feature of a Web app has been implemented 500 times yesterday alone, and nearly each time exactly the same way. I mean that’s what programming basically is right? I’m surprised these patterns that are repeated so often by developers could have been/still be automated away even without AI/LLMs.
rockemsockem 15 hours ago||
One thing I wonder about is how applicable your statement about web apps is to something like lamps or lighting generally. How many electrical engineers have re-designed a circuit that turns on/off a light? Are EEs who wind up doing mundane engineering like this still engineers?
kcexn 3 hours ago|||
You don't need to be an "Electrical Engineer" to do simple design work like this.

Professional Engineers are qualified to take on more liability than just creating a design. So you don't need an Engineer to design a product, but (depending on jurisdiction) you will need an engineer to certify that your product won't hurt or kill people.

If you do a lot of design work, then you may want to hire a Professional Engineer in-house so that your company has more confidence that they will produce compliant designs with fewer iterations.

Engineers are often the best people to work with if you need to do things that are done infrequently since theoretically, they're trained in the prerequisite first principles so they can make judgments that are rooted in rigorous analysis in addition to their practical experience.

vel0city 14 hours ago|||
"electrical engineers" aren't usually the ones making a lamp though. If you're paying EE wages to add a light switch to an Edison socket you're massively overpaying.
rockemsockem 14 hours ago||
Lots of things have lights on them though. I'm thinking every status light on every piece of hardware.

Edit: also, I'm not exactly filled with knowledge on new lamp design/construction, but I have seen startups/kickstarters that make new lamps that seem like redesigns from the ground up.

kcexn 3 hours ago||
Most hardware tinkerers are not EE's. But will rely on EE's to certify that their electronics are safe.
pjmlp 1 day ago|||
In the countries where Engineering is a professional title and not something people decide to call themselves, we still know the difference.
rockemsockem 15 hours ago|||
This is such a tired take.

Aerospace engineers who build rockets do not have some certification body allowing them to be called engineers. Same with most electrical engineers working on almost everything.

If you think a government deciding who is an engineer is a *good* thing then maybe you should ask yourself why the United States which doesn't require this for the two non-software engineering disciplines has the best engineers in the world.

mattkrause 7 hours ago|||
Annoyingly, the US government still sometimes does.

If you want to take the patent agent exam, your CS degree has to come from an ABET-accredited program, though many of the very good ones aren't (Stanford, CMU).

Likewise, federal jobs also sometimes seem to want accreditation but not always.

deterministic 6 hours ago|||
> has the best engineers in the world

Really? What evidence do you have for that? Are you saying that companies like Airbus, Mercedes-Benz, Ferrari, ASML, Leonardo, Rolls-Royce, Dassault Aviation, Toyota, Bosch, Komatsu, Siemens, ABB, Mitsubishi Heavy Industries, Alstom, Vestas, Samsung, Sony, Hyundai Heavy Industries, Mitsubishi Shipbuilding etc. don't have world class engineers?

kcexn 1 day ago|||
In which countries are Software Engineers not allowed to call themselves engineers unless they are professionally qualified engineers?
pjmlp 1 day ago|||
In many, I am at least aware of Portugal, Germany and Canada.

https://www.lexpoint.pt/Default.aspx?PageId=128&ContentId=60...

https://www.vdi.de/news/detail/wer-darf-sich-ingenieur-oder-...

https://engineerscanada.ca/become-an-engineer/use-of-profess...

You can call yourself engineer if you feel like it, however in case it comes to some court case due to liabilities and such, there might be some issues coming up with having Eng in that contract signature.

Many here would probably say that they have never did the exam, and nonetheless use the title, which is as mentioned, not an issue as long as you don't land in court and the validation of title doesn't come up.

Also in most European countries, being an Engineer even if not professionally qualified, automatically means that the person in question took a university degree in engineering, on an university whose engineering degree was certified as such by the government organisation responsible for all engineering professions.

kcexn 3 hours ago|||
If you can call yourself an Engineer if you feel like it, then it's not a protected title.

"Doctor", is for instance a protected title. You can not advertise yourself or your services as a doctor unless you're a qualified and practicing medical professional. I believe some kinds of legal practices are the same.

yallpendantools 1 day ago||||
[MIGHT HAVE INACCURATE IMPLICATIONS BUT PRESERVED FOR POSTERITY:]

In Germany I don't think that counts. "Software Engineering" as a title isn't regulated (as kcexn is asking for). The German term "Softwareentwickler" more literally translates to "Software Developer" (as opposed to "Ingenieur") but I don't see companies having problems translating that in job posts and even contracts to "Software Engineer". I've never seen "Softwareingenieur" used tbf.

Getting into Germany as a Software Engineer (for app development) is also as relatively frictionless as it gets in comparison to more-traditional engineering fields.

Verdi is the German trade union so they have to make these kinds of distinctions about which professions they can represent. Don't quote me on this one but I think Verdi represents very little of the modern "app development" software engineers. I guess those who work for more traditional German industries like auto-manufacturing can fall under their umbrella.

---

[LESS INACCURATE EDIT AND MY THOUGHTS IN LESS WORDS:]

In Germany "Ingenieur" (Engineer) is a loaded term with legal implications so "Software Engineer" is "Softwareentiwickler" (Software Developer) instead. But really this is an HR sleight-of-hand trick. At the end of the day, getting into professional Softwareentwicklung is the same in Germany as in elsewhere that calls it "Software Engineering" (and IMO is what kcexn was asking about anyway).

pjmlp 1 day ago||
Well, I have been well served by I.G. Metal, by working in industries they also covered.

Also I have yet to meet anyone doing agency work, that started as Azubi, Quereinsteiger, BWL,... and would sign any document or call themselves Engineers, like it is so very common in US out of a plain bootcamp.

kcexn 3 hours ago||
I don't think Software Engineers in the US would sign any documents that expose them to legal liability as a professional engineer either.

It's still not clear to me from this discussion whether the term "Software Engineer" is legally protected in Germany (or any other European country) or if it's just a cultural convention.

The distinction is basically, if a software developer started a consultancy developing custom software solutions and called the company XY Software Engineering, would they be penalized for false advertising if they didn't have professional engineering qualifications?

rockemsockem 15 hours ago||||
European countries, historically known for their dominance in the field of software.
deterministic 6 hours ago||
Your mobile phone runs on a CPU architecture designed in Europe (ARM), manufactured by a machine that only a European company can make (ASML), using a number of protocols invented in Europe (Bluetooth for example), using protocols invented in Europe to browse the internet (HTML/HTTP), based on a very long history of computer science ideas and programming languages invented in Europe or by Europeans.

Give credit where credit is do.

Having said that, I do agree that US companies tend to be better at commercializing new ideas than European ones.

k12sosse 15 hours ago|||
We laugh at people who call themselves swe, like you're a code monkey not anything near an engineer little man.
amanaplanacanal 22 hours ago||||
Before I retired (in the US) the organization I worked for was heavily civil engineering oriented, and they were pretty insistent that the computer folks not call themselves engineers. The state licensing board was pretty insistent too.
dpb001 20 hours ago|||
I was also in a consulting CE firm working in software, but had moved from an engineering position and had an engineering undergrad degree. I was strongly encouraged to get my PE so the company could advertise it, even though the PE credentials had nothing to do with software development.
rockemsockem 15 hours ago|||
I think civil engineering is the main field in the US that relies on certifications/tests for FE/PE, there's probably more I'm unaware of though.

As I pointed out above though, aerospace engineers (working on rockets/space applications anyway, IDK about planes) and electrical engineers don't need those tests. Requiring it for CEs seems like a historical artifact more than anything.

tremon 19 hours ago||||
The English term "software engineer" is not a protected title anywhere, FAFAIK. However, the local language equivalent of "engineer" is protected pretty much everywhere in Europe because it was awarded solely at technical colleges and universities. The title is (mostly) equivalent to a Master of Science degree, except that technical colleges could also award it (the English equivalent being Master without field designation).
a9i 1 day ago|||
In Italy: https://www.cni.it/en/engineers-in-italy
pjmlp 1 day ago||
I see there that you also created a workaround for the Bologna changes like we did, the 5 versus 3 years.
rockemsockem 15 hours ago||||
I agree that all those pieces are important, for sure. But it can all be undercut by a few for-loops that don't consider string re-allocations. That covers the "don't understand good code in the slightest, make big mistakes" side of things, but the other side is being able to think about the algorithm that is being run in your system (sometimes across multiple layers of code) and writing code that eeks out the highest performance from the system you're on in the programming language you're using. Also, to be clear, "the algorithm" here doesn't have to be super complicated or theoretical it can be as straightforward as assembling some data structure in response to a user's query across a few different sources. That process requires being able to write good code.
blub 1 day ago|||
No they can’t do everything before writing a line of code. The design and requirements feed into the code and vice-versa over and over through the lifecycle of a piece of software.

Some architecture work and design will be done beforehand, but many details will fall into place as the code is being written, thrown away, adapted, etc.

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.

The best requirements, designs, marketing, etc are worth jack if one fucks up the code. The code is the actual product.

buran77 1 day ago|||
> but many details

Which part of my list was just "a detail" to be dealt with at some point in the lifecycle (but only if you're not too busy shipping features) for you? You're laying bricks before knowing if the wall's supposed to be concrete.

> Code is a form of low-level design and is where the rubber hits the road.

Sure but in keeping with your analogy tires are fungible across most cars and it takes minutes to change one if you picked the wrong compound. It takes years to properly design a tire, not to speak of everything that sits on top of those tires. By the time you actually "meet the road" you already defined to a tee what you want to achieve from every perspective and everything you do is to meet that goal, even if you have to make tweaks. You don't find out if it's a scooter or a roadster tire while working on it.

> The best requirements, designs, marketing, etc are worth jack if one fucks up the code.

Why are you mixing some fundamental things which are essential and can't be changed along the way without massive effort and risk, if at all, with things like marketing?

Do you want to aimlessly write code while chasing a target that moves randomly and conflicting because your plan was to define things "at some point"? You're really making my point with your insistence that it's all about code and every other fundamental thing is "a detail" that just comes along the way.

rockemsockem 15 hours ago|||
Your comment brings ripgrep to mind. Grep is about as ubiquitous a software tool as you can get with a very clear contract on input-output and it has absolutely stood the test of time. Then ripgrep comes along, it has the same contract as grep (with I think a few inconsistencies that were intentionally tweaked for modern use-cases...and also I'm sure a few edge-cases from its design), but is significantly faster. The fundamental contract with the user stayed the same, I'm sure some of the design changed, but fundamentally the only difference is the underlying code. And that makes such a big difference that I *always* use ripgrep over grep now as do many others.
fragmede 5 hours ago||
That's a really good example. The specific detail is that node_modules isn't something I want results from while I'm grepping around.
Tallain 1 day ago||||
In my experience, the parent's view and your view are an example of the divide between the Silicon Valley / startup mindset -- it doesn't need to last, it just needs to get us a paycheck so we can go on to the next paycheck -- and actual software engineering where people build resilient systems meant for humans to use for a long time.

There's a conflation too that to approach things with this level of thought and care requires waterfall design (it doesn't), so people shrug it off or resist because if you want to think carefully and design thoughtfully you can't also Move Fast and Break Things.

Ironically, we all complain about enshittification.

blub 19 hours ago||
I don’t think anybody except those working with e.g. DO-178B or ISO26262 does BDUF.

Iterative processes are state of the art. The RUP iterative lifecycle illustrates this nicely, with a big chunk of design in inception (first project phase), but also a non-trivial amount of implementation. The design & implementation flow in parallel in the next phases.

blub 1 day ago|||
No part of your list was just a detail, but all parts of the list consist of essential properties and details. As I said, many of those details will fall into place when one starts implementing the core architecture.

It also matters a lot what scale one is operating at. Bigger scale will require more effort up front, PoCs, several big iterations, etc.

To give a smaller scale example, I defined a general simple protocol for two local components, picked the IPC and defined the handshake and teardown sequence. The developer defined the message contents. Reviewed together, then it was implemented. Testing showed that component B, which was OSS and had a fixed rate was sending too fast so the developer patched it to do debouncing.

Coding is nothing like changing tires. To abuse an incorrect analogy even more, the architect would prescribe the properties of the tire or even the behaviour of the vehicle and the developer would design and construct the tires/tracks/whatever either from existing parts or from scratch. Possibly going back and forth on the actual means of locomotion.

To wrap it up. Requirements, architecture and design can be changed. When implementing features I always do architecture review with the team and adapt it based on their feedback. We have rejected or negotiated requirements based on PoC or just developer evaluation.

Sometimes that doesn’t work, sure. If it’s a critical feature or there are hard architectural restrictions one puts in the dev work to figure it out and maybe this leads to a non-ideal implementation. Fundamental mistakes at requirements or architecture level do have higher impact, but iterating and having a good arch <-> dev feedback loop is one of the best methods I know to tackle that.

To give another example, I investigated the potential implementations for a feature and prepared a list of technical approaches sorted by specific architectural attributes. The dev team wrote the code to validate them and option 1 turned out to be impossible because of platform constraints. I adjusted the architecture to use option 2.

MomsAVoxell 1 day ago|||
>As I said, many of those details will fall into place when one starts implementing the core architecture.

This is only true for newbies.

tomveber 1 day ago|||
[flagged]
geon 1 day ago|||
How does not everyone understand this? It's why waterfall development never worked.
MomsAVoxell 1 day ago||
Waterfall works as well as the person implementing it, which is to say it is a human process and vulnerable to typical human flaws.

I have used waterfall for decades to ship millions of dollars worth of software. If you don't want it to work it won't work.

geon 2 hours ago||
You actually planned everything in advance, and didn't have to go back and correct mistakes?

Because if you ever go back a step, it is no longer the waterfall model, but an iterative process.

Aeolun 1 day ago||||
> a sufficiently complex consumer or enterprise app winds up having big performance problems if people don't know what they're doing

Yes, and absolutely nobody will care if it does the thing it was meant to do. Performance is near always an afterthought because there is no single team that gets judged on performance.

yallpendantools 1 day ago||
I think we often don't realize how much performance is part of the user requirements (i.e., "the thing it was meant to do") because users don't specify that as a requirement. And when they do we get all engineer-y about it and start asking about TTFBs, throughput rates, TPS's and nobody gets anything sensible out of the conversation. But users don't mention it because they don't know how slow complex systems could be or how complex a mere CMS could be that for them this is one of those requirements that don't even need to be said.

Anecdata time...

There was once a scrappy start-up who, like all scrappy start-ups, was taking on the heavyweight incumbent gorilla of the industry. They started poaching the small customers from the gorilla, just enough for the gorilla to notice. These customers often cited how "fast and lightweight" the start-up's platform was compared to the gorilla.

The claim wasn't really supported by Grafana. The numbers weren't bad; in fact they were very average. For some metrics, the gorilla was actually still the gold standard the scrappy start-up targeted. The engineers suspected "fast and lightweight" had more to do with the user experience (they had smoothly-animated loading screens) than actual server performance. Still, it's not a complaint so they took that as a win.

After a couple of years of steady growth poaching from the gorilla, they started getting bug reports of slow performance. The customers have been seeing more and more of the smooth loading screen animations and less of the data they actually need to work on. And this time, the claims were supported by Grafana! There was no way to massage the statistics to even claim the reports are outliers or to pass the blame on to the unreliable ISPs.

The problem, it turns out, was that they were sending emails as notifications for a bunch of user actions and at that point there were about 2-3 such user actions per minute. While they could async some of those, there were a bunch whose succeeding states assumed that the notifications have been sent.

After three weeks of profiling and going through the whole performance optimization playbook, the fix boiled down to a one-liner in SQLAlchemy that offloaded loading notification mailing lists to Postgres cursors rather than loading whole lists into memory in one go.

Moral of the story: no one is asking you to build a racecar but that doesn't mean performance is not table stakes. A good senior engineer knows just where the balance is to still deliver business value. That is the salary you are paying for.

snowe2010 17 hours ago||
I feel like this story just supports the claim that coding isn’t the hard part. Collecting those requirements is harder.
chasd00 1 day ago||||
I would counter with it's easier to fix bugs, improve performance, pay down technical debt than it is to fix consensus, stakeholder buy-in, and strategic direction. So even though good code, design, and architecture isn't easy it's still the easy part in a relative sense.
rockemsockem 15 hours ago|||
I did not mean to imply that consensus, stakeholder buy-in, and strategic direction are easy, or even that they are easier than writing good code. My point is just that the code part is not easy either. I think the article's point that "if good code was easy, we'd have amazing software everywhere instead of crappy software everywhere" is a very good one. The average code that gets written is horrendous, interviewing people who are presently employed and struggle to write a for-loop makes this really apparent.
samdixon 1 day ago||||
> stakeholder buy-in

Fixing bugs, improving performance, paying down technical debt all require this as well, which makes them significantly more difficult to actually implement.

manphone 1 day ago|||
That’s because fundamentally you need those strategic items to have space to do those particular detail items. If you have the best strategy and no execution, you can probably hire for that. If you have no strategy and decent execution, you are driving the Titanic into the iceberg.
try_the_bass 1 day ago||||
> IDK, a sufficiently complex consumer or enterprise app winds up having big performance problems if people don't know what they're doing w.r.t. the code they write and how they connect systems together with that code.

I don't think you're really disagreeing with the original sentiment? However, I think you're taking a much broader view of "code" than is intended by the original statement.

In your framing, you're kind of confounding code with architecture. Code is really just the act of making a computer do a thing you want it to do, for some definition of "thing you want it to do". Architecture is more about understanding which things you want the computer to do, and in which ways.

There are a million ways to code a task. That's the "code" the original statement is talking about. Understanding which of those ways is an appropriate way is a separate skill, whether you call it architecture, or something else.

rockemsockem 15 hours ago||
I think architecture is overemphasized a lot.

I am quite plainly talking about writing code that runs efficiently to support a wide-variety of tasks. To do that, one needs to write code that runs fast on your targeted platforms and is extensible/easy-to-modify (not necessarily the same thing to be clear).

We may have different definitions of "architecture" though, I tend to think of "architecture" at the system level, i.e. "this service handles these responsibilities, this other one handles these, they communicate with this interface/contract, etc". I can see how you could take the term "architecture" down to a lower level where you talk about classes/files passing information between each other too. I think to do that sort of lower-level architecture well though you basically need to write code in your design, even if it's just pseudocode.

TeMPOraL 1 day ago||||
Yup. And performance problems don't just bleed the user base, they also slow down development and testing internally, both directly and by nudging developers away from attempting some tests or use cases in the first place.
zormino 1 day ago||||
I can understand when people say the code was the way part, but under the assumption that the system design and architecture are clean, code is high quality or the project is greenfield, and there is proper testing and validation. Then, sure, the lines of code aren't the hardest but that's only because that hardest work was front loaded and given a different name. Even then it's still not always easy.
geon 1 day ago||
Getting to a state where those assumptions are true is HARD. And takes a lot of careful programming.

Yes. Once it is true, the code is easy to write. But only because a lot of effort went into making it easy. And keeping it easy is also hard. Without focused effort to keep the code clean and easy to modify, it starts to rot.

tayo42 1 day ago||||
You've really seen a web software product die because of performance issues?
Plasmoid 1 day ago|||
Healthcare.gov was a national scandal due to poor performance related to bad requirements gathering.
nunez 1 day ago||||
The $32M Hertz scandal

The $480M bug that killed a trading company in 12 secs

Challenger

Probably a bunch of stories from healthcare

MomsAVoxell 1 day ago||
No. Software failure was not a factor in the Space Shuttle Challenger disaster.
prmoustache 1 day ago||||
Web software I don't know but there are many "modern software" that were meant to replace COBOL code running on AS400 that ended up never making it to production because they were running so badly and projects ended up being money pits.
crazysim 1 day ago||||
Wave waves at you from the grave.
shric 1 day ago||
Did Wave have performance issues? I thought it was amazing, they just killed it because it didn’t have enough adoption
saulpw 1 day ago||||
Friendster
sscaryterry 1 day ago|||
Yes, it is hardly ever the web-side of it though.
rockemsockem 15 hours ago||
By "web-side" you mean the client side I assume?
sscaryterry 14 hours ago||
Not at all. It is usually the database :)
rockemsockem 14 hours ago||
Yeah, that's what I figured you meant. It absolutely is usually the database, guess you're also saying it's not the server-side either lol
znpy 1 day ago|||
Knowing what to do “wrt the code they write” is directly consequential to knowing what do at all, you proved the original point correct.
ivanjermakov 1 day ago|||
I'm yet to work on an enterprise project where programming is beyond simple validation, simple SQL, simple sheduling, simple mapping, simple error handling. Might be more about web backend than the whole field, but the challenge always comes from formulating requirements in a rigid form with all edge cases considered.

This might be the reason why many personal projects are so technical and impressive - it's the itch that's not scratched at work.

bayindirh 1 day ago|||
This is one of my theories why AI is well-suited for these kinds of projects. It's mostly CRUD, written in well-known patterns. This not to discount the programmer or the job in general, it's what the task calls for.

Scientific programming, hardware interfacing, embedded, demoscene, game engines, HFT or HPC calls for much different breed of code, and generally way harder to formulate in code w.r.t. these enterprise projects. Trying to make hardware go faster with more efficient code is much harder than optimizing an SQL query and safeguarding it, and these are well understood problems, in general.

munksbeer 1 hour ago|||
> Scientific programming, hardware interfacing, embedded, demoscene, game engines, HFT or HPC calls for much different breed of code, and generally way harder to formulate in code w.r.t. these enterprise projects.

I don't mean to undersell this type of programming. I don't work in the true HFT space, which now means something very different from 20 years ago. These days it is FPGA, or maybe more, not sure.

But for standard low latency (think microsecond hotpath, rather than nanos) the techniques are well known and easily codified with example code and AGENTS.md rules.

You can achieve very good results this way, and then further refine with human intervention and measuring. Measuring and iterating is often the hard part.

I'd really love someone to describe in detail the type of programming they are doing that can't be codified such that another human can learn it, follow the rules and achieve the needed results. I just don't see any magic in our craft, it is all just following rules.

ivanjermakov 1 day ago|||
Yep, LLMs excel here because most of the time analogous solution is already in the codebase. Most of my initial promtps include "look how it's done in X and do the same".
zero_shift 1 day ago||||
It depends what you mean by enterprise project?

If you just mean a large company, I would say they do exist - though it may take some looking for them.

You can find them in companies that have to deal with "real" things (hardware, factories, production lines), or where there is an interest in taking advantage of emerging technology (advertising, e-commerce)

I would call my current project relatively systems-level too, as it's a network proxy. Not quite kernel level but definitely not trivial "if this then that" style coding.

My perspective is that application programming - CRUD, forms, IO orchestration - was always vulnerable, even before AI. Think about APIs for payments, APIs for subscriptions. E-commerce in a box type solutions.

That's why I always pushed to do more systems level work, on more exotic or weird technologies. It's not because I think I'm a better programmer, than someone slinging Spring code or React forms. But because in this industry it's better to be a goat than a cow.

bramadityaw 1 day ago||
> ...it's better to be a goat than a cow.

That's the first time I've heard that idiom. What does it mean?

zero_shift 1 day ago|||
I made it up on the hoof (pun intended)

Cows are the most common animal on the farm, and overall they produce the most value. But they are very replaceable. When times are bad, you slaughter them.

Cows are like your rank-and-file application developers: you scale them up and down with the times.

Goats are more niche. You don't have many of them on your farm. But they solve important problems (eating weeds), and they look after themselves, so you seldom slaughter goats.

Goats are like specialists in your company. People who know how the "real" things operate. You don't need many of them. But they are involved in enough critical things, niches that can't be scaled down, that you seldom lay them off

jhbadger 1 hour ago|||
>so you seldom slaughter goats.

Maybe in Western culture, but a lot of cultures (Middle Eastern and Indian for example) really like goat meat and even raise them specifically for that.

bramadityaw 23 hours ago|||
permission to steal this idiom :) hope it catches on.
thereforegrin 1 day ago|||
I don't know it either, but I read it as: - 'goat' referring to both the 'greatest of all time' as in specialized and at the same time to it being a not-so-common animal, - while 'cow' is simply just a common animal, so in this context it represents a plain worker.

I'm not aware of any 'cow' acronym, that would directly relate to work/proficiency as the 'goat' does but it would further enhance the meaning behind the quoted phrase.

In fact it's exactly what is missing, for the phrase to be instantly understandable by making it symmetric in both direct and acronymic reading.

So is there a 'cow' acronym, that is an antonym to 'goat'? I'm not aware of one.

zabzonk 1 day ago||||
Trading systems? Most complex things I've worked on.
dsego 1 day ago||||
[dead]
jibal 1 day ago|||
[dead]
gosolozero 1 day ago|||
Yes, I resonate with this and the article above.

I think 80% of a SWE's job is to communicate with the XFN partners (either gathering requirements, pushing back, managing up, collaborations, etc) and then plan out the actual coding (gather code pointers, look at past code, plan architecture, talk to the team). The last 10% is the coding. And then the other 10% is the maintenance of that and past code (which honestly should be a lot more but incentives are not aligned well).

It's hard for people to understand jobs they don't do. They imagine we spend 8 hours a day clacking at the keyboard.

menaerus 1 hour ago|||
I have been writing code professionally for almost 20 years, hard or at least non trivial problems what many would consider, and my job description does not resemble the tiniest of what you're describing. Coding _is_ difficult and dedicating only 10% of your time for that task will leave you very quickly without the job. Most of the time not only that you spend close to 100% of the time doing the coding part but even more than 100%. Some problems and domains are just difficult and not trivial to the part you can automate them. With the age of AI this may be changing though.
pjio 1 day ago||||
> They imagine we spend 8 hours a day clacking at the keyboard.

I do, but the order of the keys makes a difference somewhat.

lelanthran 1 day ago||||
> I think 80% of a SWE's job is to communicate with the XFN partners (either gathering requirements, pushing back, managing up, collaborations, etc) and then plan out the actual coding (gather code pointers, look at past code, plan architecture, talk to the team). The last 10% is the coding. And then the other 10% is the maintenance of that and past code (which honestly should be a lot more but incentives are not aligned well).

That last 10% is the value-add. If you aren't doing that, the other 90% can be done by pretty much anyone, and they won't be "SWE", they'd be minimum-paid white-collar workers.

A lot of people miss this in their haste to rationalise their evaporating value - "I'm still useful, because AI is only doing that 10%, I am still needed for the other 90%", not realising that if they aren't needed for that last 10%, they are interchangeable with the office receptionist :-/

snowe2010 16 hours ago||
This logic makes no sense. If 90% of a software engineers job is not coding, then the valuable part of their job isn’t coding. It’s the other things. Else junior devs or interns would be doing all that work.

So no, they aren’t interchangeable with the office receptionist, else the office receptionist would already be doing that job.

avilay 1 day ago||||
The percentages are different for different types of SWEs, not all SWEs spend 80% of their time on XFN comms. I agree with your larger point that a non-trivial amount of a SWE's time is spent on XFN comms and team alignment. My argument is that if an individual contributor is not spending a majority of their time on problem solving and implementation (including maintenance of legacy code), they are not maximizing their potential. If they are spending 80% of their time on non-coding activity they are better suited for an Manager role (Engineering or Product). At the end of the day, coding is not hard only if you are a good coder to begin with. If you are a good EM/PM then people issues will not be hard (which coders often complain about).
mupuff1234 1 day ago|||
I feel like almost every standout product in the world was a result of someone with good instincts and not the results of XFN communication.

Unfortunately it is still the job...

jghn 1 day ago|||
Mostly this. The phrase "code was the never the hard part" touches on a larger culture war. I was I was moving up in the ranksit was common to see people, both myself and then watching others, say things like "I just want to code".

Coding was the job. But there were diminishing returns in that getting better at coding wasn't as impactful as getting better at all the social skills, big picture strategy, and general scheming.

Maybe "code was never the hard part" should be replaced with "coding wasn't the most important part". But I think we all know what it means. Those higher level skills are the things that LLMs can't do, at least for now. Coding? It can do that, at least sort of.

DanHulton 1 day ago||
It's exactly this - "coding was never the hard part" translates more directly to "coding was never was slowing me down". It's nailing down requirements, it's cross-functional team meetings, it's planning the testing and rollout, it's integrating with all the other parts of the product and systems, etc etc etc. Optimizing coding was just aiming at the fastest part of the job already.
aleph_minus_one 1 day ago|||
> Navigating customer requirements and building something that satisfies both market's needs and company strategy can be an incredibly difficult and frustrating problem to solve. Especially if you need to also oversee the execution of the strategy. So not only you have to predict what they want or know the domain deeply enough to understand what they say they want is not what they really want, you also have to come up with a plan for executing your solution in a corporate environment.

The really hard part of this does in my opinion not so much lie in the aspects that you describe, but rather in doing this without leaving scorched earth with most/all of the stakeholders involved.

In other words:

Doing what you described is in my opinion something that can be learned, and in my opinion a central reason why many programmers consider this to be difficult is that they never learned it, and/or (related to this) were never given the opportunity to be responsible for all of this, so they lack experience.

On the other hand, navigating the whole office politics, and running the political gauntlet that is collateral to it is hell on earth. The only way to survive this is to give a big "fuck you" to everyone, which I more politely described with "leaving scorched earth with most/all the stakeholders involved" above.

haswell 1 day ago|||
About halfway through my career, I spent about 10 years working in the enterprise SaaS/PaaS space. 6 as a developer, ~4 as a product manager. Both sides of that coin are difficult. Trying to create a product strategy that meets the needs of hundreds of large companies is a special kind of hell. And on the dev side, even "simple" things are not simple when they have to be implemented at scale, software updates cannot break existing customer code/configurations, and customers must have a hundreds knobs and dials and scripted escape hatches to implement their own business logic.

Even when code was not the hardest problem, it was still a hard problem.

yyx 1 day ago||
Do you have any advice for someone who wants to take this path? I'm betting on determinism, simulations, tests and CEL.
nevdka 1 day ago|||
A big problem with online discourse about programming if that so many people are in bubbles that they think are normal and think that anything outside of their experience is niche and rare.

‘Enterprise’ software includes SaaS, internal LoB software, integration work, and a bunch of other things I can’t name. The LoB and integration work is usually boring from a technical point of view, so articles don’t get written as much, and they likely wouldn’t do as well on HN, compared to something highly technical about scaling something to serve millions of users. There’s probably many more hours of work, and more programmers, doing LoB and integration, but people in a SaaS bubble don’t see what happens elsewhere.

nbardy 1 day ago|||
yea, a lot of my prior work was in the "code is the easy part" I was a frontend engineer for years. And something like 90% of my job the code was not the hard part.

I loved writing GPU shaders or optimizing visualization performance, but most of the time it was wiring up netcode to UI elements that exist.

Ironically as I've moved into focusing on more GPU and kernel programming AI is now lapping me there anyway, however the impact of knowing what sort of algorithsm are state of the art in papers, what is causing memory bandwidth issues etc... does a lot to drive the machine.

figassis 1 day ago|||
Yesterday I was working on some video editing tools to create a demo from screen recordings. I started with Gifox, recorded a 5 min video and then started cutting it in their UI (small things like remove these 5 seconds from here, etc). Everytime I performed an action, the spinner would start and take 10-30 seconds to complete. This was on a 36gb M3 mbp with almost nothing else running. It got so unusable and it slowed down my machine so much that I had to force kill the app, and that did nto work, I had to restart the machine.

Then I tried in iMovie. I tried importing the raw gifs. It would hang everytime and I had to restart it. So I had to export .mov directly from Gifox.

It worked great on iMovie, until I needed to speed up or slow down some clips. I noticed on the first operation, it would spin for about 3s, on the second, 5s, on the third, 10s, and by the 6th operation it would either spin for 1min or not stop at all. The machine started getting flow, iMovie was using 22.4gb of my 36gb machine. Had to also force quit iMovie several times. A task that should have taken 30-60min tops, took 5h.

Memory was definitely leaking somewhere, and in different application with completely different engineering budgets. The product was there, people were paying for it, the software was not delivering, which means it was costing customers time and money, meaning people were overpaying for it. This is not a thing product can solve. Programming is absolutelly the hardest part sometimes.

You could say throw more AI at it, and MSFT tried, how's that going for them with all the weird product decisions and bugs and apologies?

rudnevr 1 day ago|||
IDK, I worked like in ~20 enterprises and I didn't really see what you describe.

"Navigating customer requirements" is mostly everyone speculating on customer needs and pushing the part they own, and whoever happens to get closer to the higher management's ear, wins. Then market decides if that's is a good thing or bad thing. If it's good, normally the person who pushed this doesn't even receive credit for it, because either the command chain too long or the stakeholder's memory too short and postfactum everyone pretends they authored good decisions and opposed bad ones.

It might be tiresome and exhausting, like all intense politics, but it's not hard in any technical sense. Most mediocre people can do it and do it.

For something to be hard and complex you need rules and professionals on all levels who understand and follow the rules and driven by meritocracy alone. That's simply never the case.

hintymad 1 day ago|||
> Navigating customer requirements and building something that satisfies both market's needs and company strategy can be an incredibly difficult and frustrating problem to solve

True. And there is another angle: ownership. The author also said “having clarity on the priorities” boils down to “just tell me what to do and don't switch it up every two days”. This is like saying that a programming language designer does not own the spec of the language itself but just wants to write hte compiler. I find such altitude counterproductive. Case in point, many companies hire PMs for their internal infra org. I mean, shouldn't the engineers in the infra org know exactly what they design to build? If you don't want to own what to build, you end up letting someone else tell you what to do, except that the person is neither an expert nor even your user.

wbl 1 day ago||
The infra org has to also understand their internal customer!
hintymad 1 day ago||
And that should be the engineers' job instead of outsourcing it to PMs who do not even use any of the infra services -- I'm not insulting the PMs, of course, but to state a fact. Infra is used to serve the internal engineering teams, and the PMs don't code, so they don't have a need to use the infra.
senderista 1 day ago||
But do the infra team engineers use the infra they're building?
hintymad 1 day ago||
They do, and they help their users all the time
mempko 1 day ago|||
I've been programming for 30 years and "Code was never the hard part" does not offend me. It's something i've been saying for a long time. You can teach anyone the mechanics of coding well in like 6 months.

Programming is the hard part! I want to make this distinction because to me programming is about solving problems and coding is a way to express the solution.

Designing algorithms, architectures, etc can be done without a programming language. Coding is putting it down into some language.

Izkata 1 day ago|||
Sometime in the past 10-20 years there was a prestige shift where people started using the term "developer" for what you're describing as "programmer", relegating "programmer" to what you're describing as "coder", and "coder" to "hobbyist programmer/developer" (while weirdly "coding" remained colloquially the thing programmers do).

Advice to job seekers I remember in the 2010s was to not call yourself a programmer because that was where the bad "code monkey" jobs were, but it hadn't yet been much of a thing when I first started looking at the end of the 2000s.

MomsAVoxell 1 day ago|||
The same thing happened in the 80's when people stopped using "Computerization" and labeled it "Information Technology", which is a misnomer, in my opinion, because computerization doesn't just involve information technology, it also involves human factors - which were stripped from the field in the labelling, because of the collective assumption that people who computerized were incapable of humanization - i.e. "nerds are not people-people, which is why they can only deal with computers."

But it's a fallacy. Computers mean nothing without humans. Software is 100% a social activity. Break this rule and your software will suck and eventually fail.

heisenbit 1 day ago||||
These waves where someone found a new way to focus on the valuable part and leave the grunt work to lowly others comes again and again. As always the truth remains that each step in the process is relatively trivial and is is the overall complexity e2e and scale and handling edge cases that are where value is created. But that won‘t stop groups trying to differentiate themselves by looking down on others even when it is clearly failing. As long as there is a benefit to the group driving it.
SoftTalker 1 day ago|||
I have called myself a programmer for most of my career. I have no concern about prestige.
Izkata 1 day ago||
I think some people are talking past each other because programmer/programming means different things to different people.
cassianoleal 1 day ago||||
I like Dave Farley's classification of Coders, Developers and Software Engineers.

https://www.youtube.com/watch?v=fcjBfSiyI0k

michaelrpeskin 1 day ago||||
I've also been doing this professionally for about 30 years, plus another 10 as a hobby/learning before then, so I think I have much of the same experience as you, and I do agree. Although, I think with the advent of LLMs, programming is no longer the hard part. The hard part of programming is the convergence of context management for humans while also presenting it to a computer to do something. Much of data structures and algorithms "best practices" are ways to efficiently get your work done as well as keeping it so that a human has context.

For example, one guy I used to work with wrote this really awesome algorithm about 25 years ago, and I'm responsible for maintaining it since he long retired. I can't go into details, but this is the core algorithm in moving billions of dollars between institutions overnight. It's about 10 screenfuls of c that had been converted from the original FORTRAN 77 with dozens of gotos and weird branching statements and about 20 parallel arrays that store indices for pointer chasing. It's almost impossible for a human to follow (I've actually fed it to an LLM and said rewrite this with for loops and no gotos so I can understand it - and it worked!) but it's blindingly fast. The actual problem it solves can be stated in about three sentences, but programming it was hard because of the context management. The reason that my company keeps getting royalties on this is that it's so hard that they'd rather pay us than write it themselves. But I bet an LLM could write it from scratch now.

So maybe programming is no longer the hard part, or at least context management is no longer the hard part and that humans should move up the chain to help manage the context for LLMs so they can get more done efficiently.

Switching topics a little...much of what I think makes coding the hard part was the tension between big-design-up-front and you're-not-going-to-need-it philosophies. Early in my career I worked in health care and that was BDUF and the coding was easy because program managers spent years defining every screen that would be shown to the users, what queries were needed to fill the screen, all of that. We just took the spec and coded it. Coding was easy. But the failure of BDUF was that it still didn't really match what the customer wanted.

Then enter agile and YAGNI, in that limit, coding is easy, just write what the user story says. But then you have to refactor from what was left behind on yesterday's user story. So smart engineers would cheat a little with YAGNI and say, yes we will put an abstraction in because the next user story. I would say that "good engineers" or "good coders" found that balance in abstraction to move fast but make abstractions not overkill. And I think that's what all the wailing and gnashing of teeth is right now: the good engineers aren't needed anymore.

I can tell an LLM to code something, and as I add complexity it's happy to refactor and manage the context so we don't need to worry about "clean code" or "quality code". As long as what the LLM writes meets the spec, then we're happy.

Ah, sorry long rant and ramble. But I just think the "hard part" has been managing context, and the context we're managing context is just changing. Those good at managing context will be good at coding with LLMs, and those that weren't won't be.

chasd00 1 day ago||
This is a very good comment, one of the best i've read here.

> I would say that "good engineers" or "good coders" found that balance in abstraction to move fast but make abstractions not overkill.

i think this is spot on and could be where the concept of "llm's have no taste" comes from. There is art (and science) in determining the right level of abstraction that satisfies the user story in a performant way while leaving the door open for extension.

> As long as what the LLM writes meets the spec, then we're happy.

going back to just meeting the spec vs the art of perfect abstraction is a bitter pill to swallow and I imagine removes a lot of the joy some found in software development.

michaelrpeskin 1 day ago|||
I said this in another comment a few weeks back - but, at least for me the "joy" of software development was describing what I wanted and getting it. That used to mean fighting with code and trying to be clever and clean or following the right design pattern. But now, I get "joy" from using English to describe my problem and getting the right answer. When the LLM one-shots it, I get the feedback that I'm describing things correctly and clearly. I'm still getting the same joy just in a different form now. I'm old enough and have been doing this long enough that "giving up writing code" is not sad for me. I'm still expressing my ideas, just differently now.
apothegm 1 day ago|||
Not just the right level of abstraction but the right choice of abstraction.
retinaros 1 day ago||||
the article means code as a whole not just the moment you input some if else in a screen but the whole act from thinking about it to make it live in prod.
gardenhedge 1 day ago||||
> You can teach anyone the mechanics of coding well in like 6 months.

You can absolutely not do this

ErroneousBosh 1 day ago|||
I don't even sit in front of a computer to write programs, I do that in the car.

I type them in when I'm in front of the computer.

All the actual work though? That gets done in a space where there's no phone, no people walking up and talking to me, no distracting social media, no screens, just quiet-ish and a couple of hours to think.

socratic_weeb 21 hours ago|||
This take is foolish and will always be foolish. Coding was mever easy in ANY domain (not just low level stuff) and the fact that we built syntax highlighting, high-level languages, auto-conplete, static analysis, debuggers, etc., in order to make it easier is the proof.
halsafar 21 hours ago||
Take a step into the business side of software. Code is definitely not the hard part. You wouldn't say wood is hard part (heh) of wood working. It is planning and architecting. When to use the right tools. Just because a ruler has hash marks that doesn't mean measuring is hard it means the ruler doesn't work without it.
menaerus 1 hour ago||
What type of software have you been writing before entering the business side of software and for how long?
agumonkey 1 day ago|||
Yes, it reeks of people who spend a lot of time following naming scheme convention and copy pasting a lot of shallow things.
didgetmaster 1 day ago|||
Writing some code that actually works for the problem at hand, can be fairly easy.

Writing code that does this while being clean and efficient is a lot harder. How many slow, buggy programs have been written because the assigned programmer did not yet have the expertise needed to do it right?

brabel 1 day ago||
> How many slow, buggy programs have been written because the assigned programmer did not yet have the expertise needed to do it right?

Basically, all of it. By the time a programmer has enough experience to design and implement software properly they are “promoted” to some paper pushing management position.

mikojan 1 day ago|||
> There is a reason that books like "the staff engineer's path" cover topics such as local maximums, communication, [...]

Why would they cover programming? That's what all the books on programming are for.

Also I see no need for signal processing to make programming a hard problem. Writing correct code is hard. Writing code that makes incorrect code easy to spot and hard to write is hard.

You can be great at local maximums, communication, establishing support for executing a plan or creating alignment on big efforts, and proceeded to still create a ball of mud. Bug ridden, hard to read, hard to debug.

rcxdude 1 day ago||
A buggy big ball of mud that does mostly the right thing is still going to beat a high-quality, carefully architected solution that reliably does the wrong thing, though.

And for a huge amount of code, it's not very hard to make it good enough, because the requirements, once understood, are pretty straightforward and perfect correctness often matters much less than you would think.

avilay 1 day ago||
"carefully architected solution" is not what they are saying. A "buggy big ball of mud" will not generally "do the right thing", if it did, it would not be a "buggy big ball of mud". Straightforward requirements do not imply straightforward solutions. In the early 2000s Facebook wanted a quick way to search for friends updates, a straightforward requirement. Turned out they had to build a full graph DB inside MySQL, not straightforward code at all.
ls-a 1 day ago|||
The fact the everyone is fighting just to define what AI is doing to coding is a sign that most developers are just terrible at their skill.
qurren 1 day ago|||
> In large corporate environments with multiple international customers, code is most of the time not the hardest problem.

This is true, and this is the thing that makes me want to not be part of this dumb system anymore. If leadership on the same company can't align, that shouldn't be my problem, and I hope they get replaced by AIs that can.

Humans suck.

ToucanLoucan 1 day ago||
Would add this is not exclusive to large corporations either. My smaller employer is also struggling hard because leadership simply cannot prioritize. Everything is either not being worked on or is the highest priority which in practice just means nothing is the priority, and no matter what myself and my team work on always seems to be the wrong thing.

It's absolutely devastating to team morale. We never feel like we're contributing.

qurren 1 day ago||
I'm already unfazed at that part and don't care.

What devastated me this week is that I was slogging so hard for the past several months trying to deliver on what I was asked to deliver on, only took 1 week of PTO out of the 4 weeks I have saved up, spent nights and weekends trying to honestly solve multiple high priority yet HARD problems that 500 other engineers in the company couldn't solve, I'm making good progress on a couple of them single-handedly, yet my manager, who just came back from 3 weeks of vacation just gave me a performance review saying I am not meeting the "bar" for my level and need to do more cross-functional work and amplify my "impact". He's going on vacation again next week to watch the eclipse.

Fuck this. I want to travel, I want to enjoy life. I used to chase eclipses, too. I tried my best, all I ever get is "what you are doing is not enough". What the hell IS enough then? I already don't take vacation and don't exercise, I've put on 7kg of weight since I joined, yet you told me THAT is "not enough". Should I stop sleeping and eating?

Change priorities all you want, honestly I really don't care, and I've dealt with customers too, it happens. Just don't tell me I didn't get anything done. Recognize the fact that I tried hard every time you changed your priority, and I only had 2 months out of 8 to work on your latest priority, and calibrate your expectations to 2 months of work, not 8.

apothegm 23 hours ago||
I hope you’re already looking for a different job. Because it’s never worthwhile in the long run to sacrifice your own mental or physical health for someone else’s career prospects or profit.
qurren 19 hours ago||
Yeah, I am casually looking.

This job is already way better than my previous job at Amazon, where people were more actively sabotaging each other. At my current company there is actual teamwork, at least :/ and my entire set of peers all gave me hugely positive reviews, just not my manager, who is going by some written "bar".

I honestly can't seem to find any company that has sane health standards and work-life balance anymore.

apothegm 18 hours ago||
Yikes! I wish you luck. I promise better workplaces do exist.
PunchyHamster 1 day ago|||
I think it could be summed up with "it being easy part of the problem doesn't mean it is easy, just *easier than the rest"
gxs 1 day ago|||
What a grounded take on this and wished more people saw it this way

Just yet another case of people seeing only the extremes and not the entire spectrum

You nailed it: in a corporate setting, code is definitely not the hardest part and it’s why companies can sometimes make do with a skeleton crew of offshore engineers who make $20-$30 bucks an hour

The way harder part is building the right thing and just designing the thing soundly to begin with

This type of software is where AI absolutely kills it - problems with tons of forum posts, writing code for systems with a ton of various kinds of quality developer documentation

On the other hand, if you’re doing something novel or sending a $10bn machine to mars, you probably don’t want to yolo it with AI

jibal 1 day ago||
"easy" and "easier" have very different meanings.

I've read through these comments and, as is typical of HN, virtually none of them refute or even address the points made by TFA.

bob1029 1 day ago||
> If coding is easy, how come programmers were in high demand, and have demanded large salaries for years (even before ZIRP)?

Because programmers have generally been forced to wear additional, invisible hats that are essential to making the code happen in the first place.

Writing code is not hard. Writing correct code is. Knowing what is correct in a setting with paying customers generally involves interacting with those customers. Either directly or worse. The gigantic salaries paid to the most prolific employees is not due to their ability to write code. It is due to their ability to interrogate the shit out of the customer until they finally reveal the true requirements.

hakunin 1 day ago||
> Writing code is not hard. Writing correct code is. Knowing what is correct in a setting with paying customers generally involves interacting with those customers.

That's like saying "building a car is not hard, building a real car that you can use and that passes regulation is".

IOW, writing code is hard in every reasonable context.

pdpi 1 day ago|||
Speaking/writing English is easy. Writing literature at the level of Shakespeare is hard. Writing educational content that makes hard concepts accessible like Grant Sanderson is hard.

Likewise, coding is easy. It's just writing, and any child can learn it. Coding is not programming, and the hard part of the job lives in that distinction.

hn_throwaway_99 1 day ago|||
> Likewise, coding is easy. It's just writing, and any child can learn it.

Any teacher of a low level CS course knows this is completely untrue. In my CS 101 course our problems were relatively straightforward and short, and lots of people struggled mightily to the point of dropping the course. IMO coding requires a particular way of thinking that a large subset of people just aren't good at, and as someone whose done tons of screening interviews at college recruiting fairs where I give relatively easy problems and ask someone to code a solution, I will tell you the idea that anyone can do it is just false.

hakunin 1 day ago||||
Why does it have to be Shakespeare? There are millions of good writers that got there by working hard. Seems pointless to go into either extreme, when just being good at anything is generally hard.
pdpi 1 day ago||
It doesn't have to be Shakespeare, but hopefully everybody agrees that writing at Shakespeare's level is indeed hard. I agree that writing good (but not great) or even just ok literature is still hard, but that invites a bunch of no-true-scotsman arguments that I just can't be bothered dealing with (like "writing Fifty Shades of Grey isn't actually hard" or something similar).
hakunin 1 day ago||
The comment I responded to suggested that we don't really have to be "insulted" because code is actually not hard, good code is hard. But the statement "code was never the hard part" doesn't make that distinction, it's a blanket statement, that any normal person would associate with all software. I argue there is no reason to try justifying such a misleading statement.
hn_throwaway_99 1 day ago||
Completely agree. I feel like lots of comments in this thread are getting side tracked by useless nitpicking, e.g. "Writing code is not hard. Writing correct code is." - oy vey.

In it's original context, it's very clear what "Code was never the hard part" was referring to, that of all the steps of product development (ideation, requirements, design, implementation (coding), deployment, operations, maint, etc.), that code was not the hard part. That's the meaning we should be discussing, and I agree with the author, I believe coding very much was the hard part. Since Jeff Dean and Sanjay Ghemawat were recently in the news, I recall some stories about them fixing issues with the search index in the early days of Google where there were random bit flips that were causing the index to be corrupted, and they fixed it and coded a durable solution. This is very much just a code-specific problem that very, very few other people would have been able to solve.

juliendorra 13 hours ago||||
Writing is not easy, and most children need years of training to write at sufficiently good levels. Writing is the technology we invest the most for training on as society
nunez 1 day ago||||
English is a hard language to learn, especially as an adult. So many weird rules that everyone takes for granted.
elcritch 1 day ago|||
No basic English is one of the simplest languages to learn as an adult. Perhaps it’s difficult to master.

English has simple conjugations. That makes it much easier to learn to speak intelligibly even for adults. Old English dropped many of the complicated word endings because it was used by Anglo-Saxons with Vikings and Normans.

chii 1 day ago||
grammar and rules of language has almost nothing to do with the difficulty of writing good text (ala, written prose fit for purpose).

Understanding of grammar and rules of a language is like having good bricks, but building a stylish house is more than just using good bricks. It's a higher level cognitive exercise. Schools attempt to teach this, but i think they fail quite miserably (look at how essays had to be written by students, and how poorly most are written).

tsoukase 1 day ago|||
Every language has it's specific difficulties as foreign, the French pronunciation, the Spanish speed, the Chinese ... well leave it. The English has the "easiest difficulty" among all: phrasal verbs, which are of moderate importance and can mostly be avoided.
brabel 1 day ago||
The hardest part of learning English is the random way words are pronounced without almost any regard for their spelling.
sidcool 1 day ago||||
Many still struggle with getting fizzbuzz right.
classified 1 day ago|||
> Coding is not programming

Methinks you're splitting the wrong hair here.

jubilanti 1 day ago||||
But I must insist: "building a car" is not hard (millions of children do so every year with Pinewood derby style box car kits), building a "real car" that you can use and that passes regulations is harder, but knowing the difference between the two is where the real hard work is.

The truly difficult work is knowing when your client/boss asks you to "build a car," do they really just want/need a small Pinewood derby box car as a toy, do they need a four-door sedan that can legally drive on major highways, an 18-wheeler freight truck, or do they actually need/want a bicycle, or a shopping cart, or a railroad box car, or information about how to take public transit that will serve them cheaper and easier than anything you could build in their timeframe and budget.

That's what people mean when they say that code was never the hard part.

hakunin 1 day ago||
I get what you're trying to say, but coding is hard. A significant percentage of children struggle with it from the very beginning, unable to reason in a very specific way, read and understand errors, trace incredibly detailed logic, gain mental model of memory and state, etc. According to these[1] sources[2] computer science has the highest college drop out rates: ~10.7%. I worry that "code was never hard" is going to become a misleading truism for business leaders.

[1]: https://missiongraduatenm.org/college-dropout-statistics/#:~...

[2]: https://www.coursmos.com/college-dropout-statistics/#:~:text...

pessimizer 1 day ago||
> I worry that "code was never hard" is going to become a misleading truism for business leaders.

The fact that children cannot do it does not mean that it is particularly hard, and computer science attracts a lot of people who just like video games and have no mathematical ability.

I think that the fact that programmers were/are doing a lot of the job that other positions take credit for is significant. Others can get by on bullshit, but the programmer's job in turning that bullshit into code forces them to make something real out of it through a combination of back-and-forth interrogation and just making it up when necessary. Turning handwaving into a product is a skill that programmers have, and is why AI isn't helping tech-illiterate businessmen create things that work.

hakunin 1 day ago||
[dead]
photios 1 day ago||||
> Writing code is not hard. Writing correct code is.

Now add the time dimension - keeping code correct as the business and the people in it change.

That's how I explain to people that LLMs will not replace us developers.

unfitted2545 1 day ago|||
https://media.ccc.de/v/36c3-11241-from_managerial_feudalism_...

Timestamp is: 36:42-39:55

I believe Graeber perfectly predicts the problems, in 2019, with vibe coding creating immediate "value" from production, but failing to produce true value through maintaining the system (like one continually washes a cup to give it value over time).

TeMPOraL 1 day ago||
> (like one continually washes a cup to give it value over time).

But it doesn't give value, it prevents value loss.

I don't know why people are telling themselves maintenance work is virtuous. It's waste. It's necessary waste, and doing the work may be virtuous, but the work itself is pure waste. Fighting entropy.

EDIT:

I wish we talked more about the need for low-maintenance patterns and products. In this industry, many of us already recognize this instinctively, but we often misattribute the problem to "complexity". Think of e.g. rather substantial niches and common practices among developers, like static site generators, no-build-step development, or on the backend side, the popularity of header-only libraries in C and C++. All these tend to be labeled as reducing dependencies, but that's just the means - what they do is they minimize independently rotting parts. The build system isn't bad because it's complex - it's bad because you have to constantly babysit it. Conversely, a static site once rendered will open ~forevermore, and so will a piece of C/C++ code that relies on single-header libraries.

Similarly, the popularity of containers is in large part this. All the mess isolated in a self-contained bundle that is preserved against rot, at least for a while. Inside, there's nothing to maintain - it works until it's not needed, or until the "outside world" changed too much, at which point you throw the thing away and get a new one. Etc.

truncate 1 day ago|||
> But it doesn't give value, it prevents value loss.

It keeps thing operational. Software changes because requirements changes, the context it is used it changes, or just the iterative nature of it where features are rolled out over time so that users can immediately start getting some functionality if not all that was originally planned (MVP).

Maintenance work is neither virtuous nor waste. Its just nature of the things we build.

I agree however with the part on more talk about low-maintenance patterns and products. IMO its often the trade-off between velocity vs quality/technical debt. So it happens, industry is favoring more and more towards velocity for delivering features that often add little value to the users, just because $$$, competition and maybe the grind culture.

unfitted2545 22 hours ago|||
> the work itself is pure waste. Fighting entropy.

Would you not say that this is essentially labour holding up the value?

And I agree about low maintenance products being necessary, the example of the static site is good because the files could be described as becoming a stateless transformation of data!

xmprt 1 day ago||||
Most of the people who say LLMs will replace developers have never built and deployed a real app. I know someone working on an app that they were deploying and after "writing" thousands of lines of code with Codex, they needed help to deploy it despite getting pretty clear (IMO) instructions from the LLM. Later they were struggling to set up a test environment or add backups to the point that I was worried they might break production.

The few people who manage to write good quality production apps with AI are developers whether they like it or not and that number isn't high enough to obsolete existing developers.

aforwardslash 1 day ago||
LLMs will certainly replace most developers. Most developers dont know that "computer" was a profession not long ago (and a quite demanding one).

You are conflating "not understanding how to build software" with "not knowing how to write code". Most developers I've crossed paths with couldn't build a consistent library, let alone a complete, well written, architecturally sound and useful application. Sure, I also know plenty that don't fall into that category but those are the few.

Problems with deploy? Ask claude, use ssh with key-based auth and he will take care of it :) just saying.

I've been writing code "almost daily" for the last 35 years; been doing it professionally for at least 29 years. I've been around, and my peers consider me a proficient developer. I've built stuff ranging from embedded/os level development to DSL languages, from 3D programming to VBA macros. I wrote software used by me, and wrote software used by millions. In some cases, I've maintained products written by me nore than a decade. By your definition, I must be wrong, truth is I can afford to be wrong - my job is not writing code, is designing solutions. Writing code is often the easiest part, and we're mostly automating it. Thank god.

xmprt 1 day ago||
> Ask claude, use ssh with key-based auth and he will take care of it :) just saying

This already goes over the heads of most non-developers.

I think you're misunderstanding my point. It's not that LLMs aren't a useful tool or that they won't replace some developers. But rather that software development as a specialty won't go away because most people can't build software with LLMs in a way that won't blow up.

realusername 1 day ago|||
Maintenance over time is 90% of the work anyways, you don't start a project from scratch every day
woodruffw 1 day ago||||
How many programmers operate under that kind of regulatory and operational constraint regime? I think most don’t.

(In interesting ways this is programming’s greatest boon and curse: if we treated it more like building bridges or cars, the world would be a very different place.)

pdhborges 1 day ago|||
Touch billing, touch medical data, be at a B2B company that needs to catch all the ISOs to have a chance to land bigger contracts. I don't think it's uncommon.
woodruffw 1 day ago|||
It might be an unpopular option, but I think the regulatory regimes that control medical and financial privacy as they interact with software are significantly lighter touch than e.g. the regimes that control material quality for bridges and tunnels, much less airplanes.
seemaze 1 day ago|||
Not in tech, so does the authority granting license to proceed do code reviews?

Because when I submit building plans, they are manually reviewed and approved (or denied) by registered architects, engineers, and planners employed by the authority for just this purpose.

nsagent 1 day ago||
Gaming Commissions oversee gambling machines and will audit code to ensure the RNGs are accurate, return to player meets the expected requirements, and so forth.

I'm sure other highly regulated industries also have their code audited.

HeyLaughingBoy 1 day ago|||
Not really. In those safety-critical areas, the code really is no different. What is significantly different is the surrounding process.

I had to make some software changes to an old medical device this year. The overwhelming majority of the effort was understanding what the customer wanted and giving them feedback into how that would change the existing system and the risks associated. Then, creating a plan to follow the necessary standard (IEC62304) and creating the associated documentation and getting it reviewed and approved.

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.

woodruffw 1 day ago||
I left out the code on medical devices for a reason! And similarly for avionics software.

(The distinction I’m making is between the code that operates the medical device and the code that operates the app I make doctors’ appointments in. The latter is subjected to a different - and lighter - regime than the former.)

cm11 1 day ago||||
It's questionable though how much the programmer is operating under it. The programmer's work may need to comply, but there are a bunch of things that can reduce how much the programmer themself deals with it.

There are the executives, the lawyers, the product managers, sometimes the designers, who to varying degrees determine this before they land in the requirements the programmer sees. But there are also the libraries and APIs the company pays to handle compliance so that the company and the programmer doesn't. The programmer implements the library (and may not even had a say in or necessarily care which one was chosen).

pdhborges 1 day ago||
Even if you get a crispy set of requirements from all parties you are still responsible for implementing all of then while making sense of the existing system (and from my experience significant issues arise at this stage when the full extent of requirement implications ia better understood). On top of that you might also be responsible for operating the thing, participate in compliance doc writing and do ongoing maintenace.
cm11 1 day ago||
Yes, these things reduce (not necessarily how to zero) how much compliance the programmer is doing. They aren't figuring out how to get a car legally on the road, they're still figuring out how to get a car to do car things. The compliance questions the engineer sees are largely engineering questions. Sometimes hard engineering questions.
VorpalWay 1 day ago||||
While there are for sure a lot of programming jobs that don't touch anything "important", like making dime a dozen websites or apps, I think you underestimate the number of things that need some form of higher quality control.

The level of quality needed (or imposed) will vary. It is a wide spectrum from dealing with banking/transactions (money at risk) to brake controllers and auto pilots (human lives at risk). But there is a lot of this, all over the world.

I work somewhere in the middle (rather slow but extremely heavy industrial equipment, where emergency stop is always a safe if costly option). There are domains where emergency stop is not a thing though: some systems on an aircraft in flight, a pacemaker, etc.

My point is though, that there is a ton of code where stakes are higher than "oops, I guess we will fix it next sprint". And while not all of that have regulatory constraints, sometimes a company realises that the financial cost of issues significant enough that it is worth holding themselves to higher standards anyway.

dofm 1 day ago||||
Any coder with experience or ability imagines a world where software architects are regulated the way real architects are, and acts accordingly.

I mean, this was drilled into me at uni — that software was not likely to escape regulation forever and that you can't know with certainty how all the code you're writing will be used when you're not observing the use.

For example, under what constraint regime should the calculator app bundled with an OS be written? It's just a little bundled toy app. Until someone under pressure uses it to calculate a medicine dose, expecting it to be a calculator like it says.

Perhaps this gives away my age more than anything else.

necovek 1 day ago|||
In regards to (software) architects being regulated, the problem was always going to be that someone can jump in and build a "skyscraper" in their room/garage — and they have!

I honestly have failed to see the value of anyone wearing an official "Software Architect" hat in my 20 years of being in or leading high performing software development teams: yes, we built and maintained complex systems with multi-team dependencies, did that effectively and maintained and evolved them over time.

I've seen an Architect who is still doing the coding, but they are never available when you need them. I've seen an Architect who is always available, but so far removed from actual project that their advice is only somewhat worse (if they are good — or a lot worse if they are bad) than what a good senior in the team engineer or tech lead would offer. And an Architect who would happily design for the use cases that might come in 2 years (read never) using complex abstractions only they can understand, leading to decoupling of architectural pieces to 10 teams which could be built better by 1 or 2.

Do I want our industry to be regulated by these folk? No.

dofm 22 hours ago||
When I said it was showing my age, this is because I went to uni nearly 35 years ago. Back then, well pre-web, at a university that turned out chartered engineers who were on many of the same modules as we were, there was a consensus building that some areas of technology would be regulated to require chartered engineers. I was on an accredited degree course from the professional body who seemed sure, any time now, that they would be the one handing out the chartered degrees (though as it turns out I never actually achieved accreditation due to a failure of communication!)

I have nevertheless always written code on the basis that it might one day encounter proper scrutiny.

Ultimately in the parallel universe where chartered software engineers became the norm, the scenarios you are talking about would be different, for structural reasons.

It's never going to happen in this universe.

necovek 20 hours ago||
I got you, but I believe a lot of the ground rules that would be in effect would make sense: a good SDLC — one that I was part of since ~20 years ago — with automated CI/CD, IaaC, reviews, constrained change requests, architectural processes, but all along very agile and able to ship quality changes in ~1-2h, was always necessary to ship good software. Building Cybersecurity and Data Privacy in from the start is the only way to really do it. Same holds for accessibility (we now do those to chase compliance instead). In a sense, I believe good SW orgs have converged to a set of rules about how you build quality SW without having those mandated.

However, I am currently in an enterprise org suffering from compliance/certification overhead while pretending that they do all of the good stuff topped with a highly infectious NIH syndrome (we build our own payment system, authentication system, wrap all the levels of cloud platforms and mobile platforms...). Trying to put more quality in gets opposition from... Quality Engineering, which is a separate department of people who've never written a line of code in their lives — because they need to be consulted and give a stamp of approval on any change, even if it's for the better :O We've got highly specialized roles of Software Architects, System Architects, System Engineers, Quality Engineering, System Validation, Software Validation, System Verification, Software Verification... It frequently becomes funny trying to make a single decision ;-) I don't have to imagine a world where something like this happens, because it exists in some enterprise orgs.

But the fact of life is that even in actual civil engineering, at every phase of building, there is a step of reviewing construction as it is built when constructions actually diverges from the project (happens quite a bit). Most of these get approved if they are not detrimental to the core function and structural integrity — this leaves the opportunity to contractors to actually do what makes more sense from their experience and still pass inspection.

This group of people would never understand that because they are mostly optimizing for appearing useful and invaluable, instead of for business or customer value.

dofm 19 hours ago||
> I got you, but I believe a lot of the ground rules that would be in effect would make sense

Yeah — perhaps unsurprisingly an industry struggling to cope with absurd complexity and change has invented and in some cases reinvented a lot of the kind of tooling and process that engineers were talking about in the 90s.

asveikau 1 day ago|||
> For example, under what constraint regime should the calculator app bundled with an OS be written? It's just a little bundled toy app. Until someone under pressure uses it to calculate a medicine dose, expecting it to be a calculator like it says.

This captures a sentiment I have often felt when people don't take bugs seriously. Or don't take it seriously that they introduced regressions. You should feel personal responsibility for your bugs. When your shit doesn't work, and people are trying to use it, you are basically hurting them, personally.

But it seems with the increase of AI coding, the industry is going the other direction. Nobody seems to care about bugs introduced by slop coding. Except perhaps the users.

skydhash 1 day ago||||
I think most do. You often sees that OSS often provide a disclaimer that they’re not liable for damages. You can’t easily do that when you provide a paid service. B2B often have SLA contracts that usually keeps everyone on their toes and not sling bugs right and left.
hakunin 1 day ago|||
That's why I said "that you can use AND meets regulation". All software on average.
onion2k 1 day ago||||
90% of code wouldn't pass a basic audit, let alone any sort of regulatory scrutiny. Developers are building the easy version most of the time.
grey-area 1 day ago||||
Your analogy breaks down because code is not heavily regulated as cars are.

This is worth saying precisely because of this difference - people see huge amounts of bad code generated by LLMs and think it is equivalent to carefully written code because the results look similar at first glance and they don’t bother to read it.

HeyLaughingBoy 1 day ago|||
The code in cars is, by definition.
grey-area 1 day ago||
That is probably around 0.0001% of all code deployed.
atomicnumber3 1 day ago||||
The problem is that non-technical people just see The Code. And now when they prompt an LLM they also see The Code. Voila - finally we don't need those pesky engineers.

Communicating like this is to try to get them to understand that The Code is barely about the text on the screen and is instead about much more - both abstract in the code (but how on earth do you explain that to someone nontechnical without just sounding like "no trust me my job is really hard, I promise.") and also in all the external stuff - the world The Code lives in (users, ops, support staff...).

Is it a perfect analogy? Of course not, and I'd never explain it like this to someone technical. But they're not the audience.

---

Adjacent: I've always gotten the feeling that even the most well-meaning/trusting nontechnical leaders have always been fairly nonplussed by software complexity and software development.

Deep down, they seem to think it can't possibly be that hard, despite the fact they can't write it themselves. Sometimes, even worse, they have dabbled in writing small, or even medium-sized solo projects. And think - well isn't software engineering just doing that but with other people? And their attitudes can reflect them, sometimes all the time, sometimes just slipping through when under duress like delayed projects etc.

And yet despite their attitudes, they then also find:

- if they try to outsource, they have a bad time

- if they try to proooompt, they have a bad time

- if they try to pay less, they have a bad time

and so the invisible hand of the free market itself forces their hand in paying prodigious salaries and fighting to retain talent. And all throughout they remain internally nonplussed even if they manage to keep up appearances.

mmcnl 1 day ago||||
For me this metaphor only makes the original point more credible.
cm11 1 day ago||||
Absolutely there can be a bunch of hard things wrapped around easy things. When those things can't be separated neatly than it doesn't make sense to separate them such that we can call the easy parts easy (or even parts really).

That said, it's still reasonable to think that once (and only once) the hard part is done, then the easy part is easy. It would just be wrong to think that you can do the whole thing without having to do hard parts. I think the argument here is that with AI this is more possible—that the tasks are more separable. Even if it's the same one person doing the hard stuff and then passing what they learned to the AI to do the easy stuff.

Two reasons they might not separate well (there are others):

- If in a company's product development it's hard(er) to have one person doing H and another doing E, then you're generally going to have one person doing H and E. More or less, this means a person can only do E easily if they do H beforehand. So hard things are required no matter what.

- People come in whole persons. If people skilled/educated to do H tend to be the same people skilled/educated to do E (can be because of how programming is educated, but also can be because there aren't that many programmers), then you're always going to be plugging programmers who have both H and E into roles and it'll probably be more efficient to plug them into roles requiring both rather than just H or just E. You could, within that population, determine who is comparatively advantaged (and we do do this mildly with senior vs junior or with "architects"), but plugging a person into an E-only role is going to involve that person questioning what happened during the H part beforehand. In part because they're good enough at H to question it, but more importantly because they're implementing the H such that they're aware when their E might not be as easy as it could be.

Both of these seem like they might be less true now with AI (and also perhaps because there are more programmers).

sigbottle 1 day ago||||
I mean, I think the point is, every discipline isn't ever that discipline in a vacuum, it touches the real world, and we build meta-structures around said things that may not look like programming, but certainly require deep programming SME.

Even in academia, you have meta structures that you constantly need to think about.

Of course, you can keep trying to isolate the "pure" thing from the "accidentals", but it's not going to work when the work gets sufficiently complex

bigstrat2003 1 day ago||||
The reason people say "writing code isn't the hard part" is because the only thing an LLM saves effort on is typing code into the computer. You still have to know what the code should do, and you still have to review the code the LLM generated to make sure it is reasonable. In other words, you still have to do the hardest parts of your job, and the LLM only saves you effort on something which was no real effort to begin with. That is why they are an ineffective tool, because they are helping you with the bits you don't actually need help with.
Brian_K_White 1 day ago|||
I don't agree that "the coding was never the hard part" in general, but it is true at least often.

For those cases where it is true, it is pretty much like your example, and the distinction is there in your example just like theirs. You supported their point.

hakunin 20 hours ago||
If you’re gonna make a blanket statement that misleads most people, but when challenged, defend it on narrow technicalities, then you just want to mislead people.
ben_w 1 day ago|||
> Writing code is not hard. Writing correct code is. Knowing what is correct in a setting with paying customers generally involves interacting with those customers.

  Invoice: $1000
  One bolt tightened: $1
  Knowing which bolt to tighten: $999
> The gigantic salaries paid to the most prolific employees is not due to their ability to write code. It is due to their ability to interrogate the shit out of the customer until they finally reveal the true requirements.

Bit of both probably. I've seen really awful code in my time, so would say "actually coding well" is indeed one of the hard parts.

But knowing what the real problem to be solved is, is indeed important. (Isn't that what sales is? Working with the customer to tease out the real thing they need solving?)

dofm 1 day ago|||
> (Isn't that what sales is? Working with the customer to tease out the real thing they need solving?)

For any product of any complexity you can can essentially never successfully delegate that process to a non-programmer.

Indeed you can not that often even trust that the client employee doing the asking knows what it is they need. Almost certainly someone in the organisation who was not in the meeting is better placed to tell you what is actually required.

This task needs an analyst; that analyst needs to have experience of writing meaningful code.

tommyage 9 hours ago|||
I want append:

We have studied. We constantly educate ourselves (I have still not yet managed to work through the entire SICP on my own). Our tools are changing constantly. We are juggling information through devops, requirement engineers and customers. We advise daily. We get consolidated if something is complicated to summarize. We do forensics. Constantly under the pressure that some bit rot may open a new urgent bug we have to investigate. Money AND reputation on the line. It is a damn stressful job. So if we do our craft, we do it with incremental knowledge. Carefully. We build community of trust in our free time to get connected and improve. Any new member gets welcomed and onboarded. His knowledge im the future will supplement ours. So we mentor additionally.

Now comes AI. Collects the knowledge and hands it over to anyone. And we know: It is UNSAFE. Don't get me wrong; I consolidate it now as well, just to keep up with the increasing pressure to investigate. But the thing is:

While we did our craft so that we won't have to touch it in the next five years, the complexity increases every single day. And its out of our hands. If some junior comes in and starts writing decent code with ai it is nice. Until it breaks and AI won't help. Or worse: Gets applied on customer data in the wrong way.

A new ticket for the greybeards (by no means, I am not such). I think we are on the wrong track. Using ai decreases my abilities. It increases the load.

I think we should get twice the salaries. It has become unbearable.

Could you imagine that your local file server for your family consists of a enterprise database, a key-value store, possibly multiple reverse-proxies, a vector database.... my point beeing: Complexity. Invariants, frameworks to get familiar with... And the tool to supplement the demand is intransparent (but probably deterministic? Idk). It feels just so wrong.

woopah 1 day ago|||
I think people also have a natural tendency to assume that the amount you are paid is correlated to how difficult the job is, which isn't quite true. The market value of a role has a lot of additional factors besides how intrinsically difficult the actual job is such as supply and demand and the funding source. Programmers may have been able to demand high salaries partially because the explosion in demand came faster than the explosion in supply.

While it is true that a programmer's job is a lot more than writing code, I also wonder to what extent that businesses will actually be able to tell a good programmer from a bad one. For example, a lot of folks at big companies can honestly get away with being a ticket-taking code monkey because so much of the responsibility has been abstracted away so that they don't actually get punished for not caring about the customer. It's sort of similar to how many schools realistically wouldn't care to distinguish between a teacher who puts in extra effort into their classroom versus one who clocks in and clocks out as long as some bare minimums were being met.

I think strong programmers will get rewarded in the right companies that need them, but it's still an open question as to how many companies exist that have their bottom lines actually depend on a programmer doing a good job at wearing all those extra hats.

Valakas_ 4 hours ago|||
This is the correct answer. Of all the engineering fields, SWE is by far the one with highest salary compared to how difficult it is. SWE lucked out on the fact that we have been going through a technological revolution, and naturally the demand for the people who work in this field is huge. Hence the pay. In my university SWE bachelors + masters degree has been seen as the easiest one as far as i can remember. Mechanical, bio, aerospace and electrical as the most difficult.

It's always been funny to see the arrogance of some SWE who think that since they're the highest paid, they are also the most difficult and most important jobs, while it has zero to do with either of these two. Just luck of supply/demand. Otherwise mathematicians and physics would be sitting at the top with the highest paid careers and they... are not even close to that.

For this reason I don't really feel sorry for AI replacing programmers/SWE, at least the ones that were arrogant enough to think in the way i explained.

frgturpwd 1 day ago|||
So you're saying a lead/manager that recognizes good programmers from bad programmers should be paid the most... rubs hands together
stouset 1 day ago|||
Exactly. Writing code is easy. Junior developers do it all the time. Hell, they write far mode code and do it faster!

I go half the speed of a junior developer, but the code I write lasts five years to a decade with an order of magnitude or two fewer bugs and long-term maintenance burden.

zem 1 day ago|||
nope, I've definitely worked on a lot of projects where knowing how to satisfy the requirements was not the challenge, writing the code was genuinely hard. complex data structures that had to have invariants maintained, distributed access to shared memory, dealing with various forms of fault tolerance, and above all getting some complex algorithms to run at an acceptable speed - all that really does get bottlenecked on the difficulty of the specific low level code you have to write. and then there are the architectural issues that make all the difference not when the code is first written but months later when you want to add another big feature and find out that fitting it into the existing code base is hampered by the early decisions you made. I'm honestly glad to have LLMs to help with a lot of that, though I'm also glad that I built up the skills to do them myself over the last few decades and am a little sad that programmers today will not build a lot of those skills up.
jacquesm 1 day ago|||
Knowing what to write in the first place is the hard for me, and always has been.
Jach 1 day ago|||
I'm beginning to wonder if a lot of commenters have forgotten that waterfall is a failed methodology in part because you can't always just gather requirements by say introspection or interrogating the customer for them. In order to reveal the true, accurate requirements, you often need to write code. Not always, sure, just like some code is relatively easy to write, some requirements are easy to both accurately specify ahead of time and even satisfy. (An old XKCD hinting at this distinction: https://xkcd.com/1425/ Only nowadays we actually can easily satisfy a lot more of those old easy-to-specify-difficult-if-not-impossible-to-satisfy requirements. That's the way progress in the field often goes.) Decades of startups support the iterative approach, along with pivoting, the successful ones learning the lessons of writing less committal code and discovering requirements iteratively. And it's hard to actually pull that off -- so many companies have gone under or lost out significantly to competitors because they couldn't write code fast enough, or change code fast enough, either with the goal of discovering the real requirements or adequately satisfying those requirements once known. Code is hard in general.
dofm 1 day ago|||
> Writing code is not hard. Writing correct code is.

Dude.

Writing correct code is the whole process. If you're defining coding without care for correctness, of course you can write it off as not the hard part.

dave_sid 1 day ago|||
“The best code is the code you didn’t have to write” - a wise coder
OroPla 1 day ago|||
The point of the OP in this case wasn't code that compiles, but code that does what the customer wants. If the customer orders an email client but really wants a chat application, coding a working email client is not "correct". And insisting that the customer ordered the wrong thing won't change the reality of the matter.
dofm 1 day ago||
"Correct" does not just mean "compiles" (syntactically correct), for one thing.

Correct code is that which does what is required of it at whatever level of correctness you are examining, as was said. But it's the whole thing.

There is no sensible distinction to be drawn between writing correct code and merely writing code. The former is the only definition of the job. We shouldn't define down competence.

bluegatty 1 day ago|||
"wear additional, invisible hats "

No ... those are not invisible hats ... those are the real hats.

Software is 'Knowledge Distillation' the code is the hieroglyphic artifacts.

Engineers Engineer, Scribes Scribe.

Just so happens developers do their own scribing.

vaylian 2 hours ago|||
They are real invisible hats. Those hats are invisible to outsiders, who don't understand that programmers do much more than just entering code on a computer.
cindyllm 1 day ago|||
[dead]
zug_zug 1 day ago|||
Building on this, as evidence:

If you have shop where you have the best product-owner in the world, and exact clarity on how you want to build something, how all failures are handled, all the tradeoffs, all the implementation details, all the risks, then product is simple, then your company absolutely can get away with hiring a less than top-tier engineer.

However if you're combining all of those skills/roles into one individual (a staff+ engineer) then of course it's going to be expensive.

closeparen 1 day ago|||
In my experience the only people who get paid "well" to just code up well defined JIRA tickets are new grads, and this is essentially a training period until they grow into leading complex and ambiguous projects independently. You can't hang out there more than a few years.
relaxing 1 day ago|||
> The gigantic salaries paid to the most prolific employees is not due to their ability to write code. It is due to their ability to interrogate the shit out of the customer until they finally reveal the true requirements.

That doesn’t describe any devs I know, especially not in the old days. Interrogating customers and bringing back requirements was the job of management (who got big salaries, too.)

mkehrt 1 day ago|||
I think this is true when you realize "customer" means "coworker" or "person on the next team over" or "management" or "your intuition about the problem". Which all sort of have the same shape.
therealdrag0 1 day ago||||
Agree. What a strange perspective. Engineering is what is hard, and that includes coding and non-coding activities but doesn’t require customer interrogation.
HeyLaughingBoy 1 day ago||||
That has only been true in the largest corporation I've worked for (around $4bn annually). Even then, we (devs) had to challenge inconsistencies in requirements or incomplete specifications. The only job I've ever had where I could just do exactly what I was told and get away with it was right after I got out of college.
beachy 1 day ago||||
That job was often called a "business analyst" in "the old days".
pjmlp 1 day ago|||
Not in agency or consulting jobs.
ray_v 1 day ago|||
> Either directly or worse.

Wow, some "the killer is calling from inside the house" vibes right there. But I totally agree that the game of telephone has always been _an_ issue - maybe not _the_ issue but certainly a big one.

criley2 1 day ago|||
I think you're confusing product and engineering. I get that programmers are smart so we just assume we can do every job, but it's a waste of your time and salary to talk extensively to customers and create product requirements. Let the PM's run the user research sessions, you can find more productive things to do.

However, where we agree, is that there is more to engineering than writing code. It's problem solving. Even if the product team, the c-suite, the board, the investors, et al, are all in on a product that they believe customers want, doesn't mean the real problem of bringing that idea to life at scale has been solved.

necovek 1 day ago||
Product should, definitely, run user research along with Product Design. But what I find is that people in either have a problem imagining a solution that's a couple of orders of magnitude easier to build, but also much easier for our customers (usually boils down to making the right choices for customers — the savings are not in the common "choose good defaults", but in actually removing flexibility that's needed only in 1% of cases).

Thus, I insist on engineering being involved early to put real world constraints on wild ideation ("it would take 3 months for 5 engineers" quickly changes what's a must-have :)) — sometimes, a curious, critical mind can expose things like these without having to do the research or user testing themselves.

Now, throughout my 20 year career, it's been very rare to find a product person who will both understand customers deeply, tie their needs to business value, and be able to formalize the intersection of these in a form of good requirements for design and engineering to eventually build!

So I really believe an engineer's (and design) role there is to serve as a sanity check as they dive into actual building — does this really make sense? If they do not, they run the risk of a project completely failing or perhaps not even shipping once someone else questions the value of continuing to invest in this 3 month project 9 months in. ;-)

criley2 1 day ago||
A business does need a small number of their most senior engineers doing high altitude work that can, at times, include helping sales estimate new features. But in my experience, it's not rocket science and a good product team can do this on their own with a quick async check over chat. At most, a single meeting is all it takes.

I've heard of Sales Engineers as well, embedding programmers directly with sales teams.

But the vast majority of programmers should not be spending any significant amount of their time on this. Their value is in building and scaling well-specified systems.

necovek 1 day ago||
I absolutely agree a good product team should be able to: it seems I never ran into one, though.

It is not rocket science, but I had one too many "quick projects" thrown my way by the product teams that were 3+ months of dedicated effort for a full team.

A good product person would know that building a prototype/demoware is up to 10% of effort and time (perhaps up to 1% now with coding LLMs), but building an actual product is 10-100x more. You know, a product that does not fall over a customer looks at it "wrong", and you can continue to evolve it at reasonable cost.

logicchains 1 day ago|||
>Writing code is not hard.

Writing code has a minimum IQ requirement; a significant fraction of the population will essentially never be able to code by themselves. That labor supply limitation is what's kept programmer salaries relatively high.

majormajor 1 day ago|||
Writing code doesn't have a notably higher (if at all higher, vs lower!) IQ requirement compared to some of the basic components of EE or MechE work. Programmer salaries have been driven up by the ability to write-once-sell-globally and the dramatic profit margin difference between that and, say, producing chips where there's a much higher fixed cost due to the need for more real material, tooling, etc. Many of those roles require a much higher-than-baseline-skill, but it pulls up the compensation competition for almost everyone else too. (Though even then there are a lot of unglamorous, line-of-business, internal-tools-programming work that's not paid particularly well even in a lot of parts of the US far from the big tech companies.)
Jblx2 1 day ago|||
>Writing code doesn't have a notably higher (if at all higher, vs lower!) IQ requirement compared to some of the basic components of EE

Average IQ of Electrical Engineers: 121

https://www.iqcareerlab.com/tools/iq-for-profession/electric...

...which is the top 10% of the population.

https://www.desperateminds.com/blog/iq-120.html

tptacek 1 day ago||
Do you believe these numbers? Is there a cite somewhere in the literature for valid, proctored IQ tests being given to representative samples of different professions for these kinds of comparisons? The link you've provided is to a company selling online IQ tests.
Jblx2 1 day ago||
Is the argument that electrical and mechanical engineers are not smarter than the average person? How about figure 8 (PDF page 86) of:

https://web.archive.org/web/20120905095856/http://www.ssc.wi...

tptacek 1 day ago||
Doesn't this basically make the argument I'm making, that there's no well-defined band of IQ test scores for different professions?
Jblx2 1 day ago|||
I'm not seeing any other posts of yours on this comment thread. Maybe you forgot to hit the "reply" button (or accidently outed an alt?) My only point was that majormajor saying that programmers might only be roughly the same smartness as electrical or mechanical engineers would put them comfortably above the average person.
lakdjsadjsa 1 day ago|||
[dead]
pendenthistory 1 day ago||||
Salaries are a product of supply AND demand. Supply of good programmers and EE/MechE is low because it requires above average intelligence and a lot of education, while demand for software has been much higher than demand for EE/MechE. Now that the demand side might invert.
win311fwg 1 day ago||
While you are directionally accurate, the flaw in your thinking is revealed by the fact that bad programmers also have high salaries, and plenty of five year olds have no problem being bad programmers, so there is clearly no need for above average intelligence or education to be a bad programmer.

As hard as it might be for this audience to comprehend, supply is limited simply because it is an undesirable profession. The majority of the population couldn't think of anything worse to spend their time doing. Much as the same reason why they don't want to go work on oil rigs and other such work that is high paying but what most people are unwilling to do.

High compensation is actually not as strong as a motivator as you might think. It can tip the scales if someone is already on the fence, but it doesn't suddenly make someone who absolutely can't stand something to change their mind.

tripleee 1 day ago|||
I've watched dozens of people try to learn to code and fail, some definitely not for a lack of trying. Of those that did learn, only a fraction had the IQ or passion to be genuinely good at it.

The difficulty of it has absolutely been a bottleneck to the supply of good devs, keeping salaries high.

Jach 1 day ago||
We've also seen decades of effort, much of it successful, aimed at making it easier. Programming used to be harder. (Difficulty alone doesn't account for high salaries.) If it was never "the hard part", what motivation for all that effort? Books, pedagogy, tooling, languages, even the notion of publishing a library is an attempt to make coding a related task easier for others. There's been comparatively less effort in making "the other parts" easier. Though certainly things like software development methodologies count.
tripleee 1 day ago||
My hunch is that the difficulty has moved, not reduced in practice. We make one layer easier and then another mountain lies at the layer above, just as hard.
neonstatic 1 day ago|||
> interrogate the shit out of the customer until they finally reveal the true requirements.

Or are forced to figure them out.

jasonlotito 1 day ago|||
> Writing code is not hard. Writing correct code is.

Xing Y is not Z. Xing `additional adjective` Y is.

Writing prose is not hard. Writing good prose is.

Cooking food is not hard. Cooking good food is.

...

omiliyomami 1 day ago|||
How can I downvote a comment
drdeca 1 day ago||
There’s a minimum karma requirement.
bdangubic 1 day ago||
After 30+ years in the industry the absolute best programmers I know never spoke to any customers, like ever. so bullshit comment all around. I’ve been coding for 30+, have obscene salary and do not wear any “additional hats” or talk to any “customers.”
turtlebits 1 day ago|||
Understanding requirements means talking to customers. A customer can be anyone, even other devs that consume your code/product.
bdangubic 1 day ago||
“understanding requirements” is as much “wearing other hats” as having hands is “wearing other hats” for a carpenter.

coding is always the hard part, always. whenever I was on any project and we had more work than resource we never hired “people to wear other hats” - we hired people to write code, that’s it. thats the fucking job.

you ever see a leet-code-for-understanding-requirements? yea, me either…

necovek 1 day ago|||
You actually do. All of those puzzle-style questions of the sort of "how many liters of water in Mediterranean" ask you to develop a solution with a vague requirement by leveraging what you know roughly to demonstrate you can specify requirements yourself (oh, Mediterranean is roughly 5000sqkm [-> I need surface area], on average 50m deep [-> I need average depth], this gives me A x B liters total) — I'd call these the leet-code version of requirement understanding/development.

But really, any interview is really about giving you a requirement, and seeing _how_ you understand it, how you clarify it with your stakeholders (interviewers), and then how you address them.

floweronthehill 18 hours ago|||
These are called Fermi problems.
bdangubic 15 hours ago||
yup! And no SWE in the history of mankind that can code has lost an employment opportunity because of it.
bdangubic 1 day ago|||
URL please?
necovek 1 day ago||
Uhm, I wasn't under the impression this was Wikipedia: look for "FAANG interviews" at Google.com or Kagi.com or....

(I am not sure what part you want to challenge, so getting a better response is really hard — if it's all of it, I can't do better than above)

bdangubic 21 hours ago||
if those silly “puzzle questions” are important (they are not) they’d be a website where SWEs would be competing/hacking on etc - leetcode style.

no one gives a flying fuck about that if you can code - no one

turtlebits 1 day ago||||
Carpenters don't just nail things together and expect that to be a usable/useful product.

If you can't/won't understand what you're supposed be doing, you're either useless or making useless shit.

bdangubic 21 hours ago||
understanding is a given and not “wearing other hats” - there is just one hat
Jach 1 day ago|||
Thanks for giving me a laugh, I was just imagining https://programming-motherfucker.com/ as an absurd "Hat-wearing, motherfucker" site instead.
agentultra 1 day ago||
The author might be missing the intent of the observation. Maybe they’re misinterpreting it.

What I, and many people who’ve said, “code was never the hard part,” aren’t referring to the skill of an individual. It’s not the hard part of the engineering process of developing software. Programming languages have manuals. Many data structures are well documented. There are frameworks for damn near everything. While the difficulty of producing code varies by the skill of the programmer and the complexity of the problem domain; writing and understanding the code is a tractable and straight-forward problem. I can and have taught many people. People can learn.

What most people are referring to is that the hardest parts of producing software are all the things an organization has to do in the production of it. It’s not writing the code that is the hardest part for an organization. It’s getting everyone to understand the problems, working together, gathering requirements, developing specifications, validating releases, testing, etc. It can often look like herding cats and is probably harder.

hannofcart 1 day ago||
If what you're saying is true we are moving into an era where rockstar product managers are going to be more in demand than programmers since they can do all of what you mentioned above.

And typically (though not always) product managers have better people skills than programmers and consequently they might be more effective at the "gathering requirements" and "working together" bits you mentioned above.

Even much of the "validating releases" and "testing" parts should also be things that a decent PM should be able to wrangle now by themselves with some LLM agents to assist them. Afterall, why bother about code quality of a testing harness. So long as the PM can keep a coherent test case list and have end to end tests that cover them, programmers can leave that to them as well.

satvikpendem 1 day ago|||
Well, it's true. In a world where code is commoditized, a PM who knows exactly what the customers' needs are will be much more successful than an engineer who does not. Not sure what is controversial about that.
agentultra 39 minutes ago|||
I think the controversial part is that an engineer cannot talk to or understand customers.
pnt12 1 day ago|||
Why not have the customer talk to an llm and iterate on the plan? Many customers will appreciate the 30m back and forth replacing the multiple hour meetings.

People are subtracting a lot of hard parts from their thinking, and think it's simpler than it is. What happens when the test suite isn't testing the real thing? The ci/cd doesn't even start? There is a bug requiring a hot fix ASAP? The code is growing into a nasty meatball and spaghetti dish, and the llms just turn shift it around. What about when the agent starts thinking in circles and neefs guidance to start working?

I'm not a ludite: I use llms every day, but I try not to be a meat proxy. Some one off scripts are vibe coded, but applications need real maintainable code.

My prediction for winners and losers: some companies will lay off a ton of programmers and replace with AI, with short term success but long term big problems. Other companies will use llms to boost productivity, but keep their engineers responsible for the health of the products. Short term gains won't be as impressive, but productivity will be higher and the company will be competitive in the long term.

satvikpendem 22 hours ago||
> Why not have the customer talk to an llm and iterate on the plan?

They already do that, hence the SaaSpocalypse. The hope for these AI companies is that the models get better than engineers such that the answer to all your questions is that the AI will handle it.

twister2920 19 hours ago||
> They already do that, hence the SaaSpocalypse

The market believes they will do that, hence the SaaSpocalypse. very important difference

satvikpendem 15 hours ago||
No they already do do that. I know many companies building internal tools with LLMs.
agentultra 1 day ago|||
A test doesn’t prove much.

Highly experienced programmers seem to have a hard time understanding this.

Why do we have tens of thousands of test cases and we still find new errors constantly? Why is our software so bloated and slow? We do we still have security breaches?

LLMs can be useful tools when guided by experts. I don’t think a PM with a dream is going to cut it in the long run.

sumedh 1 day ago||
> Why do we have tens of thousands of test cases and we still find new errors constantly? Why is our software so bloated and slow? We do we still have security breaches?

Do those tests test the right thing?

Adding more features is given higher priority vs optimizing current features.

Arent humans the weakest link in security, click on some random link and enter your credentials because the fake site looks legit.

ip26 1 day ago|||
It’s getting everyone to understand the problems, working together (etc)…

There are manuals for this too, and interestingly enough this has been studied since the Romans at least! Is it then really the hard part?

agentultra 1 day ago||
Apparently it is. Modern companies seem to prefer dysfunction over anything else. I have been trying to understand why for my whole career.
nunez 1 day ago|||
Competing incentives and the natural result of dealing with lots of people mostly
stefan_iarca 18 hours ago|||
[flagged]
ozgrakkurt 1 day ago|||
Organization is too abstract here.

It also depends on how you model the problem. You can easily say the hardest part is hiring people if you are the boss. Since the people you hire can do everything else that needs to be done.

Managing and motivating people is the hardest part for the person who is doing it.

If you are hiring you might say it is harder to find good managers than programmers.

It is not measurable who did a good job at what as almost everything requires a group of people doing different things.

You can see how pointless this is becoming as we don’t have a measure for anything.

This kind of problem requires assumptions because it doesn’t hing on anything natural.

For example, if you start by believing salary indicates value then you can go from there.

In the end there are millions of managers, millions of programmers, millions of ux designers etc. It is kind of funny to suggest doing any of these is inherently harder than the other.

Just imagine you are judging a project. You have everything about it recorded. How hard do you think it would be to judge who had more part in the outcome in what way? If 10 people judged it separately, how many would have similar opinions etc.

It is impossible to judge even for a specific case, so it is a joke to consider to find the universal rule for it.

In the end it is ok to believe something but it is also important to not forget that it is a belief

jaynate 1 day ago|||
1000%. The expense of writing software was and still is high.

Whether it’s commercial software company or an internal team writing custom software, the return on that investment depends on many things outside of the code itself.

blub 1 day ago||
Getting everyone to understand the problems, working together, etc, etc are issues that are inherent to organisations.

They’re orthogonal to AI and to the actual hard technical skills needed to execute on a specific strategy. And if the technical skills are lacking, it doesn’t even matter how good an organisation is at collaboration, whereas hard skills plus organisational disfunction are a known successful pattern :)

Many people did look at this through an individual lens and claimed that design skills, domain knowledge are the truly important abilities. I remember reading on HN at least a couple of popular articles claiming that. Actually, they’re all important and having great design skills without matching coding skills is IMO not really possible. The code feeds into the design, the requirements, the architecture and shapes them.

agentultra 1 day ago||
I don’t disagree. I’ve worked on teams that definitely valued the non-coding skills more and it showed in their inability to deliver on certain requirements… mainly performance and stability.

But these are skills that can be taught to individuals.

But teaching an organization that their real bottleneck isn’t how fast they’re writing code; it’s producing production-ready software that people understand and are willing to take responsibility for… that’s much harder.

Many businesses want to treat software development like an assembly line and revert back to Taylorism. It’s knowledge work and there’s no royal road. Good teams get fast when they have the right mix of skills and trust from the organization.

What we’ve been delving into for the last decade has been a decline in the value of labour and work.

“Code isn’t the hard part,” isn’t meant as an insult at individual programmers or to devalue their work. That’s being done by big tech and their AI hype machine.

tikhonj 1 day ago||
Everybody saying "coding was never the hard part" is really telling on themselves. Coding was never "hard" because most organizations were absolutely unwilling to take on any technical work that was hard. That tells us about business strategy and culture rather than anything about the fundamentals of programming or technical work.

The real conclusion is that programming is such a high-leverage activity that even technically trivial, low-quality programming is immensely valuable economically. That's not going anywhere, but maybe LLMs are going to make it all that much cheaper. (Which is mostly great! But I really don't look forward to the painful debugging and maintenance that reams of shit code will push down on programmers.)

But also, there still is a ton of programming that is fundamentally difficult. That's not going anywhere either. And LLMs are useful there too, but they're currently nowhere near replacing the expertise needed to do novel and non-trivial technical work.

In an ideal world, making mediocre code cheaper should leave more room for taking on harder technical challenges. In reality, this has always been dictated far more by non-technical factors—culture, leadership, trust, risk tolerance...—than by anything intrinsic to programming. But, at least for now, we can use the LLM hype to motivate the kind of deeper technical work that always made sense but was too uncertain or too open-ended or too long-term for non-technical leadership.

And we should also drop the bullshit "code was never the hard part" framing.

ndriscoll 1 day ago||
It's not really telling on oneself. Like you said, the easy stuff (e.g. basic business process automation i.e. constructing simple database queries) happens to be economically high ROI right now. Something like 3d graphics or signal processing or whatever are comparatively niche and less likely to pay as well. Most jobs that people will actually pay for are actually pretty mindless. Even for the more "advanced" jobs, it's likely the domain knowledge and not the programming per se that's difficult.
ryan_n 1 day ago|||
> But also, there still is a ton of programming that is fundamentally difficult. That's not going anywhere either. And LLMs are useful there too, but they're currently nowhere near replacing the expertise needed to do novel and non-trivial technical work.

Genuine question and not trying to be snarky here, I am actually curious: what fields or types of programming does this apply too? I think I've read anecdotes online about people in fields I previously (a few years ago lol) thought "oh yea an llm will never be able to help with that" and now see articles about how llm's are doing just that.

aDyslecticCrow 1 day ago|||
LLMs are surprisingly bad at basic CMake, but i don't see why they should be.

Much of the truly LLM-difficult code is probably hiding in the libraries we import. Database engines, compilers, efficient data parser, control theory, signal processing, protocol implement-ions, or anything with a 12000 page German ISO standard that need to pass a $12.000 certification lab. But this also compose of such a tiny fraction of programmers or code in the world.

A-lot of my work lies in that last one... but that's also where that "code is easy, knowing what to code isn't" is the most true; because industrial standards tend to not spare any expense on the word count, while the implementation is a ~2000 row state machine. I've not yet found an LLM capable of successfully parsing this kind of specification documents, but it's possible they will reach there eventually.

But i do feel online debate do clump the software field a bit too much when AI is discussed. JavaScript compose probably 98% of all code the LLMs are trained on since it's powering every website scraped for training. As such, people in web-development seem to have far more praise to LLM capability than i'm able to give.

My personal AI experience has been very mixed in comparison, regularly making up functions of common libraries, hallucinate the description of technical terms, straight up writing un-compilable c-code, or get confused by relatively small code-bases. Useful but not majorly changing my work at the moment (pretty good at comments, test cases, or as google replacement).

Granted, I've only tried models up to Opus 4.8, and not had experience with the newest "tier" of models with Fable, Kimi K3 or GPT 5.6; but the prices on those are also starting to compete badly with my salary at the moment.

ryan_n 1 day ago||
That makes sense, great answer thank you.
frgturpwd 1 day ago|||
It's bad at anything that still requires constant human judgement. The only reason it can build apps and websites so easily is that human judgement was encoded in that a long time ago in many forms. It's a developed and aged practice.
pjmlp 1 day ago|||
It is hardly any different from reviewing or debugging the code quality of most offshore deliveries.
fragmede 1 day ago||
Those corporations that undertake the actually difficult bits of programming end up charging so much money, to the point that people go out of to not use them though. Splunk, Oracle Database, Spanner, Datadog, VMware. We don't live in an idealized world divorced from business and money, unfortunately, but worse, software developers are notoriously cheap and hard to sell to. If I did the hard work and made a compiler that generate code that runs 10% faster, I should have a solid business. Even Intel couldn't make a business out of icc though. So the code is the hard part but business is also the hard part and it's a miracle any of this stuff ever gets off the ground.
bluejay2387 1 day ago||
I agree, the whole 'developers don't code' AI defense was pretty ridiculous. I also concur that development is going to get a lot harder. Anyone that has successfully used AI coding tools knows that you can get massive productivity increases but now I have to figure out how to get a bunch of hyper active child like coding entities with memory deficiencies to build stuff without going off the rail and introducing massive security problems or building something completely mismatched to the requirements. If you can do it, yeah you can get 10x results. But now I am engineering harnesses, architecture specifications, agent structures, statistically sampling, and formal verification systems to guide the code instead of writing the code.
maxrev17 1 day ago||
No one seems to mind the quality drop though. The buyers of this stuff could never discern.
sensanaty 1 day ago|||
I'm definitely noticing, I imagine the populace at large will soon too. I'm not even talking about random software either, the company I work for has more and more fired that need to be put out because people are spamming out ai-generated code that was at best rubber stamped.

Not even just the customer-facing stuff either, the internal tooling is on fire more and more often. It's not sustainable in the slightest

pydry 1 day ago|||
It took a while before the MBA hivemind woke up to this happening because of outsourcing two decades ago.
inigyou 21 hours ago||
In the meantime their slowness should be our opportunity. Indie gaming displaced AAA when AAA started making the same franchiseslop games every year.
satvikpendem 1 day ago|||
Are you the buyer of the stuff?
tombert 1 day ago||||
I suspect the massive shitshow of Windows 11 and all of its failings is a result of large quantities of vibe code being merged into the OS. People are noticing.
satvikpendem 1 day ago|||
And when exactly did Windows 11 release?
tombert 1 day ago||
Just because some of Windows 11 was released before Claude Code doesn’t mean that the really shitty stuff from the last year wasn’t vibe-coded garbage.
satvikpendem 22 hours ago||
They didn't need AI to write slop is my point.
IshKebab 1 day ago|||
Windows 11 was released before vibe coding was viable. And the shit show seems to be that they push ads and bloatware on people, not that it doesn't work reliably. Windows 11 IoT LTSC has been absolutely rock solid for me on both machines I have it on. Waaay more stable and reliable than Linux, and even a bit better than Mac (which is also way better than Linux).

If they are vibe coding anything, it hasn't had any bad consequences yet. The ads and bloat are human decisions!

JackMorgan 1 day ago|||
In the last two years Windows 11 has shipped with increasingly serious bugs. Many of my co-workers report needing to reboot a few times a day because issues just compound.

I regularly have major issues with Teams and Outlook. Crashes, not showing messages until hours later, calls dropping every few minutes, and the app just never opening. Just Friday afternoon I could not close Teams from the Task Manager

tombert 18 hours ago|||
It's not just "ads" and "bloatware". Recent updates have broken notepad and calculator.
torginus 1 day ago||||
They do. Most economically viable software already exists today, most people's job is to make .1% improvements, and features on top. For this work it's obviously pivotal that any change should not worsen the existing software, as that instantly nullifies the value of improvements.

Another kind of highly valuable software is a new design which digitizes some process, like the ticket management of a rail company. If you don't follow the internal processes and workings of the firm exactly, or you do not interface with existing systems 100% accurately, your software very soon becomes worthless.

Figuring out how to create a piece of code that solves the exact problem the customer has, while not breaking anything, and fitting into existing operations seems to be a big head scratcher still, and something humans still need to do, at least that was my experience so far with LLMs.

inigyou 21 hours ago||||
The Linux desktop just exceeded 10% because Microsoft is such shit.
jvanderbot 1 day ago||||
You forgot "as long as"

... as long as the buyers could never discern

ryandrake 1 day ago||
The sad reality is that the vast majority of customers (whoever you are writing software for: clients, management, or end users) simply don't care as much about quality. If you give them the "time, cost, and quality" pick-two choice, 99.9% of customers are going to ask for fast+cheap. It's not the world I wish we were living in.
torginus 1 day ago|||
This isn't true. I don't think you or me would want a car/TV/smartphone that's cheap and flashy but breaks every two weeks. Sometimes people are strapped for cash that's why they cheap out on stuff, or really are enthusiastic about it, so they tolerate it breaking all the time, but for everything else, reliability is king.
Nextgrid 1 day ago|||
Nobody _wants_ it, but in practice if all cars/TVs/smartphones break every two weeks, what choice do people have?

In tech, the era of competing based on quality is long gone. The winning strategy is to get a monopoly/oligopoly and then you can let the quality decay to zero and people will have no choice but to keep paying you money (or to your handful of equally-mediocre competitors).

torginus 20 hours ago||
> Nobody _wants_ it, but in practice if all cars/TVs/smartphones break every two week.

Certainly not true for me. One example is Linux. I've been sticking with Ubuntu LTS, and delaying upgrades for as long as I can get away with for any system that's connected with earning or at least not losing money.

For the packages whose versions I care about, I compile them from source/use a PPA, and accept the consequences, but I really don't care for shiny features, if the price is random stuff breaking and having to be troubleshooted in the latest version.

satvikpendem 1 day ago|||
There is a minimum but beyond that people don't care. Asian brands like Toyotas are the most reliable yet the Ford F150 is the best selling vehicle in the world.
necovek 1 day ago||||
This is why I believe true engineering art comes in actually marrying all three: build great quality quickly at reasonable (small) cost!

If you need it to work for at least a month or two (instead of one and done, which some demoware is like). Following a few rules early on will ensure you can keep evolving it — even if it's MVP/demoware/whatever — as long as you know you need to evolve it soon after you build it!

tripleee 1 day ago|||
The most important result of quality in software is that it's faster to produce and cheaper. How are people defining quality? We're not building tables with the finest wood.

Low quality ends up taking longer to build over the long run. It gets harder and harder to add or change features.

lomase 1 hour ago|||
[dead]
croes 1 day ago|||
Code is the written representation of your idea how to solve a problem.

Now you tell someone else your idea and have to hope they get it. Otherwise you have to argue, rephrase, start all over again.

We are back to the tree-swing project management, but we added another layer

logicchains 1 day ago|||
>get a bunch of hyper active child like coding entities with memory deficiencies to build stuff without going off the rail and introducing massive security problems or building something completely mismatched to the requirements

Development is essentially becoming management.

cautiouscat 1 day ago||
I see this comparison a lot, but I’m not sure I agree. At least not semantically. The list of what an engineer using agents is responsible for, largely hasn’t changed. Engineering managers haven’t changed responsibilities either.

Even with wrangling agents, you’re really just making them right the “correct code”. Something EMs don’t do, or at least the good ones don’t do with their ICs.

pjmlp 1 day ago||
It is quite similar to architecture work when others in the team do the actual coding, and lead devs / architects only have time to try out prototypes.

Only now instead of local or offshore devs, it is agents.

pydry 1 day ago||
I was mainly doing architectural work as a coder long before LLMs came along.

So was everyone else who wasnt slopping out boilerplate.

a2ff6eeb0 1 day ago||
This is all the stuff that the frontier labs are going to ship by default next year. Except for the architecture specifications, which agents can already do adequately for most system today.
Toutouxc 1 day ago||
Do you have a source for that claim?
a2ff6eeb0 1 day ago||
Why wouldn't they be working on better harnesses? Every feature that has gotten popular has gotten integrated so far, and their product managers aren't stupid.
nemothekid 1 day ago||
This feels like post-LLM coding romanticization. Before LLMs, people would regularly say stuff like "I could build this in a weekend" under a "Show HN" post. How many times have people said "I could build Twitter in a weekend". I've even found in a post-LLM world, that kind of language has only increased.

When you are looking at something that already exists, where all the requirements are defined, when all the edge cases have been decided, then coding was the easy part. People didn't "burn out" because it was difficult to figure out how to write SQL. People "burned out" because the requirements constantly changed, demand was ever increasing, and edge cases were constantly being triggered.

>If deciding what to build is the hard part, why do so many product managers seem clueless?Why aren't there rigorous 10-step interviews for them?

Classic engineer type opinion where every else is dumb, except for him. So many people have come to see leetcoding as an intellectual badge of honor, when most of us know its cultural rigamarole and the code written on the job will rarely reflect the type of work that will done.

I'm not saying coding is easy, plenty of people struggle with it. But as far as the job goes, unless you are a junior just grinding through JIRA tickets, coding was the easiest (and arguably the most rewarding) part of the job.

mawadev 1 day ago||
You are putting a lot of words and judgements into the authors mouth.

Why exactly is it acceptable to not just do your role and expect the underlying requirements to be correct and measurable, especially when there are separate roles whose sole purpose is to do exactly that?

noman-land 1 day ago|||
Because being a code monkey is getting devalued like crazy every hour that agentic coding improves in ability. If all you do is take well specified requirements and turn them into a piece of code you are going to lose your livelihood unless you can learn to do more than that or you're at the very top end of people who do that.
mawadev 1 day ago||
Getting the requirements did not work properly before, what makes you believe it is going to happen now?
inigyou 21 hours ago||
Yes, and being a code monkey who turned wrong requirements into wrong code wasn't valued much before, either. Sure you could paid enough to get by, but not the big bucks.
inigyou 21 hours ago|||
Because those other roles don't exist. You have a very 1980s view of things. That just isn't how software shops work any more. Maybe yours does, and that's great for you, but they mostly don't.
inigyou 21 hours ago|||
One of the Stack Overflow founders wrote about all the programmers who see SO as a series of CREATE TABLE statements and miss the rest of the trees.
mrkeen 1 day ago||
The answer to all these "if coding is easy" questions is that coding isn't programming (to put it in Lamport's terms).

Encoding your ideas into a programming language is easy. Understanding that your ideas are bad is hard.

You have clients with multiple devices connecting to your backend simultaneously, while you mediate their interactions with your partner systems. Their versions might not be up to date. It's a distributed system. When was the last time you cracked open a distributed systems textbook?

When was the last time you built a system and stared reality right in face, that is: - can't trust your clocks - pick 2/3 of CAP - exactly-once delivery impossible - the code will need to be altered and released without downtime - hackers will try to exploit you for fun and profit - your manager doesn't want you wasting time getting the above right

Coding is the easy bit.

varjag 1 day ago||
Nope, coding was still the hard bit. Every failing programmer would jump into architects or prod management but not the opposite way.
luke5441 1 day ago|||
Coding just often has a fast feedback loop. If you can't do it people are going to notice pretty fast. You can fail as an architect or prod management for a long time before people discover you are not good at it.

One thing that is good to have in all those positions is an understanding of the code base and where it can slowly evolve to and how that positions the code base best in the market. I'd say the best way to build this understanding is still to build parts of the system yourself. Not talk to experts or agents about the code base.

varjag 1 day ago||
Yup you'd fail fast because you could not at the time bullshit and handwave the computer. When you don't do the implementation work itself your sloppiness is mostly the concern and inconvenience of implementors. And I concur the best way to understand the system is through the code, and the best way to understand the code is to write it.

We aren't going to understand the systems we whackchitect from now on. It's the endless prodding and begging instead, something that makes me infinitely sad.

nemothekid 1 day ago||||
>jump into architects or prod management but not the opposite way.

This has nothing to do with any intrinsic difficulty with coding and more to do with the industries penchant to rewrite everything every couple of years. The reason you don't see people who went to management become ICs again, is because you have to spend time learning the new, correct™, way to do read and write code.

From the constant API churn for something like React, or even the 20 million updates to write "modern" C++, someone who has had those minute decisions abstracted away will struggle to write code.

pjmlp 1 day ago||||
Usually you don't have an option other than leaving, most organisations don't let seniors keep coding and nothing else.

Either move up the ladder or leave.

varjag 1 day ago||
Non-coding architects were typically a by-track rather than superiors to ICs. Though I imagine some of them could think they were. Product managers also often don't have proper reports in the sense line managers would.
pjmlp 1 day ago||
Non coding architects, aka Solution Architects tend to be the next career level after Technical Architect in most organisations I have been part of.

No one would jump directly into a Solution Architect.

PMs yeah, those have had various backgrounds how they came there.

Again, on my personal experience.

inigyou 21 hours ago|||
That may have worked while they still had programmers acting as a shield between them and reality. If a bad architect tells an LLM how to make a system, it won't work.
d0mine 1 day ago|||
LLMs can write TLA+ models just fine. It can help even with small mobile apps. Surprisingly, simple TLA models were able to find design/workflow issues almost in every of a few vibe-coded apps I've tried on vacation.
ozgrakkurt 1 day ago|||
> Encoding your ideas into a programming language is easy.

This is still difficult. Sometimes the programming language or the programming methods you want to use effect how you desing the system on an abstract level.

skydhash 1 day ago||
Those computing ideas (like distributed systems, concurrency and task scheduling) can even be found in even a single program/system. They are often entangled with even broader concepts, like visual layouts, security (authentication, authorization), communication and encryption, control systems, signal processing,… And those are often accidental complexity.

The essential complexity can be easily resolved by talking to domain experts. You will get a nice requirements document afterwards. That’s when the engineering and management concerns appear.

neya 1 day ago||
The "code was never the hard part" is a narrative pushed strongly by designers, MBA guys and product managers. Even before AI, they've always treated programmers like low-lives, someone beneath them and completely replaceable like commodity. Ironically, of this entire group, it isn't programmers that are being replaced left and right. Whole product teams, designers are being replaced. Good coders are still in demand - because, someone has to fix the vibe coded mess. In design, there is no reference for good and bad. You either like a design or not. In code, something either works or not. That's why it's always hard to replace a programmer as opposed to a designer.

Has Claude code et al replaced programmers? Not really. And it will be a long time before it can - because someone needs to still instruct the direction of the code, the base architecture to build upon and that comes with real human experience.

ozgrakkurt 1 day ago|
IMO it goes both ways. Each side can look into how they see the other side to understand the psychology of the other side.

Also I write good code and managers are thrash.

jemiluv8 16 hours ago||
This post misses a couple of points

1.”Writing software was never the hard part” - isn’t saying coding was easy. The comparison was against building a viable product. Doing business involves a whole lot more ambiguity than sitting in your room writing code. You could build anything and yet the hard part was building something that matters

2. >> Nobody knows how the AI revolution will play out in the end

I disagree with this statement as far as Software Engineering is concerned. We kinda know. Everyone uses an agent harness to code this days - the only real difference is in how - and that still sets developers apart but most are using similar tools.

This reads more and more like clickbait. Sorry. I always find posts like this outrageous but I suppose that was the author’s intent. Outrage will get you votes. Taking extreme positions in an argument will get you attention. Kuddos

jerhewet 16 hours ago|
> Everyone uses an agent harness to code this days

No we don't. I don't care what's at stake; I will never use spicy auto-complete.

jemiluv8 14 hours ago||
Nearly everyone I suppose. There are always outliers I suppose. I’m going for 90%+ using llm in some capacity even if just a single ChatGPT prompt.
throwawayffffas 1 day ago|
Coding while definitely not easy, it was never the hard part.

The hard part has always been how to solve x problem. Coding is the last piece of that part, which while not easy is not the hardest.

The art of computer programming books are not about coding they are about computer science, i.e. figuring out how to compute solutions to problems.

Figuring out what to build is definitely not the hard part though.

More comments...