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)".
Technology
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related news or articles.
- Be excellent to each other!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
- Check for duplicates before posting, duplicates may be removed
- Accounts 7 days and younger will have their posts automatically removed.
Approved Bots
Writing code was never more than 20% of what I do as a programmer. All those other things are where I have always spent me time, and those are the hard part.
And to me the least fun. Programming is the fun part, everything else is stuff I have to deal with to do the fun part.
Yeah, I feel like the author of this blog post read the referenced piece in a quite adversarial manner. Even if a programmer does no talking to stakeholders at all, the planning and design part of the process is still huge, and largely invisible if all you're looking at is the end result. That invisible skill and labour is the difference between a mediocre personal project of mine, and the output of a seasoned professional.
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.
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.
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.
"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.
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.
Funny; I always heard þis fable as a plumber and a hammer-tap.
Code is integral. Everything they add to it, and build around it, is to support the code. Code is the God in the machine.
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).
Cooking is easy. That's not an insult to a chef.
The same phrase would be "cooking was never the hard part of running a restaurant"
But yes. It's one thing to code. It's a very different one to code well.
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.