I read "Code was never the hard part" as "Writing the Code down is easier than the stuff you do before it (like Architecture, Design Patterns, Requirements) and after it (Testing, Troubleshooting, Refactoring, etc)".
post
This to me seems to be a very odd interpretation of the phrase “coding was never the hard part”. First, that doesn’t mean that it’s not hard, just not the hardest. Second, and more importantly, they jump to deciding what to build being the hard part as if those are the only two things?
I have used a variation of this phrase (I usually say coding was never the bottleneck at work) but I’ve never even considered deciding what to build as to be what the bottleneck is.
First, I should say by coding I mean taking a concrete design for a change and writing a single pass at implementation. Modern models to this extremely quickly with up to good performance depending on exactly what you ask them to do.
The things that take up more time in software development just for engineers, leaving aside things that design and pms do.
- Coming up with that concrete design for a change (humans may do this in many ways, one of which is writing the code without a plan and refining)
- Architecting the system at all levels. This one is continuous and huge. A good architecture will easily adopt changes as they come, but you can never foresee all possibilities, and even if you could, there’s usually other people around you who can’t, which brings me to
- Communicating the system design and coming to consensus about aspects of it. This is mostly applicable to teams and is the primary reason individuals can often outperform entire teams. It’s also one reason why throwing a second LLMs at a problem doesn’t solve it at twice the rate. You’ll never get linear scaling
- Upkeep tasks: what needs to be replaced and fixed now, how do we best monitor and alarm to figure this out in the future.
There are “what to build” aspects in here and many engineers also spend time on the overall what to build questions, but the way the article was talking about it seemed very high level.
Coding isn’t easy, it’s hard. But it’s also not usually the bottleneck in software development.
For me it was trying to interpret vague business requirements. But I was a designer / coder. I tried to insulate the other programmers from that nonsense.
I'm a mediocre hobby programmer, and for me, the hardest part is coming up with the concrete specifics of what to implement.
I'm actually half decent now (for a hobbyist), but I remember that when I first moved from coding along with worked exercises in textbooks, to actually trying to solve real life problems, it got exponentially more difficult. The textbooks say "use this tool to achieve this goal", and even if you're bad at using that particular tool, you can put all your effort into doing it well. However when you're having to make the bigger decisions for yourself, you have to choose what tool to use, and I found that super hard — especially when having to choose between an approach that I felt confident with that wasn't quite the right tool for the job, and a new tool that was completely new to me (and if I am unfamiliar with a new approach, am I sure that it's the right tool?).
At one point, when I was deep in a personal project, I had a period of a few weeks where I had no reliable access to internet, and so I did most of my coding using paper and pen. It forced me to think more deeply about the implementation I was using, rather than just diving straight into the code
You nailed it.
It's literally þe IRL perverse incentives case where a company payed bonuses per LOC and found devs were just spewing unneccessary verbosity which made products slower and harder to maintain.
Typing the code isn't hard.
Figuring out what code to type is.
Coding is problem solving, and solving problems can be very hard depending on the problem you're trying to solve.
And indeed figuring out what problem you're actually supposed to solve. People assume they can just give an LLM the same spec they'd give a programmer, and that doesn't work, because the programmer will figure out all the hidden shit they omitted from the spec but which is actually absolutely critical to its function. They'll also anticipate future refinements of specs and how to leave room to accommodate those changes. Etc.
I really feel like the author of this piece got this strawman in their head and didn't bother looking into how people saying these things are actually using them, because most of the people I hear saying them are themselves programmers, and they're not trying to say "my job is trivial." They're saying "the thing the LLM does fast is not my whole job. it leaves out all the important stuff."
Yeah, there was a running joke in our comp. sci. program that “we thought we’d make great comp. sci. majors because we had the typing skills (and desire).” The major says as much, you gotta understand the problem to work out a solution… and a solution may not be the solution — since we’re human so… get learning.
I appreciate the intent behind that sentence, and the problem is that is written (or said) by people who don't understand coding.
Syntax was never the hard part. Code syntax is a set of rules that you can teach a machine and it's "easy" enough for an LLM to grasp it. The problem here is that this phrase does a "code = syntax" but ignoring all the difficult things that actually are in the code. Architecture, design, tradeoffs, translation of vague requirements into concrete software components...
All of those things are terribly hard, and the reason why many LLM-first coding projects get abandoned at 70% and then companies need to hire a Software Development consultancy to mop up their mess.
Interestingly what I've said here ☝️ ️comes with an interesting implication. There used to be a type of software "engineer" that couldn't actually think through a problem and implement a good software solution. They were valuable because they could refactor, write code, but not think through a problem. These are the people who have the most to lose at the moment, and also the ones that find the least value on AI, because AI only does really well the single thing they could do.
That style of software developer used to be called "monkey coders".
Employing "monkey coders" because they are cheaper is a great way to end up paying a lot more money over the long run because their work is unmaintainable, ureliable, not robust and stupidly hard to be upgraded to implement new requirements.
Which, if you think about it, it's pretty much what you get with AI code.
And yeah, totally agree that these are the people who are most threatenned directly by AI at the moment. Then again, they were the ones most threatenned by outsourcing already (to India especially, since when they grew massive as an outsourcing place for software development they started hiring tons of people there who had no skill whatsoever for it and would never have gone into software development and were pretty bad, so most coders based in India were eventually this kind of code writter).
Hiring "monkey coders" was always the product of bad management: they looked good on paper - cheap, made lots of code, bums on seats, often the kind of person who worked long hours (which in low efficient management cultures makes a manager look good because of "making their people work hard") - whilst creating massive costs spread over time and hitting everything from production downtime costs to future system improvement costs. In some ways the mass replacement of developers with AI is born from the same management incompetence as outsourcing, which is probably why it is hitting the US so hard.
Which brings us around to how, indirectly, even good software developers are right now threatened by AI - the kind of incompetent manager who thinks code lines is a productivity metric aren't replacing just "monkey coders" with AI, they're cutting down head-count with no selectivity or even replacing first the more professional coders because they're the most expensive.
This might not be sustainable in the mid and long term because AI, like "code monkeys", just piles up massive less obvious over-time costs on software systems (I expect a lot of companies will go under from this shit) and some are already getting desperate for the kind of professionals that can fix their self-inflicted AI problem, but people who aren't prepared for up to two years of being out of well paying software development jobs (so, most people) are getting screwed instead of aligning themselves to really profit from the wave of post-AI "oh, shit or systems are unreliable shit" work for senior types that's just starting, plus if indeed as I expect companies will fail due to this, the Tech boom will be over and there will be fewer positions than there were 2 or 3 years ago.
Whoever you are, don't outsource your understanding, judgement, empathy and taste to AI. Don't abdicate your responsibility. Don't be a meat proxy.
By expanding the ability to program to people without the knowledge of how that code works in the first place, it's naive to expect that most uses of AI in programming will be informed uses by senior developers able to recognize errors and security flaws.
Such a pro-AI position also ignores the enormous amount of theft that these tools are built on.
the ability to program
people without the knowledge of how that code works
Ain't that the biggest oxymoron you've seen today.
They are not given the ability to program, per se, in my opinion. They are doing something else.
Maybe I'm misunderstanding your comment though. Not sure if you're referring to the code output when you said "that code", or some other code. Please let me know if I got it wrong.
Such a pro-AI position also ignores the enormous amount of theft that these tools are built on.
Or, less likely, it could be that person knows and just doesn't care. I certainly don't because I believe intellectual property is bullshit.
It's one thing for individuals (particularly those without the means of paying) to pirate content that its original creators have already been compensated for and now exists to milk money for an IP holder for a century; it's another matter entirely when AI companies with multi-billion dollar valuations scour the internet for content to include in their models to then profit from without permission from or compensation to the millions of people whose work they depend on.
The problem in there is corporations. AI is just the means of the dickery, not the cause.
I would also go further and say the root cause is capitalism, and that someone being able to eat or be housed should not be based on whether or not their art has met the criteria for corporate purchase. But I digress.
Yeah that's the thing: I don't believe it's wrong to profit from people's content without their permission, because I don't believe they own that content after they share it with humanity and I absolutely don't believe they should get to enforce that "ownership" via state violence. Everyone should get to use anything they want in derivative works, whether for profit or not. The fact that this could plausibly affect people's livelihoods (but IMO wouldn't; if there were significant profits in IP "theft" corporations would already be doing it) is a failure of capitalism and frankly not the reproducer's business.
The entire AI industry is built on IP theft; even if you don't believe in IP ownership, companies like OpenAI and Anthropic rely on their ability to scrape the internet for content, with only largest of publishers having the resources to sue for anything in return.
So long as copyright is being enforced at the individual level for consumers, large corporations shouldn't be allowed to get away with infringing on it for profit.
So long as copyright is being enforced at the individual level for consumers, large corporations shouldn't be allowed to get away with infringing on it for profit.
Sure, but my conclusion from that isn't "IP law should be enforced on the big corporations too;" it's "IP law should be abolished and also down with capitalism." Why should I want an unjust law to be enforced even more vigorously?
One of the big reasons IP law exists as it was to encourage people to not hide innovations and keep them secret to themselves. If anything you (not you specifically as a person) spend time and resources to create can be trivially taken away from you if people know about it, you then either have to keep it secret or you simply have no incentive to make anything new. Now if your argument is that current IP law has been totally perverted and abused to extreme levels and should be completely redone, you'll get no argument from me. Just killing IP laws entirely would pretty much break our current society. Maybe out of that chaos would come something better, but make no mistake, shit would be fucked in the meantime.
As an artist that see his work opportunities reduced by the IP theft, stfu, and maybe evenn go kys.
I mean, a key element of the anti-AI movement is that AI "steals" art, but I fundamentally believe in that art (and ideas) can't be owned and therefore can't be stolen. Ditto for code or what have you.
They CAN be owned. Particularly art.
And I say this even when I'm anti-copyright and pro-copyleft, but even then I don't want to lose my means of work and subsistence and my moral rights.
Also, much of that gets even worse when AI gets trained with works that you didn't even published yet, but that a hidden background AI process scraped in the platform you used to backup, plan or talk about that works. I'm talking out of experience.
AI training is data theft not IP theft
It can be both...
Yeah, it can be both, like, if you want to argue that in our current capitalist society people need to be compensated fairly for their work, I'll hear that argument, but I don't think it's the best or most accurate framing. I think it's just as obnoxious reddit made a deal with google to train on my (and everyone else's) comments throughout the website as I do the possibility it was trained on my artwork, and I'm not alone in that.
The data theft is another story, but there's clearly an IP theft angle to anti-AI arguments, as seen in the other person response.
His other comment applies just as easily to to stolen medical images, like this woman's , as it does more creative works. It feels violating either way. Virtually no one is worried about Mickey Mouse appearing in data sets, but lots of people do feel wronged when their emails are trained on without permission or compensation, even though they're not really IPs.
Code is integral. Everything they add to it, and build around it, is to support the code. Code is the God in the machine.
My oven is a bunch of components. I might be able to do a 5 dollar soldering fix but now need to buy a 100 dollar component to replace the one that's not working. I guess I agree that soldering a wire or replacing a component requires the same amount of intelligence, but it's not he same "system".
How do we thrive?
Accept that change happens. Be equal parts curious and critical about the new stuff.
That is not the solution. One cannot thrive if one cannot be seen or has been discarded as a relic no matter how up to date that person is. They will never be granted the opportunity to thrive as they have before as an employee. Their only hope to thrive is if they (magically) gain all the skills and networks necessary to be an entrepreneur that can do it all themselves. Nearly a unicorn.
Meantime while trying, they burn through what savings they have on the hope and dream of "being relevant again" and have about a 5% chance of success.
Maybe the author is misunderstanding the gist of the original article. Regardless, he raises an obviously accurate assessment of those who hold the hiring power. When I was recently out of college learning my craft, it was a common sarcastic refrain of either, "What could be so hard about it, it's all 1's and 0's" or "What's taking so long - you're just typing on a keyboard".
This has been a problem since long before I graduated from college (when classifieds called for 10 years experience on an IBM system that was released two years ago) (see, things don't change so much - names and places, sure, but not much else). People who are in leadership positions, who think they're better and smarter than most everybody else, frequently belittle those who do the grunt work, both physical and mental. It's gotta be a corollary to dunning-kruger theory (or maybe an example of it).
Remember that story about the chalk mark engineer with Ford? Chalk mark 1$, knowing where to mark 1000$ ? Same with code. "Code" is easy. Knowing what to write, why and where, that's the hard part. LLMs have somehow managed to automate the code part, without the abstraction, at least in an error proof way. I don't think "coding isn't that hard" is insulting, and I don't use C++ because I think it's hard. But it's not because writing something is hard, it's because writing precisely what is needed is hard.
Anyway, this debate doesn't matter, negotiate better, be active politically to ban stuff or not, complaining on the internet won't do anyone any good. I know you're emotionally invested in this, just... breathe and do something else? Idk. Also I'm not your enemy on this, so no need to attack me.
Cooking is easy. That's not an insult to a chef.
"Code was never the hard part" is probably made up by someone who never had to program anything serious.
"Writting the code was never the hard part"
It's figuring out in detail what the program is suppose to do (i.e. Requirements), how it can and should do it given the technical constraints of the available deployment environment and performance & reliability requirements (i.e. Technical Analysis) and how it all gets structured from the highest level to the lowest level so that bugs are minimized, performance is suitable with the appropriate margin to absorb expect unexpected problems and costs for maintenance and future requirements implementation are low (i.e. from Technical Architecture and Systems Design down to Software Design) that are hard.
And I say this as somebody who has done all of those professionally, plus the coding (oh, so, so much coding) for systems of all kinds and sizes in various countries and industries, including some mission critical high performance distributed systems (which if they failed would have cost millions of $$$ in lost business income).
Fly by the seat of their pants coders who have never worked in a properly professional environment have no fucking clue just how much more there is to it than "coding" to go from no software at all to "reliable and robust software system that serves existing business needs".
A lot of "coders" are like I was in the beginning of my career: they think they're the shit, know nothing but a very limited range of work environments which they think "that's how things are done" when those environments are actually, amateur hour, every hour of every day, every day of the month, every month of the year - they're basically at the peak point of the Dunning-Krugger curve for software development knowledge.
For me, that is all integrated part of "programming". You missed the documenting the code part, but i consider this as an oversight.
It says a lot that you think a coding good practice like "documenting things in code" which is at the level of using descriptive variable and function names, should be in the same bucket as structural non-coding processes (which are often entire professionions or very senior professional branches) like Requirements Analysis or Technical Architecture, both highly-complex things (the latter being the very top in seniority of the technical career track) which are non-existent in a formal sense in improvisational (read: amateur as fuck) "programming" companies.
You're making my point on the whole Dunning-Krugger thing.
Not only in code. Documentation for the end user (or at least halfway there, the final document is done by a separate department), is important, too.
There is a reason that my job description is "Embedded Systems Architect". But I see this complete packet as "programming".
You missed the documenting the code
Your words.
As for your job title, don't take this badly but "Systems Architect" is not at all the same as "Technical Architect".
If you're actually designing or at least tuning software development processes and coding standards across multiple teams (so, not just optimizing how teams work but also optimizing cross-team work), you're a Technical Architect.
A Systems Architect, when the title is properly used, just means that you're designing software whose operation spreads across multiple platforms (so, for example, multiple tiers in a multi-tier system).
Also there is quite a range in Systems Architect - knowing how to code in two or more platforms (say, STM32 and some Android, to make a bit of home electronics with a microcontroller be controllable from a smartphone) is not at all the same as knowing how to design a high-performance distributed system running in multiple machines, integrated with multiple external system working for ten/hundred of thousands of client front-ends and supporting things like Distribute Transactions so that any failures don't leave half-complete operations.
You can be a Systems Architect and be isolated form most of the concerns of the software development out there. especially if you're a team of one developing the software side of products based on some marketing person's idea of what customers supposedly want.
Unsurprisingly, Technical Architects are non-existent outside large companies and even there they're pretty rare.
Again, still making my point on Dunning-Krugger.
Oh, they "come home to roost" almost immediately - you just don't see it because whole teams are doing everything they can to hide it or ignore it - nightly manual data update statements, etc.. Here's just one real example.
In my last (read: final) job as a senior software engineer, I discovered dozens of serious problems with the system I was assigned to "maintain". They ignored all of them - wouldn't let me fix anything. Meanwhile I was responsible to solve production problems on the daily (duplicate data, insert failures, performance slow-downs, etc).
It wasn't long before the fact those problems weren't going away that they became problems I "caused". Meanwhile, all the fixes I wanted to make were ignored. I had one problem I dissected and and gave my boss a brief write-up of the scenario. He told me I needed to do deeper analysis. When I came back a few hours later with a considerably more detailed explanation, he didn't read it and complained of a "wall of text", which he literally told me to write. Then he created a random-number hack to "fix" the problem.
They did not grasp the concept of data normalization and primary keys as they had one particular table that represented two levels of detail (for example, account -> order). They put both in one table and had a code based special update to the "account" number so they would not get a PK violation rather than just fix the data structure.
They had as single database connection open all the time to handle all inserts in a singleton service, then launched as second one on the same database to process messages faster - and couldn't understand why it didn't double performance.
The main routine had a cyclomatic complexity of 360! I shit you not! And everybody agreed it was "95% working" even as we continued manually fixing (the same) problems daily.
Week after week, the customer (internal) would raise more data issues as "new" problems. I'd routinely ask two to three questions about the data set and explain that's the same problem that's been going on for six months, and if we could just get my PR reviewed, we can test it and deploy it.
All these problems were in a single service.
I was let go not long after the 1 month probation they soon initiated and told I was not performing at the level of a senior developer.
This is how delusional these people are. They refuse to acknowledge their flaws even after hiring someone specifically to solve them. They blithely call their monstrosities "successful" while committing many staff to late nights and weekends "managing" it.
It was, except for the fact of ageism, the shortness of the tenure, the already accelerating developer job apocalypse, and the soul crushing insult of the experience. After a year, I stopped looking for a job and felt a huge weight lift off my soul. My career is dead, and I stopped searching when I realized I lost all joy in the craft. I just didn't want to do it anymore. It is almost like the way Alex in A Clockwork Orange could no longer listen to his favorite musician, Bach, after his "programming". I find myself recoiling from it.
Define "serious".
An OS, a compiler, any complete application. Or at least significant parts of it. And I mean programming from A to Z: defining, detailing, implementing, verifying, documenting.
any complete application
An OS, a compiler
Quite the hefty examples lmfao, holy hell. Guess all of us "regular" software engineers in the business are just plebs huh.
I've wrote my first pre-emptive multitasking OS as a teenager. I also wrote my first compiler back then. I've worked on everything from industrial controllers to a Cray YMP. And I've forgotten more programming languages than most hacker kids can list. I consider myself as a seasoned programmer.
Right, you're a little more than a seasoned programmer, buddy. You are extraordinary.
You can't expect "an operating system" or "a compiler" to be the bar for "doing anything 'serious'" 😂
Don't take this badly, mate, but you sound like me when I was a "kid" thinking I was truly the shit for all my technical achievements as a self-taught programmer.
Absolutely, really impressive 1 in a really-big-number kind stuff, just the most pure technical track imaginable and not the same as understanding software development the process as whole, at all.
Decades later, 3 countries later, several industries later, various different environments and kinds of projects later and all sizes of company later, I've figured out that they pay us the big bucks to make software for OTHER PEOPLE, to serve THEIR needs not ours needs and certainly not for our personal enjoyment, though a good dev will always find some enjoyment in cracking complex problems, IMHO - from were a fuckton of constrains and dependencies on what and how you make it and whom do you have to work with are born - and if you want to achieve something that's great in more axes of greatness than just pure technical impressiveness you need to actually learn how to effectively work in a team and with other teams even non-technical ones, including, beyond a certain point of experience, how to empower other more junior people in your team rather than just be pissed off at how little they know.
(And I don't mean going into the Management track, I mean staying the Technical career track and still progressing as a Software Engineer).
And don't get me started on the engineering-style concerns of software design around software live cycle in production and how to prepare for expected future directions of change.
Mind you I've crossed paths over the years once or twice with people who never moved beyond "technical excellence" as their one and only metric for software development (typically "rockstar coders") and they were invariably miserable people who bitch and moaned about "lusers" and how other developers don't know how to use the (not really properly designed for robust usage by people that can't read your fucking mind) libraries they made.
Unless you find yourself a nice niche where you can be a solo rockstar hacker, technical excellence is only a good software development metric up to maybe the 5 years experience mark. Beyond that, unless your career has stagnated you're supposed to be delivering the results the customers need to the customers and doing so in complex environments in cooperation with various teams, some of whom don't at all understand most technical language and certain don't have a fucking clue what "pre-emptive multitasking" means.
That try, the hard part is algorithmic and avoiding archictuctural traps and experience. Pissing code which didn't work or look like it work but don't is easy.
I won't miss writing code. In part because I still do when I feel like it, but also because most of the time it is extremely boring. A mere mean to a goal for which you probably have the path mapped out in your brain already. It is basically just busywork at that point.
There are these moments where you need to squeeze out performance, where you change something about the UI or generally visuals and get a pleasing result, or where you discover a small tweak that collapses a lot of complexity you originally planned for - but that is, in my humble experience, not the norm in programming. The vast majority of code is boilerplate or stuff you have already written a thousand times in some variation. The more experience you have the worse it gets.
I was ecstatic when I realized how good agents have gotten, realized how I could focus on design and architecture and with small corrections, get more than adequate software. Because for me personally, programming is the least fun part of software development. Most of the time that is. And you can hate it all you want, but programming is a skill worth nothing on its own now, and it will never be again. You can take solice in the fact that you can still do it for fun if you want to.
idk, code was always written only once, but it will always be read many times. Writing code with LLM centric way and just focusing the high level gets hazardous pretty quickly, since somebody actually needs to understand the codebase deep down (or at least the relevant part) when something goes wrong. When you have 100k+ line codebase with multiple contributors with LLM it can very quickly turn into a black box, which nobody understand anything deep down anymore and everybody are more and more incentivized to use LLMs to interact with the thing to get anything real done. Then it's couple hallucinations away from turning into a fragile mess, where things break unexpected and nobody knows why.
Programming on its own was never what got you paid.
What OOP refers to is not "writing code" but "designing the code." Everyone can write a book. Even I can. It will be a fucking shitty book, because I don't know how to create suspense, give depth to characters, or any of that stuff. But it's still a book. Writing code is easy. Writing good code is hard. If you want a program to fetch the current outside temp from an API you could throw together random lines of code that vaguely does what you want that you found on stackoverflow and iterate until it works. Will it catch edge cases? No. Will it output in a pretty format? No. Will it be maintainable? No. Will it be the next Facebook? Hard no. But you did write code.
Writing code is easy. Writing good code is hard. And that is why we have door stoppers called "Clean Code" to help us on our way. You might notice that the "how to code" books aren't much thicker than a a pamphlet. But if it ever as much as touches on the topic of good code it will make for a door stopper worthy of a nuclear bunker's entrance.
One thing to know about Clean Code is that the author is a hard right MAGA dickhead now, so if that is important to you then seek a more modern source of advice. A lot of the things he advocates for about code obviously aren't dripping in right wing rhetoric, but if you look at his socials you might feel quite turned off.
Worth saying the comment I'm replying to is not wrong IMHO
The finer details of the coding advice in Clean Code is also insane. There's a good summary of it but I forgor where
Possibly you're thinking about https://qntm.org/clean
I have been happy to recommend Sandi Metz books instead.
99 Bottles of OOP and POODR are excellent books and include many of the same ideas.
the advice still checks out though imho. dont treat it as dogma, but as useful guidelines.
maybe dont buy the book though
I don’t know how to create suspense
I must pretty good at that, since I never know if my code is gonna crash until the very end :D
If coding is easy...
Think of it like DJ'ing.
The rock bottom level of being a DJ is putting a playlist together and playing it. Anyone could do that, you've already probably done it on your phone. Maybe even grouped songs by genre or year if you're feeling fancy.
But a good DJ does more than that. They arrange the songs to give a particular vibe, they play around with the transitions to keep people in the music, they may even remix songs or their entire playlist on the fly. They're artists in their own right, making more than the sum of what went in.
... And that's the same as a programmer. Anyone can bumble their way through to writing code - but is that code anywhere close to optimal, properly annotated, maintainable?
GenAI throwing out thousands of lines of shitty code that has to be bug-fixed multiple times over by a developer is a waste of time, energy, computer parts, and money.
@codeinabox When I say some variation of "writing code is not the hard part," what I mean is this: I can get a 9 year old to write a program that compiles and runs. A literal child can achieve "writing code" within an hour. That specifically is my bar for "writing code" because, by definition, that's what's happening. However, it's obvious there's a vast difference between what a 9 year old can do in an hour and what a professional software engineer does with 20+ years of experience.
@codeinabox My goal in saying "writing code is not the hard part" is to assure people that using a limited visual scripting alternative or "no-code" tool is not the magic bullet they think it is and in fact it will hold them back more than anything. It's not a statement of "it's not impressive to do this well" it's one of "do not be so afraid of this skill, because it's not as unapproachable as you think it is."
@codeinabox The problem with AI being trained on our code is not because the code has inherent value. In most cases, the code is being distributed for free, after all.The problem is that it's a violation of licenses - an expression of an author's desire for how their work is used. If an author's work is an extension of themselves, then violating a license is a violation of their autonomy.
If coding is easy, how come programmers were in high demand, and have demanded large salaries for years (even before ZIRP)?
Because programmers seemed magical, mythical, able to create insane amount of value by typing a few words onto a screen. You will see this if you just go and look at how any other industries work. Even just using basic shortcuts puts you into like the top 1% of computer users, that’s how inefficient most people are at working.
Why was there so much stress, overwork and burnout even before AI started churning out 5000-line PRs? Why did companies seek 10x ninja rockstar coders and subject them to leetcode interviews—surely, a junior fresh out of college could churn out something if it's so easy?
Because developers are asked to do more work than any other office job. The value you create as a developer is 10x what a product manager does. You can do a product manager’s job, they cannot do yours.
If coding is easy, why do we have doorstoppers like Clean Code and The Pragmatic Programmer?
Once again, because programmers are obsessed with efficiency and productivity. Having a book about something doesn’t mean jack though. There are books on how to walk better, that doesn’t mean walking is hard.
Why do we have bootcamps or even whole college degrees dedicated to it?
These are dumb questions, there are degrees for everything.
If coding is easy, why are people angry at AI (or anyone else) copying their code? Why do they act like they've poured their sweat, soul, and copious amounts of time into something so trivial?
People are angry that AI isn’t “following the rules” while simultaneously destroying the planet. People believe the bullshit that LLMs make up and then say “oh, your job was easy the whole time”. No, coding is easy. The rest of it wasn’t. Coding is meaningless without good architecture, good requirements, good UI/UX.
If coding is easy, why do many now feel like their identity and professional purpose are being stripped away from them?
… because the jobs are being taken away and distilled down into just “coding”. How is this hard to understand?
If coding is easy, why is software so damn buggy?
Because business doesn’t (didn’t) care about writing code, they cared about making money. Also the number of bugs has nothing to do with how easy something is. Walking is easy, that doesn’t mean you don’t ever roll your ankle.
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? Why aren't they getting paid more than the developers?
Yay! Good questions now! Yeah why do programmers have the only job where they’re quizzed over and over again? Huh, maybe it’s because every other industry thinks the hard part is coding (hence why this focus on coding)!
If deciding what to build is the hard part, why aren't market researchers, usability experts and—hell, customer success—considered rockstars in a software company?
The output of a programmer is directly visible, the output of pretty much every single other job in software development is not. What, are they going to start measuring how many tickets and meetings your scrum master makes?
If implementation is easy and finding demand is harder, why are programmers upset when the salespeople promise a new feature to a customer to close the sale? They've found a genuine demand, something people will pay for!
Who the fuck ever said implementation is easy. Coding is easy. That’s not implementation. The code has to fucking do something. That thing has to be tested. The sales person probably didn’t gather actual requirements before promising the feature, so whatever the customer thinks they’re getting is definitely not what they’re getting.
You can literally see that actual coding is easy when you understand the requirements by looking at tiny development companies that have made a single product where they give customers enormous power to choose new features. The new features come out incredibly quickly.
If coding is easy, why doesn't everyone just build ten variations of a thing and see which pans out?
Dumb question. It’s hard enough to sell one product, much less 10. Think about any normal software user finding out there are ten ways to do something. Even some programmers hate it, Python claims there’s only one right way to do any given thing.
Some software developers do say “I don't write code, I solve customer's problems”. But then they turn around and start to opine on monads, memory safety, and DRY principles, while their understanding of the customer is a made-up “user persona”, and they think “affordance” is the money your parents used to give you on weekends so you could go out and have a good time.
Yes, they like to talk about the fun part of the job, not the non-fun part. Big surprise. Also turns out they like to optimize that part to make it more and more fun, because it’s become too easy.
What is important?
You’ve switched the topic. It was about what is hard, not what is important.
But do recognize we're in the middle of an industry-wide tectonic change. We need to figure out how to adapt. We need to understand what is likely to change and what never changes.
No we don’t. This is like saying we need to learn how to adapt when every country has nukes and has started to bomb every country constantly. We need to stop bombing, not learn how to live with it.
Users will always want more and be prepared to spend less
So then we definitely should stop using LLMs.
Programmers have been in the business of disrupting our own industry since the beginning. Nobody uses punch-cards any more. Very few people need to code in assembly, or COBOL. Those decades spent fighting memory bugs in C or C++, with the scars to prove it, are worthless in the age of Rust, Go, Python and JavaScript.
Difference is, those things were an improvement. LLMs are a step backwards.
Accept that change happens. Be equal parts curious and critical about the new stuff.
I love change. I don’t like destroying the planet. It’s even worse when it’s of absolutely no benefit to anyone but billionaires. This isn’t change. This is destruction of the planet.
my argument is that i couldn't code real useful programs myself my whole life, and i tried several times, fail computer science in college etc, and now with claude im actually getting these things built -- and there's a lot of pitfalls a few times i had to tell claude to start over but i guess i feel like a paraplegic who could never walk but now with an accessible car i can actually drive and im sorry that's putting a lot of horse carriage drivers out of business.
and im my IRL circle, a couple of my friends who were great at coding in college and are now master coders, they're not complaining about it at all -- they're able to spin up ten agents at once to do things much faster than they were able to three years ago. they all have startup side businesses now on top of their full time industry job, only possible due to coding AIs helping them get shit done faster.
That doesn't address the climate or jobs question though, both require organizing
Let me say this how it sounds to me:
I couldn’t build weapons of mass destruction my whole life, I tried to build nukes several times but couldn’t. Now I have a robot that just does the nuking for me, while I can build other things. My other friends don’t seem to have a problem with the nuking, because they get to shoot their guns faster.
I’m sorry, but just because you can do something doesn’t mean you should. I could do a lot of immoral, unethical, horrible to humanity and nature things and yet I don’t.
I mean the nuke analogy is quite stretched
In what way. That new AWS data center is going to kill about 7k people just in CO2 emissions per year. Just 21 of those will kill as many people as the Hiroshima and Nagasaki bombs per year.
Well by that logic i was destined to go to hell a long time ago when i started driving. My personal annual commute to work creates ten times co2 emissions that the entirety of the energy google used to train chatgpt.
AI datacenters account for less than 10% global co2 emissions. Of course ten percent more global warming is bad, but i personally have several things that contribute more than using AI ten hours a week.
Huh? Google doesn’t own ChatGPT. And no, your personal commute to work isn’t a millionth of a fraction of what is used to train these models.
AI datacenters account for less than 10% global co2 emissions. Of course ten percent more global warming is bad, but i personally have several things that contribute more than using AI ten hours a week.
No, no you don’t.
I like to distinct between programmer and engineering jobs: first is the code ape, that LLM coul theoretically do (still too verbose though) with some hand-holding from a engineer.
The second is creating the solution; how A interacts with B on condition C in environment D.
Sad part is, with how broken the web currently is (each site has to implement every feature themselves), there's lots of code ape jobs.
And btw, execs love LLM because they excel in the same task; creating lots of sentences with a minuscle of meaning and confidently asserting half-truths or outright lies. They have a "it's just like me!" moment. But both are bad at creating solutions.
programming is not hard. translating from human desires into a real project is hard. anyone who has read a project “plan” know what i mean.
What did you read of the article? Of course programming can be hard. Some of the brightest engineers and academics in the world have spent years on problems.
At that point it's basically Maths - things like the Travelling Salesman problem - and the people going after such "programming" problems are actual Scientists and even then the problem is not in doing what AI does - writting the code - it's knowing the logical solution which then determines the right code to write.
So your what you say doesn't really contradict the previous poster - some of the brightest engineers and academics in the world have spent years working on problems - so figuring out what's the right code to write - not actually in writting the code.
I suppose the only point of conflict is were the boundary between "programming" and "maths" is - if one think of it as "writting code" then both of you are saying the same.
Its not that hard. You read the project plan and start translating it into a list of todos. As you make the list, questions come up. Write those down. When you are done writing your todo list, you send your list of questions to the relevant person, then start working on the todo list where you don't have questions, or where you are decently sure what the answer will be. As you work through the implementation, you will come up with more questions for edge cases. Send these to the relevant person as well.
Ideally, these questions will be sent as an enumerated heirarchical list, and will be answered as such in turn. Every once in a while, it is more useful to jump on a call to figure something out quickly.
I mean it depends on the todo.
if to-do 1 is Determine all positive integers n such that the concatenation of n and n^2 in base b uses at most k distinct characters, for fixed b and k - you might be there a while
Except there are three relevant people and they all contradict themselves daily.
That's a stupidly incompetent way of doing software development.
If the people upstream are fucking professionals then it would be very rare than the edge cases are discovered at the coding stage since that shit can baloon into massive rewrites and even redesigns (if, for example, it impacts throught to multiple system tiers) which in turn means productivity is shit and the resulting system is a big fucking bug-riddled unreliable mess because of all the going back and all the hacking of "unexpected" (but totally expected if people did their fucking jobs) things into the existing design.
Further, the constantly ping-ponging of questions up and down the layers during development (especially if at the other end there are business user for whom the software is being made) adds a ton of overhead, not to mention needless waiting periods.
I bet you never worked with a Technical or Business Analyst or even in a project managed by somebody who was not a reactive "shoot from the hip" manager.
PS: And, yeah, I'm pissed off just thinking about that crap, because in my career I had to learn the fucking job of Project Manager, Technical Analyst and even Business Analyst after I figured out A LOT of the unecessary problems, blown up deadlines and stress I was getting at the systems design and software design levels were the product of that part of the work not being properly done or at all, so that shit you're describing as if that was the normal way of doing software development really makes my blood boil - by my professional standards that shite is amateur hour, every hour of the day, every day of the month, every month of the year.
Very few people need to code in assembly, or COBOL
But those who do are paid the big bux, that's for sure. Many big banks still have their backend off of COBOL code originally written in the 90s, only with flowery UI updates over the years.
There was a period when that was true and companies were literally bringing retired programmers back to do it, but that was over 2 decades ago during the Y2K period when really old systems done in COBOL and running in mainframes had to have the dates problem fixed before the date roleover came in 2000.
I guess when compared to FAANG/Silicon Valley salaries you are probably right.
Cobol developers are typically developers who weren't good enough to learn other languages. Their computing knowledge is often quite limited to their mainframe. I've never met one who was competent in anything else.
They're not making the big bucks.
Programmers say it and I doubt they do it to insult themselves. Code was never the hard part, it was just slow
Programmers automating coding then CEOs forcing everyone else to use it is an insult to programmers.
Some fuckers that built AI and fucked their own industry need to take some responsibility here. Some Sloppenheimer out there fucked the market up, one of our own.
This to me seems to be a very odd interpretation of the phrase “coding was never the hard part”. First, that doesn’t mean that it’s not hard, just not the hardest. Second, and more importantly, they jump to deciding what to build being the hard part as if those are the only two things?
I have used a variation of this phrase (I usually say coding was never the bottleneck at work) but I’ve never even considered deciding what to build as to be what the bottleneck is.
First, I should say by coding I mean taking a concrete design for a change and writing a single pass at implementation. Modern models to this extremely quickly with up to good performance depending on exactly what you ask them to do.
The things that take up more time in software development just for engineers, leaving aside things that design and pms do.
- Coming up with that concrete design for a change (humans may do this in many ways, one of which is writing the code without a plan and refining)
- Architecting the system at all levels. This one is continuous and huge. A good architecture will easily adopt changes as they come, but you can never foresee all possibilities, and even if you could, there’s usually other people around you who can’t, which brings me to
- Communicating the system design and coming to consensus about aspects of it. This is mostly applicable to teams and is the primary reason individuals can often outperform entire teams. It’s also one reason why throwing a second LLMs at a problem doesn’t solve it at twice the rate. You’ll never get linear scaling
- Upkeep tasks: what needs to be replaced and fixed now, how do we best monitor and alarm to figure this out in the future.
There are “what to build” aspects in here and many engineers also spend time on the overall what to build questions, but the way the article was talking about it seemed very high level.
Coding isn’t easy, it’s hard. But it’s also not usually the bottleneck in software development.
all 66 comments