Why is everyone trying to replace Software Engineers?
toddle.dev
toddle.dev
0 - https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...
Software engineer or Software developer are much better terms.
Adding to this point, LLMs won't fully understand the problem, so they're simply incapable of developing complete solutions. I've had a lot of success with these tools in developing functions, but at that point I've already architected and designed the solution. Even so, it saves time. These should be regarded as developer productivity tools, not developer replacement tools.
The code base I have I would love to be able to just give some AI free reign and learn the structure since a lot of it is fairly repetitive; I know it would be so easy to say "hey add X just like Y" and it would be able to do it easily.
My more experienced/senior colleagues all say roughly the same. It’s great help for our juniors though. They learn a lot and are more capable on their own with the AI assistance.
It’s improving all the time though, so I’m not writing it off at all. I am developing an evaluation suite so I can keep watching the progress in a systematic way..
Sounds like something that should be published on github
Code mods like upgrading from python 2 -> 3 could also become possible.
"Software development" will still exist, but if productivity tools become so capable that your PM can crank out a dozen variations and iterate on them solo, that will lead to developer replacement.
Ten years? Maybe. But our workflow will have changed to accommodate AI being the primary code generator.
Twenty years? The new workflow from ten years will be standard and AI will be able to competently do all code generation.
Will AI replace software developers? Yes, and many of those developers will have transitioned to new work driving the new workflow.
By the time AI is ready to replace the developers driving the new workflow, then there's very little at that point that humans can do, and AI can't, without assistance from humans. In other words, replacing software developers isn't our biggest problem because by the time AI can do that, nearly all humans are replaceable.
I am currently employing 6 software engineers in my company. If from tomorrow they were 10x more productive then I would employ 6 software engineers because that is the budget I have.
Their increased productivity would lead to a faster growth and I would then have budget for more.
If you increase the productivity of software engineers then people will hire more software engineers not fewer.
Code is just a medium used to build software, the real value comes from analyzing problems and finding solutions.
"Replacement" is smoke and mirrors at this point; anyone who seriously tries it will quickly fail, with today's technology.
We currently have an offshore dev team that is frankly just a money pit. Still, the C levels keep trying to make us use them and it's never been successful. Our offshore devs are simply incompetent because we hired for cheap and not quality.
Teams across communication divides like this must own their own piece of the system with a small, well-designed, well-documented interface. Conway's Law is in extreme force in these situations and must be respected if there is to be meaningful success.
I think you're right that LLMs have similar issues. There are no timezone issues, but communication is still very difficult on anything that isn't completely concrete. I think this is part of why they can be good on 1-10 line snippets, but get much worse if you try to get to dozens or hundreds of lines of code that aren't filled with boilerplate and redundancies. Taking that drudgery off our hands (where we can't eliminate it) is a real productivity win, but it's a far cry from replacing us.
> CEO: Fantastic! I've already fired all of the doctors and nurses, how soon can it start doing surgeries?
> Scientist: ...
A better metaphor for software is like writing a book. Everyone sees writing a book as borderline undoable, and the expectation is that it takes months and months. I think that software and writing have a lot in common (including lots of text, and even the verb used), and that explaining ourselves as book-writers would help set better expectations.
I would think the opposite. Surely everyone thinks they could write a book?
Software is working great: Everything's working great, why do we pay you again!?
Software is broken: Everything's broken, why do we pay you!?
They (CEOs and executives, shareholders, etc) don't like how much it costs to make software. They think software engineers make too much money.
You (a human) are always a cost they will try to reduce.
You product teams are where your company's value is generated. It is kinda scary to think that so many executives don't understand that.
There's nothing special about SWEs vs any other class of worker. If they can be replaced or eliminated, they will be, just like any other worker.
Think about it -- what's the ROI on creating a robot so sophisticated that it can handle all the intricacies and special customer requests of hair cutting/styling? You're unlikely to save any money over hiring humans.
1) We're expensive (at least for Poland, I can aim for ~6-8k PLN monthly after few years of experience. Other, even civil/mech engineers will have around 4-6k monthly with similar experience) [edit: and minimal wage is 3.5k after taxes]
2) It appears to be replaceable (you can replace us with LLMs to an extent, you can't do that with other jobs)
I reckon we're cheap. Even with the current wages software engineers have, the margins in software companies/industry is large.
Margins, are never large enough for a certain class of owners. That's the unfortunate reality. No one at an average board meeting is gonna say, "Hey guys, let's stay at this 40% margin level instead of going to 60%!"
It's not software engineers per se. It's any labor component that is expensive and "automate"-able. Companies are always trying to optimize labor costs. The theoretical Holy Grail is a company that requires 0 labor input where all profits accrue to the owner of the business.
That's just business 101.
I'd anticipate a concerted effort to make LLMs better and batter at software development tasks until you only need the top 0.5% of developers and maybe a few technicians to support them. That's how you juice profitability.
Says who? How do you know if solving programming problems is not just advanced pattern matching?
The fact that we find most (if not all) of our solutions on SO or talking to colleagues points towards the pattern matching hypothesis quite strongly.
To be clear: I am talking about the programming aspect of the job only, not the other important things (talking to customers/product managers, crafting solutions, etc.)
In many domains, the scope and complexity of software systems goes beyond the ability of a single software engineer to manage. A coordination layer becomes necessary when the number of engineers required goes beyond a threshold (say 5 or so). When the development effort must be coordinated over extended periods (say several months or years), mechanisms to raise capital and manage risk become necessary. These functions are why companies exist.
Consider that a massive increase in software engineer productivity will make coordination unnecessary for many kinds of software. In the market that opens up, companies with expensive executives, middle management and coordination inefficiencies will not be competitive. Smaller shops with a solo engineer or a team of less than 5 will outcompete larger players because their costs will be significantly lower. Massive one-size-fits-all products will be harder to justify when a small dev shop can quickly build or customise software for the unique requirements of a business or niche.
Before the CEOs stop needing engineers, engineers will stop needing CEOs and managers to coordinate their efforts and raise capital.
But with the externalization of intelectual work (which happen without IA, for ex. India tech) I wonder if such solution is possible.
I realize they think they they finally can do it by themselves, or rather by hooking up a bunch of fresh bootcamp devs with AI; and I look forward to watching them crash, burn and come back begging for help.
They're not anymore, are they?
And plenty of developers don't.
It’s the same battle since before the US was even founded. They want slavery, or as close it as they can get.
It will grow the sector and massively inflate the combinatorial explosion of system X system X system. Programmers will use AI as a tool in their tool box -- I already do for boilerplate and tests and explaining code -- and they'll use it to write ever more software to work with ever more systems.
What it may do though is cut the bottom off the field. Very junior programming jobs could vanish, creating more of a learning cliff to really get into it. This is happening in every discipline and has been for a while. It's a real problem for our traditional method of school followed by entry level job. I think the future's going to be some kind of school integrated with apprenticeship followed by internship followed by a real job. Unfortunately that may suck in a lot of ways. Fields that are like that require too much 'paying your dues.'
Giving your product the ability to talk & work directly with the customer seems to me a much more valuable activity than covering all the edge cases that would arise during the development of such a solution with an LLM.
Remember, everything is a function [0] and LLMs support calling them. The trick is having the skill and domain expertise to establish bounded contexts and prompts that align with realistic product use cases and transition between them cleanly.
I know there is a lot of doubt that users would enjoy using a chat interface, but I strongly believe it would be popular as long as it actually works. If it's not well designed and the GUI tools are faster even for a novice, you will have wasted a lot of time/money for nothing.
I don't buy it. I also don't think it'll replace writers or artists. Just the low brow, chum bucket stuff which in programming terms is a todo app or web form.
I think, as software devs, we sometimes kid ourselves with respect to how many of us are working on low brow, chum bucket stuff.
Most of us are not working on GPU based real time physics engines. What most of us do is, well, not rocket science. Even people working in "hard" areas are not really doing the "hard" work. Most game engine developers are using libraries, they aren't developing shaders. Most AI developers are, in actuality, TF or PyTorch monkeys, not real AI experts.
I think devs who move to writing code in areas where problems have not yet been solved will still be necessary. But yeah, not sure devs pushing out another web app will be all that necessary over the next decade.
Developer brains are still much more efficient at holding the different layers of context involved to build systems.
Now you have pneumatic crane, you can move stacks and stacks of things around with ease. You need less strong guys around and instead there is a new need for fewer people that are well-trained on how to operate this pneumatic crane safely. You'll get more work done with less people.
That's what's happening with software engineering and LLM copilots; it's an industrialization of coding. You don't need 20 engineers to get that product out. You need a few that are really good operators of the machinery. Adept at prompting and reviewing code instead of writing code.
( Side note: why does everyone overlook debugging from code automation to new languages etc )
Oh, now instead of ten unskilled laborers carrying shit, each being paid $N, you can have one crane operator getting paid $5N? Wait, why can't we pay him $N? What do you mean, if he fucks up it costs us millions? What do you mean, his skill or lack thereof can double or halve the time it takes to move shit around? Ok, what if we pay him $1.1N?
That's a fantastic insight. There's a popular metaphor comparing software developers to blacksmiths, emphasizing the craft and trade aspects of the profession. Historically, blacksmiths were largely automated out of existence, replaced by highly skilled metallurgists and industrial automation engineers, albeit in much smaller numbers. As we look toward the future, we must consider what the equivalents for software development might be.
You still need people, but you need them to: 1) operate and maintain the machine, 2) check for quality, 3) do some fine, detailed work, 4) do the things that the machine is not good at. The skillsets are just different now and you need less people while producing significantly more output.
Whereas a 4'10", 100lb woman probably wouldn't have been a productive blacksmith, she can be adept at building fine metal parts with the industrial tools.
I'm sure it was brought up before with things like IDEs, UML, etc., etc.
But now these tools are actually competent at generating code and improving fast.
Coding up until now has still mostly been a craft or an art and less of a true engineering discipline.
Don't you need to write your own fair share of code (especially bad code) to judge what gets shipped? LLMs solve the problem of "producing code," but I don't think it necessary follows that LLMs solve the more important problem of "delivering value."
If you're Organization X and are in partnership with Organization Y to produce an integrated solution, an LLM might know how to call some bespoke API between the orgs. But you probably need to have skilled humans to know those APIs' inevitable weirdnesses: unintentional rate limits, resource-constraint edge cases, race conditions, etc.
> Don't you need to write your own fair share of code
Do you need to be good at playing football to be a coach? (Andy Reid)Do you need to be good at making films to be a good critic of films? (Roger Ebert)
Do you need to be a great chef to be a Michelin reviewer or food critic?
Do you need to be a great singer to be a good judge of musical talent? (Simon Cowell)
I think you can tell if some output is "good" without being expert at the doing part. You need to understand the domain, the inputs, the outputs, the range, but not necessarily be expert at the doing part.
In fact, many, many more of us can tell "this book is good", but relatively few of us could write a very good novel. We have a sense that "this show or movie is entertaining", but few of us could produce one!
One of the teams I worked with, our support engineer was extremely adept at reading code. He would trace defect reports to the lines of code and write excellent tickets that deeply understood the root cause of the error because he had a good conceptual model of the design and he was skilled at reading code. However, when it came to fixing the error, he had no clue!
> Can you read a contract and tell whether the courts will accept it
Of course you can, if you understand the law. It's the same with professional sports; a random guy off the street isn't going to be proficient as a coach, but someone that deeply understands the domain -- as I mentioned -- can create and review code for quality without being able to write the code at that level or proficiency.Erik Spoelstra is a great example. Played basketball and had a short professional stint in lower leagues in Europe. Started off reviewing tape for the Miami Heat and went on to be a very successful coach. He doesn't make the plays, but he knows which players and which plays he needs. He knows when a player makes a good play and when a player makes a bad play. He substitutes players as needed for each situation. He deeply knows the domain, even if he can't himself play at that level.
When the LLM can code 100x faster than you, your job isn't to be a better coder, it's to be a better coach.
> LLMs in the hands of weak engineers...
I think you're still thinking about it wrong. Once you have a hydraulic press that can stamp 600 copies of some die per hour, you are no longer hiring for blacksmiths. You're hiring for someone that knows how to operate the machine safely and maintain it as well as verify the quality of the output.If you have a press that can produce 600 copies of some die and you are hiring a blacksmith, you're probably not going to get good results.
In the software world a blacksmith is analogous someone crunching numbers in a spreadsheet. Programmers (combined with hardware engineers) are the ones that are creating the hydraulic presses. LLMs are analogous to CAD, a better tool-building tool to be sure, but at the end of the day if you're stamping out code in a way that an LLM can do it reliably, then you already have a problem that was automatable without an LLM, which code can already do.
The idea that this is possible justifies the AI bubble and the software bubble at the same time.
With what money?
I've seen hardware replace people. I've seen software upend industries. But I haven't yet seen software replace people.
Hasn't eliminated those professions completely, but greatly reduced the need for them.
How has software reduced the need for these roles? From where I'm looking at it, the jobs still exist but more people have access to automatic versions in software. While the software has gotten good enough for hobbyist or solo-venture needs, commercial enterprise and governments still use humans.
Translators and bookkeepers may use software to help them do their job faster or easier but it hasn't replaced them. CAD designers and studio musicians are still much better than their software counterparts. Transcriptionist is a weird one, though the office typist has been outmoded as basic computer skills (including typing) have become minimum expectations for any office job, the specialist versions of the role (especially in medical records and court stenography) are still in demand, and aren't likely to be replaced by software either.
The former own land, companies, and such assets that they profit from the difference in value between what is sold and the wages they pay labourers to produce that value.
Those people profit from wages going down.
One way to do that is to gain leverage over the job market by threatening to remove access to labourers. Unless those labourers are willing to accept a lower wage they can be replaced by AI and nobody will need them anymore.
Another way they can increase their profits is to force labourers to use GenAI tools to produce their work. There's constant pressure from the capital class to, "always improve productivity!" This is just another example of that.
I suspect there will come a point, perhaps, where some companies will decide to let developers go who refuse to use GenAI (or simply not hire them to begin with).
I don't know that we will see the technology become sophisticated enough to replace human developers entirely.
For other engineering disciplines, the data is much thinner and the methods tend to be heavily visual, i.e. mechanical drawings or electronic schematics.
SOTA vision LLMs cannot read a schematic to save their life. The accuracy is <5%.
Companies will always look for ways to save money, and headcount is usually the biggest cost
Well slowly see more Ai intersect with other jobs as people with hobbies that can engineer make things.
Assuming Ai actually delivers what it promises in the first place
The job won’t last forever, but it will outlive almost every other job
Even were it not the case for disposable CRUD Android/web apps that represent the bread and butter for half the industry, the effect on the structure of popular media is alarming in ways I don't think anyone has a hope of understanding yet. I imagine kids coming up now will not be glued to their phones anywhere nearly like the current batch are, or if they are glued to something, perhaps it is a conversational agent prompting them through an earpiece or similar.
Hand-wringing about the quality of LLM-driven app development really misses the point of all of this. We're currently using an extremely novel technology to emulate aspects of our now-defunct technology (which I believe includes the web), in much the same way fax gateways at one time were a popular application for email.
This can't possibly be true. But if it were it would be highly illegal.
But it will most likely lower their pay into "normal" engineering compensation territory.
Equally obvious: nobody is going to replace the most expensive kind of employee, the CEO.
Less obvious point: software engineers sometimes say no. LLMs don't. They'll always give you something, even if it doesn't work or has security holes. The idea of shipping worse products at higher speed is incredibly tempting to sales types.
If you think the app store is bad now, wait until you see what level of AI sloppification is possible when anyone can turn out hundreds of clones of any popular apps.
> We need to start meeting our colleagues where they are and explain what we do in ways that make sense to them. The goal is not to turn them into engineers but to help them get a high level understanding of what it takes to build a software product.
See, why stop at software engineers? Because coding is text based? There is a whole class of IT middle managers in non-tech companies making good money due to "responsibility" and "team supervision". How about they start explaining the value that they bring?
If it is not more than the usual
- check a list of incoming jobs to be done submitted by other departments
- assign the jobs to be done to someone on their team, mostly the person who worked in the same area before
- ask every person (daily/weekly) for status updates and an estimated completion date for the jobs assigned
- ask if the job was done sufficiently and can be reported as completed
- report the weekly/monthly completion rate and hours spent to their supervisor.
- every now and then review contractor bids for open RFPs
then the current state of LLMs can do this just fine.
Is there a good reason not to eliminate most of the little kingdoms in a large org and instead invest the money saved into more AI supervision, better QA and a lot more marketing?
If I sold you a device for $1 and it minted $5 using $2 of electricity then you'd buy absolutely as many as you could as fast as you can.
However, if the devices stopped working when you had 100 of them you'd buy exactly 100 and if somebody made ones that only needed 50 cents of electricity you'd be looking to switch to those ones.
A company that is looking to downsize it's employee count is saying we are out of growth ideas and we're just going to do the same thing but more efficiently. Nothing really wrong with this except then your stock price shouldn't be like 100 P/E since there's no growth.
Left to their own devices, software engineering would be just as abusive and exploitative as truck driving or automotive repair. They've already made great strides in this direction in terms of how people are hired (asking ACM/"Leet" code questions) and managed ("agile" nonsense).
The thing is it doesn't really matter what tools you use. The problems are complex and they don't become simpler just because you use an LLM. We will gain a bit of efficiency and then spend that gain on whatever new problems LLMs throw up plus the constant stream of new problems the world generates.
Software engineers are not getting replaced by LLMs any more than they are by UML, visual programming tools, RPA, MDD, code generators or any of the other fads that have come and gone over the years.
(None of that has anything to do with whether it's just for the world to operate this way. Personally I'd like to see all engineer wages go down and owner/shareholder returns go down and all that money go to lesser-paid roles or cheaper prices. But we lived in a version of capitalism that doesn't presently seem to present a way to do that...)
Personally I think programming will be 10x as efficient in the not-so-distant future (25 years maybe), and that everyone vaguely understands this: that what we're doing today is in some sense a waste of effort. Similar to building a road or railroad with hundreds of manual laborers instead of a few big machines.
This is pretty much the reason why companies want to replace their IT teams with business analysts who can use low-code/no-code. I understand why, they don't see IT as their core function. It's not how they make money, and in many cases, IT is where they lose money.
If a company can have its own business people create reports, automate tasks, etc., using tools like Power BI and Power Automate, why would they need to hire a separate IT team just for that?
That aside, it's interesting that software engineering will probably be among the first to be destroyed by ASI. This is simply because it's easy to do reinforcement learning on.
we're living in times where enshittification is a reliable strategy to make money and the people doing it don't care about long-term outcomes as long as they can cash out before they happen
this is almost the entire american business landscape today
I would say 0% of AI does? What AI can even read production environment vars, find logs in arbitrary parts of the file system, measure usage statistics, and fix the code without causing another bug?
Replacing piles of expensive crappy SaaS with a small team of expert SWE will continue to be a massive arbitrage opportunity for many mid/large orgs.
Year, or two of unpaid internships? It's nothing new. In my country it works like this for doctors or pharmacists - they have to do half a year of unpaid work if they want to get diploma (and I use work and not internship for reason) Because as a junior you don't bring anything of value to company, you're a loss to them.
The GenAI economy transition will be very weird. The (US) education system isn't remotely prepared for it. Why pay a bunch of money for a 4-yr CS degree?
I guess if you spin up fresh CRUD apps or greenfield web apps for a living, you might be in danger, because they are really good at doing that. On an established codebase, especially with more than the low tens of thousands of lines of code, their usefulness is mostly relegated to writing boilerplate that can be explained in plain English. I'd be surprised if 85% of programmers were spending their days doing that, though.
Even if it was that serious, I don't see software engineers who can leverage LLMs and keep learning with the rest of their field being in much danger. The average software shop that I'm familiar with has a massive backlog of things to be done, and more direction than they have steam. We're pretty far from the point where almost any professional programmer will be saying "We finished all our work and there's nothing left to do".
I had no idea there was an emoticon for "butthead." I'm going to start using this.
The former case is unlikely, since, unlike writing software (but like many forms of actual engineering), there are actually formally defined standards for what you have to know before you're allowed to practice medicine. If they are doing medicine, then the word "engineer" is being abused. Medicine is not engineering. Programming isn't engineering either. Programming isn't even much like engineering.
In the latter case, they are of course acting as engineers and the name makes sense. It's not clear what the software counterpart to, say, an artificial heart would be, though, so software engineers in that sense can't exist. I suppose there are software counterparts to medical tools, like stethoscopes and X-ray machines. We usually call the people who design them "electrical engineers" or "computer engineers".
Oh, and other things I might have considered for the analogy were things like "If a philosopher writes software, does that make it software philosophy?" I picked medicine as a random vaguely technically credential.