AI is going to increase the rate of complexity 10 fold by spitting out enormous amounts of code. This is where the job market is for developers. Unless you 100% solve the problem of feeding every single third party monitoring tool, logging, compiler output, system stats down to the temperature of RAM, and then make it actually understand how to fix said enormous system (it can't do this even if you did give it the context by the way), then AI will only increase the amount of engineers you need.
This is true, and I am (sadly, I'd say) guilty of it. In the past, for example, I'd be much more wary about having too much duplication. I was working on a Go project where I needed to have multiple levels of object mapping (e.g. entity objects to DTOs, etc.), and with LLMs it just spit out the answer in seconds (correct I'd add), even though it was lots and lots of code where in the past I would have written a more generic solution to prevent me from having to write so much boilerplate.
I see where the evolution of coding is going, and as a late middle aged developer it has made me look for the exits. I don't disagree with the business rationale of the direction, and I certainly have found a ton of value in AI (e.g. I think it makes learning a new language a lot easier). But I think it makes programming so much less enjoyable for me personally. I feel like it's transformed the job more to "editor" from "author", and for me, the nitty gritty details of programming were fun.
Note I'm not making any broad statement about the profession generally, I'm just stating with some sadness that I don't enjoy where the day-to-day of programming is heading, and I just feel lucky that I've saved up enough in the earlier part of my career to get out now.
People with your attitude will be the first to be replaced.
Not because you code isn't as good as an AI; maybe it's even better. But because your personality makes you a bad teammate.
And then work out how to do code review and fixing using AI, lightly supervised by you so that you can do it all whilst walking the dog or playing croquet or something.
Software engineering jobs involve working in a much wider solution space - writing new code is but one intervention among many. I hope the people blindly following LLM advice realize their lack of attention to detail and "throw new code at it" attitude comes across as ignorant and foolish, not hyper-productive.
But I think I would rather just end my career instead of transitioning into fixing enormous codebases written by LLMs.
I’m really ashamed of what SWE has become and AI will increase that tenfold as you say. We shouldn’t cheer up on that, especially if I will have to debug all that crap.
And if it increases the number of engineers, they won’t be good due to a lack of education (I already experience this at work). But anyway I don’t believe it, managers will not waste more money on us, that would go against modern capitalism.
The most obvious example of this already happening is in how function calling interfaces are defined for existing models. It's not hard to imagine that principle applied more generally, until human intervention to get a desired result is the exception rather than the rule as it is today.
I spent most of the past 2 years in "AI cope" mode and wouldn't consider myself a maximalist, but it's impossible not to see already from the nascent tooling we have that workflow automation is going to improve at a rapid and steady rate for the foreseeable future.
When I see boring, repetitive code that I don't want to look at my instinct isn't to ignore it and keep adding more boring, repetitive code. It's like seeing that the dog left a mess on your carpet and pretending you didn't see it. It's easier than training the dog and someone else will clean it... right?
My instinct is to fix the problem causing there to be boring, repetitive code. Too much of that stuff and you end up with a great surface area for security errors, performance problems, etc. And the fewer programmers that read that code and try to understand it the more likely it becomes that nobody will understand it and why it's there.
The idea that we should just generate more code on top of the code until the problem goes away is alien to me.
Although it makes a lot more sense when I probe into why developers feel like they need to adopt AI -- they're afraid they won't be competitive in the job market in X years.
So really, is AI a tool to make us more productive or a tool to remove our bargaining power?
Don't you notice how it makes you more productive, that you can solve problems faster? It would be really odd if not.
And regarding the bargaining power: that's not the other side of the scale, it's a different problem. If your code monkey now gets as good as your average developer, the average developer will have lost some relative value, unless he also upped his game by using AI.
If everyone gets better, why would you see this as something bad, which makes us lose "bargaining power"? Because you no longer can put the least effort which your employer expects from you? Even then: it's not like AI makes things harder, it makes them better. At least for me software development has become more enjoyable.
While 5 years ago I was asking myself if I really want to do this for the rest of my career, I now know that I want to do this, with this added help, which takes away much of the tedious stuff like looking up solution-snippets on Stack Overflow. Plus, I know that I will have to deal less and less with writing code, and more and more with managing code solutions offered to me.
Amazing. You think that the only reason people are using AI is because it's being forced on them?
I honestly feel kinda bad for some people in this thread who don't see the freight train coming.
I think AI can be yet another tool that takes some repetitive tasks off my hands. I still obviously check all the code it generated.
What I'm curious about is, can it find innovative ways to solve problems? Like the infamous Quake 3 inverse-sqrt hack? Can it silently convert (read: optimize) a std::string to a raw char* pointer if it doesn't have any harmful side effects? (I don't mean "can you ask it to do that for you?" , I mean can it think to do that on its own?) Can it come up with trippy shit we've never even seen before to solve existing problems? That would truly impress me.
Take a bloated electron app, analyze the UI, and output the exact same thing but in C++ or Rust. Work with LLVM and find optimizations a human could never see. I remember seeing a similar concept applied to physical structures (like a small plane fuselage or a car) where the AI "learns" to make a lighter stronger design and it comes out looking so bizarre, no right angles, lots of strange rounded connections that almost like a growth of mold. Why can't AI "learn" to improve the state of the art in CS?
So such things already exist, and for me, the most frustrating thing about LLMs is that they just suck the oxygen out of the room for talking about anything AI-ish that's not an LLM.
The term for what you're looking for is "superoptimization," which tries to adapt the principles of mathematical nonconvex optimization that AI pioneered to the problem of finding optimal code sequences. And superoptimization isn't new--it's at least 30 years old at this point. At this point, it's mature enough that if I were building a new compiler framework from scratch, I'd design at least the peephole optimizer based around superoptimization and formal verification.
(I kind of am putting my money where my mouth is there--I'm working on an emulator right now, and rather than typing in the semantics of every instruction, I'm generating them using related program synthesis techniques based on the observable effects on actual hardware.)
> Still, nearly two-thirds of software developers are already using A.I. coding tools, according to a survey by Evans Data, a research firm.
> So far, the A.I. agents appear to improve the daily productivity of developers in actual business settings between 10 percent and 30 percent, according to studies. At KPMG, an accounting and consulting firm, developers using GitHub Copilot are saving 4.5 hours a week on average and report that the quality of their code has improved, based on a survey by the firm.
We're in for a really dire future where the worst engineers you can imagine are not only shoveling out more garbage code but the ability to assess it for problems or issues is much more difficult.
It will probably still be more productive. IDEs, Stack Exchange...each of these prompted the same fears and realised some of them. But the benefits of having more code quicker and cheaper, even if more flawed, outweighed those of quality. The same way the benefits of having more clothes and kitchenware and even medicine quicker and cheaper outweighed the high-quality bespoke wares that preceded them. (Where it doesn't, and where someone can pay, we have artisans.)
In the mean time, there should be an obsolescence premium [1] that materialises for coders who can clean up the gloop. (Provided, of course, that young and cheap coders of the DOGE variety stop being produced.)
[1] https://www.sciencedirect.com/science/article/abs/pii/S01651...
I don't have any specific experience with KPMG, but considering the other "big name" firms' work I've encountered, there's, uh, lots of room for improvement.
It was lucrative cleaning up shit code from Romania and India.
I'm hoping enough people churn out enough hot garbage that needs fixing now that I can jack up my day rate.
I remember when the West would have no coders because Indian coders are cheaper.
I remember when nocode solutions would replace programmers.
I remember.
The problem, so far, is that they're still...quite unreliable, to say it least. Sometimes I can feed the model files, and it will read and parse the data 100 out of 100 times. Other times, the model seems clueless about what to do, and just spits out code on how to do it manually, with some vague "sorry I can't seem to read the file", multiple times, only to start working again.
And then you have the cases where the models seem to dig themselves into some sort of terminal state, or oscillate between 2-3 states, that they can't get out off - until you fire up a new model, and transfer the code to it.
Overall they do save me a ton of time, especially with boilerplate stuff, but very routinely even the most SOTA models will have their stupid moments, or keep trying to do the same thing.
It’s insane how similar non-deterministic software systems already are to biological. Maybe I’ve been wrong and consciousness is a computation.
Either Meta has tools an order of magnitude more powerful than everyone else, or he's drinking his own koolaid.
This probably increased the overall demand for professional website makers and messed-up-Wordpress-fixers.
Now the argument goes that the average business will roll out their own apps using ChatGPT (amusing / scary), or that big software co's will replace engineers with LLMs.
For this last point, I just don't see how any of the current or near-future models could possibly load enough context to do actual engineering as opposed to generating code.
It has also saved time producing well-defined functions, for very specific tasks. But you have to know how to work with it, going through several increasingly complex iterations, until you get what you want.
Producing full applications still seems a pipedream at this stage.
Do you mean like: "write me an app that does XYZ?"
Well, it's a pipedream because you probably couldn't even get a room of developers to agree on how to do it. There are a million ways.
But this isn't really how programmers are expecting to use AI, are they?
You'll probably get a few responses from folks that happily tab complete their software and don't sweat the details. Some get away with that, I'm generally not in a position where it's OK to not fully understand the system I'm building. There's a lot of stuff that's better to find out during development than in a late night production system debugging session.
LLMs are useful tools for programming, as a kind of search engine and squeaking rubber duck. AI as a programmer is worse than a junior, it's the junior that won't actively learn and improve. I think current AI architecture limits it from being much more than that.
However, it has not alleviated any responsibility from me to be a good coder because I have question literally everything little dang thing suggests. If I am learning a new API, it can write code that works, but I need to go read the reference documentation to make sure that it is using the API with current best practices, for example. A lot of code I have to flat out ask it why it did things in a certain way because they look buggy inefficient, and half the time it apologizes and fixes the code.
So, I use the code in my (personal) projects copiously, but I don't use a single line of code that it generates that I don't understand, or it always leads to problems because it did something completely wrong.
Note that, at work, for good reasons, we don't use AI generated code in our products, but I don't write production code in my day job anyway.
What did programmers do to you to trigger such deep-felt insecurities thusly?