I'm not on the hype train myself, but I'd never say never. I can certainly picture much of what devs do today become automated. Heck, we already have plain old deterministic tools that are ridiculously productive compared to common tech stacks in the industry.
That said, it is the very nature of software development (or any endeavor in building complex systems) that we discover a lot of the detail problems later down the line. I don't think of concerns about something like this as "shifting goal posts", I think of them as refining our understanding of the nature of the problems (in this case, the nature of a developer's work).
You still have to do the hard part. Writing all the prompts. That's what we do in all those meetings that sap our time, energy, and patience. Even if we complete all that we rely on devs to identify and/or fill in gaps along the way.
If you think your job is on the chopping block by way of AI then you are confused about the value you offer. I'm often disgusted that even senior devs are confused about what their job is.
AI is an amazing tool for software development--the perfect immediate application. Pick it up and use it and don't look back.
Oh I personally don't even think the job of software developers is in particular danger from "AI" in the short/mid term. That's what I meant by not being on the hype train.
The industry maturing, easy VC/stock market money drying up, the economy not doing so great, those are the dangers I'd worry about.
> Isn't this just wrapping existing agents with a "secure" coding environment?
It is. The paper has this paragraph where autodev requires rules for it's setup.
> The user initiates the process by configuring rules and actions through yaml files. These files define the available commands (actions) that AI agents can perform. Users can leverage default settings or fine-grained permissions by enabling/disabling specific commands, tailoring AutoDev to their specific needs. This configuration step allows for precise control over the AI agents’ capabilities. At this stage the user can define the number and behavior of the AI agents, assigning specific responsibilities, permissions, and available actions. For example, the user could define a ”Developer” agent and a ”Reviewer” agent, that collaboratively work towards an objective.
Their example is very simple as well, and the code generated does not cover the usecase where the sentence might have `I'm` or `I've`. I feel that the tool would generate a template with missing logic and then the overhead falls on the developer to figure it out and then add them (since this entire process is automated).
The original comment is just farming upvotes from the `AI hype` people on HN. It's become quite common with gangs of users upvoting each other and downvoting any other narrative that does not fit into their `AI` world.
> Does this represent a meaningful improvement in AI?
It seem more like setting up a factory using a LLM and then making it generate other factories.
Yeah. The shocking speed of progress on AI - especially for coding - tells me quite clearly what the future holds for much of software engineering. Despite the human factors (yes, requirements gathering and specification is messy) our profession is intrinsically automatable at the end of the day. Being in denial is pointless.
I think software engineering will just go up the stack to requirements engineering.
Those requirements will be specified as tests or in a very high level language that doesn't allow for ambiguous meanings. Which is essentially another programming language just more high level.
I agree, and I’m thrilled about it. I love programming but while I’ve had bouts of enjoyment coding “in the small”, it’s my least favorite part. I love systems and software architecture, and seeing things come to life above all else. ChatGPT is greatly improving my enjoyment of it all.
I also doubt traditional programming languages are going anywhere in the short term, seeing there are trillions of lines of code for critical systems in the wild. Good luck replacing that in a few years only, or fully delegating its maintenance to Devin.
I basically agree. We'll have AI create some very high-level programming languages that suit various ways of specifying problems precisely, then program in those. Of course, the AI will also know how program in these languages, which will make development very accessible as you could describe a problem vaguely in natural language, get a specific solution back, then confirm it works for your needs or tweak it until it's suitable.
If the hypothetical high level language doesn't allow for ambiguous meanings, you can write a compiler for it and you don't need the AI.
(Not saying you're wrong about "higher and higher levels of abstraction" - that's the way it's always been - but the unique promise of AI is the ability to deal with ambiguity in the requirements).
Assuming a (hypothetical, doubtful) AI as good as a human programmer, I think the advantage becomes speed. Think of it like a REPL that you program in English. Patching ambiguities with "Oh, I didn't mean X, I meant Y" becomes the work of minutes, not hours.
In this case, you don’t really need AI. People like Forth and Lisp because you can built an efficient DSL which you can converse with. What people have trouble with is formalism, and logical and abstract reasoning.
Not sure what is shocking. Some of us used Codex in 2021 and nothing has changed since that has revolutionised software development by any capacity. Feels like people are just saying whatever some tech CEO or worse, some guru says.
Progress isn't some infinite exponential either where you can just keep increasing the capacity of models and expect better results. Also not sure where they are going to get better training data when they already polluted the internet with AI generated data.
Yeah, to me it feels like a step change to a new level, followed by a lot of exploration of that new level. It feels like there's lots of exploring left to do, but we're not going to reach "magic box that turns English into flawless programs" on the current level.
Speaking just to programming, yes there's probably lots of AI-generated code in the training data now. But the generation of that code was guided by, and (presumably) confirmed to be working by, a human. So it's been filtered.
I suspect that AI-and-human produces better code than human, on average. I know that if I throw any twenty lines of my code into it, it can usually suggest some improvement, even if it's just a variable name.
I am quite confident my job is not in danger. Sure - scaffolding and boilerplate can be automated using ML - but problem solving - not at all.
The reason is simple - to find a solution is to create a program that has a specific set of properties. This - by Rice's Theorem - is not possible to realise using a Turing Machine. So as long as the solution search space is small (ie. we are talking about very similar programs to generate) - ML based methods are fine.
But once we are talking about finding solutions to non-trivial problems - I am sure human is needed.
The world contains a great many arguments invoking Rice (or equivalently the halting problem) to "prove" non-mathematical statements, and they are almost all specious. a) the mere fact that there is no fully general procedure to do some particular task doesn't imply some human can do that task any better than the best procedure we can find, and b) even if you believe there's something noncomputable about the human mind, it still allows the existence of a procedure that will solve all instances of that task which will actually arise in reality.
It's a purely empirical question about the extent to which Church-Turing holds of the real world.
Until a computer can solve the problem “how to redesign this particular database design (tables/partitioning/indexes/queries) so that it can handle expected load in next 5 years” I can safely assume it does not hold :)
I don't at all see why "How to redesign this particular database design (tables/partitioning/indexes/queries) so that it can handle expected load in next 5 years" is a problem that only a human can solve because only a human defined it. Forecasting load is in the realm of machine learning without even needing LLMs, and LLMs are already capable of designing database schemas and so forth, so this seems much more like a question of "when will the existing technology, which can do this sometimes, get to the point of being able to do it always".
Recall that things are true "by definition" if they're not true for any other reason; you're free to define yourself out of the race against the machines, but the real world need not pay attention to your definition!
Computers are "just tools" is certainly true, but I find it harder to automatically agree that the programs running on them are "just tools". Here is a rather bad analogy which is suggestive: in school we learn that there are seven features which are necessary and to some extent sufficient to identify a living organism ("movement, respiration, sensitivity to surroundings, growth, reproduction, excretion, nutrition"). Programs certainly move (thanks to Kubernetes, for example), are sensitive to their surroundings (think of self-healing clusters or load-shedding), grow (scale up in response to demand), and excrete (cleanup jobs on databases). They don't respire, but then that was only ever a contingent feature of how life evolved on Earth; they don't take in nutrients unless you really stretch the analogy; they don't currently reproduce, although LLMs being able to code means it's only a matter of time before an LLM can train another LLM (even Claude 3 Opus is able to train small ML models). All this is to say that the word "tool" is a very poor description of what an LLM is: "tool" calls to mind things which don't have any of those lifelike properties, whereas even large non-intelligent software systems such as Kubernetes have many of those properties.
What I am trying to say is that even if computers are going to be able to solve todays database design problems (which I am sceptical of by itself) - we are going to have bigger/more capable databases and other problems that computers are not able to solve.
It is going to happen by definition - people by definition want more than they have today and want to solve unsolved engineering problems ("problems" that machines can solve are simply not problems anymore).
The only way it can end is creation of some overwhelming intelligence (AGI) that would govern (or some might say: enslave) people so that their demands are controlled.
The problem is software development is 95% stuff that has been done a million times before. If you disagree you’re probably not exposed to enough of the industry to see this.
Is it the problem? Most of the time I’ve coded something is because the code I found did not solve the problem according to my needs. There’s a plethora of music players, but no one is alike. That’s because the domain of music playing is vast and each developer had to compromise to find something that can work for him.
If you make a VLC clone from scratch but intended to be used for kiosks, the mixture of features and how it operates may be different, but the individual features have assuredly already been programmed elsewhere before. Which is basically my point. It still basically renders video on a screen, and maybe has options to play/pause/mute/etc. Most websites are CRUD apps with stuff that's been done literally a million times before.
Yes, some people do novel problem solving with software. But it's super rare in the grand scheme of the millions of people in the world who program.
What you are describing is a pipe dream of software reuse. People try to do it from the very beginning of IT industry with mixed results.
The devil is in the details - your mixture of features is different than mine. We have constant upgrade of video codecs that offer more capabilities. We have unavoidable security issues that need to be somehow addressed (by version upgrades or replacing some components). Etc, etc, etc...
IMO it is quite arrogant to claim "all problems are the same problem" - they are not even though they might look similar.
I agree that the premise of software reuse with humans is not realistic. However my point being that an LLM trained on the entirety of available code could realistically mix and match features across different pieces of software and build something cohesive
> That would mean 95% of problems are already solved.
No, it means 95% of effort spent is spent towards already solved problems. This is, in part, why I hate capitalism. People are doing tons of work simply to compete with others instead of working together to solve meaningful problems.
It is difficult for me to dispute this as I don't think I am in any way entitled to define what problems are "meaningful".
BTW - lack of an authority deciding what problems are meaningful is the core idea of capitalism. And I'm telling you as a person that lived many years under communism: this is much better for everybody.