A coder considers the waning days of the craft(newyorker.com) |
A coder considers the waning days of the craft(newyorker.com) |
What's missing these days is domain-specific languages (DSL). Maybe domain-specific API's (libraries) can be made better, but I have not seen it done well yet.
Domain specific languages made it easy and DIRECT to do things you wanted done in that domain, no weird-ass reverse dependency factory visitor injection design patterns or whatnot, you only had domain-oriented commands and the basics of functions, loops, and conditionals to glue them together.
Sure, they didn't scale well to "enterprise", but if that's not what you want, so be it! Global variables didn't kill kittens at that scale like "real" software engineers warn against. I barely had to read the manual when learning VB classic, Microsoft Access (pre XML), Paradox, etc. it was so intuitive and almost everything related to the domain (desktop GUI's and small-ish CRUD).
It was almost like pseudo-code! That's the secret, the closer it is to domain-specific-pseudo-code, the easier it is to learn and the less bloated the code.
Wanna make a successful tool for non-giant orgs or groups? Focus on the domain and only the domain; don't let fads and buzzwords and mega-scaling distract you.
"perfectly"? I mean this sounds dubious. ChatGPT gives interesting suggestions and advice when it comes to coding but I've never been able to get any close to a perfect solution.
I don't think coding AI assistant's are meant to be used in that way anyway...
I think this is just another fluff piece about how coding is now dead (long live coding). That's basically not true. LLM have gave us a leg up but they haven't removed the need for a competent programmer.
Looking back, that's what made it fun. You could convince yourself you were a mad scientist building the next Turing machine.
Having stability in the JS ecosystem now (hold for laughter) is better for users, and the developments in AI are interesting, but it's not as challenging to ship things. Maybe embracing the new challenges is the "craft" we should focus on to bring the fun back.
Sure ChatGPT can do this, but let's not pretend this is a problem requiring much "craft".
I pay for GPT-4 and Github Copilot, all I can say is when I'm trying to do repetitive work like writing tests, copilot swoops in and gives me 'mostly' working code. But when I go in to the real creative stuff, that needs real thought and is non-obvious, I don't get much help from copilot it either just doesn't suggest anything or suggests completely the wrong thing.
I think at least for me, the comparison I would use is, construction work. There are many different kinds of constructions, anything simple from making ikea furniture to building bridges. If the coding you do is the equivalent of making ikea furniture. Then yes that stuff is going away, because it's going to be replaced by machines that can produce those parts in bulk.
But if you're creating something special like the Burj Khalifa, or the Golden gate bridge equivalent but in code, no AI is not going to do that for you. It can help with some parts, but no way AI is going to do that sort of engineering, at least not in it's current state.
I think it's worth noting "Coding" spans so many kinds of systems and scale. Not all coding work is the same. Even if you're talking about things which are well-known like "e-commerce" in that industry there are so many variations / many different scales / many different ways to look at the problem.
After trying several AI tools in the hope of replacing my coding job I find that the tools are good at the bike-shedding tasks like generating some initial code (the easy stuff for me) and terrible at the real work (maintenance and adding features to an existing codebase).
If this is the skill level of the coder then I’m not surprised that they are worried about GPT. However they should be stoked GPT can help them code at a much higher level
I only need help when it’s hard. I’ve already got a BERT-style model completing my queries on Google.
If your entire job could be done by riffing on stackoverflow answers? Yeah, I’d try to climb the value chain.
But most people’s job isn’t to copy paste shit.
I think that's where I differ from a lot of the artful programmers, I've never found pleasure in a perfect, beautiful solution. I get annoyed when I have to dump hours and hours into something that 'should' be simple! I don't want to spend my time fiddling with layouts, CSS, Oauth handshakes, etc. I want to build stuff and get paid for it, that's how I view my job as well. Less logician and more mechanic.
I use ChatGPT as much as I can, to do all I can and then fix the output when it's needed. I view it as a higher level programming language, that spares me from the burden of thinking of low-level details. It's same the reason I code in Python/Javascript rather than C++ or other languages, the goal is to make something of use. That's my goal to stay employed, become one with the language du jour, in the same way I've jumped from PHP to Jquery to React to ...
To many futurists hopping on the hypetrain, this is probably somewhat of a hot take. But let me explain.
Ultimately, programming is about instructing a computer on what to do. We use programming languages because they're highly efficient representations of what a computer can do. In the case of LLMs, we need to use natural language to specify the program. For simple things, this can work great. But for complex programs, it's not easy to articulate exactly what a program should do. As you drill in to the details, you begin to experience an almost exponential growth in the amount of natural language specification you need. And so I think there is something very flawed in believing that you can replace human programmers with LLMs. In my personal opinion, a single programmer will be able to outproduce a single LLM prompt engineer, purely because programming languages are better at expressing ideas compared to natural language. At a certain point, it becomes faster to write code then to write sufficiently detailed prompts.
As a thought experiment for the reader: consider a complex system you've worked on. And now try to imagine writing down a specification for the system in natural language that an LLM could use to generate the code that powers the system. I honestly don't think I could do it for many of the system I've worked on.
So yes, I think LLMs are cool. And I think they're cool because they give creative power to people who can't program. But for sufficiently complex things, i.e. things people care about, a natural language interface isn't the answer.
I do this because I wasn't like that in the past and I hate myself for not being more deliberate in reading and discovering things organically through doing things. This is not about joy, (even though it makes me happy) but my obligation to myself and then to my employer to be good at what I do.
Sitting with a chat bot undermines this urge to be a better developer completely. I will probably be argued with, but I have worked with a lot of smarter people, but I realized after many years, (and what the article alludes to), that they have a very strong sense to fight through myriads of almost random problems, but they have the knack at solving those problems intelligently.
I remember specific co-worker that used an even plainer Emacs config than I did to write Java code. I was genuinely curious what his thought process was when trying to remember APIs without anything more special than simple modes for jumping around a codebase. He said "I don't know, I just read the manual first."
Yes! If he can do that, I can do that. After that, a lot with working with computers is about continually pushing through those random problems to their solution. This is an absolutely precious skill. I don't feel the affected yet, but I will be, I expect - lesser quality searches while we have to push our chat bots sub-sub-problems instead of just understanding what we are using. I don't want to and I will continue to hold out, like all the other essentially dumb technologies I am now stuck with (I am looking at my two mobile phones now ...)
I don't think Djikstra would be appalled in the sense that the author gives it. He wasn't saying that C++ or Python were precise languages; they wouldn't be precise enough for him. He wouldn't be appalled that we don't write programs in them. He would be appalled that we don't write precise specifications.
ChatGPT-4 can generate code. Is it the correct code? We don't know unless we specify what correct means in a precise and unambiguous way. Natural language isn't precise enough to do that. We have a language for that called, mathematics. ChatGPT-4 is not very good at understanding or speaking this language for the time being.
What matters is whether ChatGPT-4-generated-code is good enough for your problem. Generate a script to organize some files or help you with small tasks where correctness isn't crucial? Go ahead. I don't pull out a whiteboard and fire up a theorem prover when I'm organizing a photo collection.
However, if I'm working on a system and have a theory that we can parallelize an algorithm over a complex data structure and it's critical that this is done correctly or the system cannot be trusted? I wouldn't think twice before firing up TLA+ or Lean 4.
For now, ChatGPT-4 cannot reason and think for you. The industry isn't over, in my opinion. It's annoying. It's noisier. But not over.
As a programmer, I'm paid to solve novel problems, things that can't be solved by just glueing existing things together. But that's all LLM-generated code can do. And it's a qualitative problem, not a quantitative one. By its very nature, an LLM cannot come up with something novel. Which is why all of the examples in this article are highly formulaic and derivative ideas based on existing stuff, interesting as they may be to the people asking for them.
I can get quite well-running scripts from GPT for well-defined, menial tasks that I know would be easy to do, but just can't be bothered to fight with the mechanics and syntax in order to get it right. But for solving new and specific problems, that doesn't work.
Plus, technologies and languages evolve. If LLMs displaced programming, it would mean that progress has stopped. No LLM is going to come up with a nifty new technique or feature. It can only regurgitate what many ceative people first had to come up with.
You can have LLMs do your boilerplate, your helper scripts or your clearly defined, self-sufficient algorithms for you. But a real-world application is already impossible because an LLM will always be incapable of covering the big picture, of assembling parts into a whole that doesn't only work and make sense, but is also performant, secure, maintainable and extensible. LLMs won't kill the craft of programming, it will just lead those who fall for that to producing loads of crap that doesn't fulfill any of the above requirements, and then end up having to be trashed and redone from scratch by "real programmers".
The Go analogy doesn't work for the same reason. Go has well-defined rules everybody has to follow, and clear goals. Attacking this algorithmically is the extreme opposite of the idea of general artificial intelligence. That doesn't mean it's easy, but it's not even remotely a related problem.
There's a reason why the people swooning over GPT-based coding are always script kiddies, not professional developers.
This is my non-web-dev impression of the javascript world. Loads of code out there, basically all of it wrong in a bunch of places. Reasoning by analogy with that, one should expect the reliability of computer systems to go downhill from here.
The interesting question for a professional software dev is where one can add value in a world in which essentially anyone can produce large amounts of code that sometimes works. My hunch is that it's going to be really important that the languages and libraries in use are totally solid as they're essentially being fuzz tested continually.
Isn't the real waning days of the craft the fact that we consider this problem sort of "state of the art" ?
I write code with GPT every day for almost a year now, and it helped me greatly to kickstart code that was hard in the past, namely, audio synthesis, vulkan rendering, and other things that were hard to approach. But it's very clear at this point that it shall not be trusted, because it's like a coat of a nice paint put on top of all the clever or dumb stuff that exists on the internet. You never know which one you get, but sure it will be worded convincingly.
Now, chatgpt in its current form cannot think better than me. Faster, for sure, but not better. Its arguments and its explanations are a bit simple and it can’t make really insightful observations. Mostly it just states the obvious.
However.
There are people in the world that it can out-think. For every one of us there are 10 or 20 people who are pleasant enough but kind of thick, and gpt can already speak more eloquently than them. So where’s the bar for “intelligence?” Does it have to outclass the smartest human alive before we can call it intelligent?
In the article, the non-coder was able to produce code with an AI's help, and therefore, coders are doomed.
But in fact what happened is it enabled two "developers" to offload the menial work and focus on the product itself.
The development of electric workshop tools didn't make woodworkers obsolete, it just enabled them to do the work of 5 people, and do it easier and faster.
We are moving from the era of hand-tools in coding.
The real risk is that we're going to see a lot of cheap shitty furniture made by people with no skills, but at least ChatGPT isn't going to chop anyones fingers off.
Also, dont really see the comparison between programming and chess. In chess you can still compete to be the best human chess player. Coding or working in corporate america doesnt really have that.
Cry about how you no longer have to code the small and mundane, but solving problems and writing software is more than just coding small mundane things. It’s how those mundane things are architected and called to do a really big thing.
A much superior solution than even the next few AI generations has been available for several decades now. You could just outsource your work to a contractor in a developing nation.
But you didn't write it down, so how did the system get made?
The answer is that the program exists in your head as much as it exists in bytes in your source files. There might be a mismatch between your head-program and the source-program, or between your head-program and what the customer actually wants.
But the existence of the head-program is what Naur was articulating in 1985's "Programming as Theory-Building", and is what LLM proponents are rediscovering.
We didn't write it down, but we did use natural language to specify it, albeit somewhat indirectly. Some of the specification came from meetings with leadership, PMs, other people in the org, customers, etc. Some of it came from getting drinks with the team and talking about what we wanted to build. Some of it came from conversations with ex-colleagues. Some was inspired by past experience. It was be extremely onerous to put all of that down as input to an LLM.
that being said it might still be a non issue if civilization as we know it has less time than currently projected
The team lead I was going to assign the task to was offshore, and not yet online, so I put the URL for the documentation into ChatGPT premium, and it spat out a working solution.
My team lead was a bit perturbed and created a more enterprisy solution with factories and DI (more out of pride than necessity), but my original code was production ready.
I’m not going to be firing anyone just yet, and certainly not my senior people, but I can see a lot of grunt-level work going away.
Carpentry seems like growing field though.
I think it's funny how terrified people are at the prospect of AI and machines doing most of the work for human beings. If used intelligently and equitably, it'll mean more free time and prosperity for everyone.
I've been very successful in my career. Things I've built: Bloomberg's domain-specific language and simulation engine for asset-backed securities, a custom database that can process 100,000s of writes / second and 10,000s of reads / second, and the robotics framework powering the Cruise self-driving car (RIP). I retired at the age of 33.
The domain you're working in is usually more important to fully understand than software engineering concepts, although I try to understand both. But I don't really care about software development for its own sake, and I welcome LLMs replacing the more annoying grunt-work parts of the job.
> Having found the A.I.’s level, I felt almost instantly that my working life had been transformed. Everywhere I looked I could see GPT-4-size holes; [...]
I think this is key for me at least. GPT-4 is really good once you start figuring out what problems NOT to give it. Because there are certain things that it can't solve no matter how much you prompt it in the right direction, and it gets really annoying really fast.
I'm just going to wait while the bootcamp set phases themselves out of the market and then wait for the "it doesn't work any more, please fix it" emails.
Assuming they price their skills at a premium, cleaning up the messes that AI will create in the process of it being treated as The Holy Grail are going to make some people absurdly wealthy.
AI is to programming what electric drill were to wood working before they were invented. It made life easy; it sped up the process and may be it did a job a bit finer. But you still need to understand where to drill and how to create the thing. There are a number of analogies like this you can find.
So, what is the basis for my statement? We are just mediators at this point. We don't need to be there. Currently GPT-4 translates our requirements to DALL-E 3 during image generation process. What I want to say is, there is no reason to give any form of signal as an "initial seed." Has anyone tried creating an automatic agent that, when turned on, receives a signal from the external world, whatever it may be, and triggers a chain of thoughts in these LLMs?
We, as humans, rely on signals. Currently, we are providing signals to LLMs in the form of text. There will and there must come a point where agents will feed signals to each other. They will perceive signals from the environment on their own and move on from there. This is not far away. It is near because all the components are laid out there.
And people argue over things like, "Oh, but I need to prompt it." No, you don't. It will take one engineer to define a way to process signals, then write an objective for the AI and train it. Once trained, it will continue on its own. The projection might sound off to you all, but there is no one stopping you from not doing it. Do you know what the limiting factor is? Capital. Yes, capital. So, as long as the power law holds, we will keep seeing strides in improvement. If you have capital and skills, you can do it right now.
I am not saying the signal is "real world physical environment". Say you have a crawler that scrapes the website. You hook it to a summarizer. The summarizer fires the signals and then it calls AIs to create product. This whole thing once created doesn't need a human in the loop. Once something is built, it is done. Also, add to the fact that these AI system only trust other AI system's code. Why? Because human are untrustable. Now you will have an ecosystem designed by AI for AI and to be integrated with AI. Why do we need humans at this point? Like why would a company want humans at this point?
If you’re truly egoless and care about the outcome and not the path to the outcome… you’ll see how exciting this is.
A lot of folks chose programming as a career because they enjoy the path at least as much as the outcome, and I think that's a perfectly fine reason to choose a career.
It also gives them good reason to mourn the loss of something that brings them happiness. They might be losing the only part of their job they actually enjoy.
That being said, those firms are certainly making use of these tools - relying on their underpaid programming staff to clean up the output into something useable for the client.
>the one with the pink-shirted guy on I.B.M. PCs
That's PETER NORTON, Goddammit. Know your history, New Yorker writer! Damn!
So far, coding LLMs are not generating code, compiling it, running it, checking the output, timing the program, fuzzing the input, etc. When they can train themselves, they will improve.
People regularly went on pilgrimages to remote places all throughout Europe and perfectly understood each other, because nearly everyone could speak Latin. Even when the Portugese landed in China they were greeted in Latin.
At somepoint the upper classes started talking more and more in regional dialects and older languages, which then spread to the normal people. The church reacted pretty much immediately to this trend by requiring prayers and certain parts of the mess to also be conducted in these regional languages (somewhere around the 8th century, I think?).
What was low initially were the literacy rates, because books were incredibly expensive. Which didn't mean that the people couldn't read or write, just not to the degree necessary to read or copy the bible in Latin, which was the most available book at the time.
I can solve some math problems/write some proofs, but I wouldn't call myself a mathematician.
It's about if you do it for a living, and this guy mostly has some fun side projects.
Don't think this guy is qualified to comment on ChatGPT taking over, like another comment was saying.
What was your first clue.
You have to give OpenAI credit. Their marketing campaign is beyond genius. A bit spammy and aggressive but it works.
Many other fields besides construction are similar: most positions don't require previous experience as "manual labour".
Software development was an exception to the rule, maybe it no longer is.
Any remotely interesting coding task is at least somewhat novel and requires some reasoning. So far, LLMs don't seem to be very good at handling things they haven't seen before.
Anything that shortens the path is good by me.
Excuse me?
Our brain does not think in text, it just spurts out text as a side effect.
Hurlburt's "Descriptive Experience Sampling" is a good source on this - see for example table 2 of https://hurlburt.faculty.unlv.edu/heavey-hurlburt-2008.pdf
Agreed that underneath that perceivable layer, there's lots else going on too. But to be fair, there's also lots going on the weights of GPT-4, e.g. see https://arxiv.org/abs/2310.02207
But even if they did require text, that's how a large portion of communication from work-issuer to human workers, and vice versa, goes, too, so even if it was true it wouldn't be all that limiting; we don’t communicate directly mentally withbother humans bypassing text.
And it will also carry over bugs found at the "competent" level.
But he didn't; he merely retired from professional play, and remains intensely interested in the game and the new directions it's taking.
Turns out the only thing truly successful at that task is economic mismanagement.
These people who said AI built programs, are they using different AI?
Sure, they're good for quick prototypes or even launching production grade services.
But what about maintenance? What about fixing issues in legacy software?
Today I asked a similar question and it gave me boilerplate. Then it ran the code. Then it noticed the error, then it fixed it on its own. All without me typing anything at all.
I pointed that out to someone, and they did not appreciate that it has quickly gained the capacity to test if what it says is true, at least in some limited sense. I'm in awe.
At any rate, I think yes, you plug in code and ask it questions and it can answer them, over time answering them better. Since i've been using it not only can it execute code, but can generate test cases and test _data_. I think wrt to legacy code, it could come up with tests and refactoring strategies.
More generally though, AI is coming. And with it, the ability to write better code than even the best of us. That maybe a year or 50 out, I"m not sure. But its coming. And with each passing day, I move the "when" more into my lifetime.
> You can’t just say to the A.I., “Solve my problem.” That day may come, but for now it is more like an instrument you must learn to play. You have to specify what you want carefully, as though talking to a beginner.
It’s easier to explain “solve this common problem you’re already familiar with” or “create a prototype with pretty flexible specifications” but if you can break down and explain a problem to a rubber duck[1], you can explain it to GPT4, and it’s a better conversationalist than the duck
I think every programmer feel it
I envision it being able to fully replace a junior engineer, and in some use-cases senior engineers as well.
In the case of junior engineers: the AI should have access to an internal knowledge base (i.e. Confluence) and the task/ticketing system (Jira), and ideally the internal chat (Slack). I would assign tickets to it, and I'd expect the AI to reply with comments asking for clarification when there is something unclear, or proposing an implementation before starting if it's not a very simple task (this could even be defined in the task, using story points for instance.
Once cleared, the AI submits a PR linked to the task - so far just like any engineer in the team would. The PR gets reviewed as usual, with suggestions/requests for changes made by the (human) team, which then get addressed by the AI. With the big difference that all this process may happen in less than 1h from ticket creation to PR review.
I wouldn't expect it to be able to implement complex features, onboard new libraries, or rearchitect the system in major ways to accommodate future features - just like I wouldn't expect that from junior team members.
It would obviously be amazing if it could incorporate previous PR comments into it's "context" for future work, so it could learn and improve.
Separately I mentioned it could also do part of the job of senior team members - in the form of PR reviews. If it has access to every previous PR review and learns from them it might be able to give insightful suggestions, and for very large codebases it could have an advantage over humans as it could find patterns or existing code that may be overlooked (i.e. "It looks like this util function you added is the same as this one that was already there", or "This code looks different to similar areas, but follows a different pattern, you might want to rewrite it this way //..."
Is GPT-4 there? Definitely not, perhaps an LLM is not even the way to achieve this, but I absolutely see this becoming an incredible asset to a tech team.
“it is difficult to get a man to understand something, when his salary depends on his not understanding it.” - Upton Sinclair.
Damn, the secret is out.
Coding to me is the same to those 'crafts', with GPT it will be done faster and more efficient, that is it.
this really landed for me when it came out
his 'you are reading the wrong dictionary' on his blog is also good
(Doctors won’t ever be out of a job because of AI because they’ll always get a fat paycheck even just to look at the output spat out by the machine.)
They didn’t out of misplaced hubris and elitism ("just be the best 10x engineer ever and you’ll be safe").
Now they have less than 10 years before their wages start crashing hard.
> He dialled up an FTP server (where files were stored) in an MS-DOS terminal and typed obscure commands.
This is some code a UI in Visual Basic to trace a IP address level exposition right here (this is from a self proclaimed subject matter expert, so no excuse), they’re not deeply knowledgeable and just because they got paid 6 figures at some dumb post recession startup doesn’t change anything.
(Others have already addressed the other howlers in this article)
/s
We all knew it was coming
Still true tbf
It's why it continues to tend young.
The older you get, the more opinionated you get and with opinions come inflexibility so the less you are open to new ways of thinking, even those which may be superior.
Essentially people have criticisms of newer tools that have become industry standards as unnecessary and inferior.
Regardless of the merits of that argument, the new tooling is where the industry is at. The best hackers I know are extreme versions of this. Increasing dissagreability appears to be the crucial flaw of competency unless you work hard to avoid it.
The most extreme version of this I remember was about 20 years ago when I met a man of about 55 who was clearly a very brilliant computer engineer with impressive credentials that I have forgotten (a prestigious PhD and work history) but said he had always dismissed microcomputers, yes, as in not minicomputers and mainframes as toys and a waste of time. This was like 2002. I was still in college then and I vowed to never become that guy.
Still trying...
In the world of martial arts this is expressed essentially by the fact that you work with the same people so this tends to a false sense of generality in ones understanding. Within any particular discipline there's confinements because there's a core focus and rubric of things you do with is necessarily exclusionary and reductive because of the constraints of time.
Serious martial arts practitioners (think career professionals) claim people will plateau indefinitely, as in for the remainder of their lives, unless they effectively practice shoshin. This can go in odd directions. Take George Dillman for example, who has developed a mechanism that he, and maybe nobody, really understands and as a result he's considered a fraud although he and his students experience it as genuine.
True shoshin demands an open investigation as to why, where, and how people feel a mechanism and a good faith assumption that there's something poorly understood there.
People will widely agree with the concept of shoshin but when it's demonstrated with an example, that previous consensus disappears. It's not easy or popular.
What is menaced is low to mid quality work, and less educated/skilled people. This is in my opinion where the real danger of AI lies: a world where it's so easy to let a program write an email that the sheer ability to think about it's content, then type it is lost to the majority. Some with anything requiring some effort the learn. This will exacerbate the divide between classes, with a handful people who can understand and act on the world, and those who don't.
The various LLMs are decently good at recreating known solutions to problems that may require arcane knowledge, which covers a lot of human memory. Is there something lost here? Probably. But who yet knows what may replace it.
Today's big tech companies might seem invincible, but they’re not. Their edge? It's going to wear thin, especially once everyone else starts jumping in with custom solutions. Instagram with just 13 people gave Facebook a run for its money. That was before the era of LLMs. Imagine now – anyone could potentially build the next big thing in an afternoon.
And don’t get me started on the legal stuff. There are so many laws, no one person can know them all. But LLMs? They can handle it. What happens when the legal system gets flooded with cases about loopholes no one knew existed? Or when everyone can have the world's best lawyer for free? It's wild to think about.
ChatGPT came out of nowhere for most of us, and robotics is going to hit us harder and sooner than we realize. No politician or law can keep up with this tech freight train we're on. We’re talking about more progress in the next 20 years than in the last 20,000. Jobs and whether we can stay employed? That's going to be the least of our worries.
Or AI will hit a plateau and we'll all get a little bit more productive.
What will stay are some nice tools for whatever tasks, maybe programming too. But bots won't replace software engineers. If they could do the current tasks, we'd just engineer one level higher, just like when high-level language compilers made low-level code largely obsolete (yes yes, not completely of course).
I'm a fairly experienced backend dev I built a few toy websites and I am casually interested in frontend stuff (like watching Fireship) so I thought I'd give it a try.
Long story short, it worked well. I have my app it has all the features I need I used it every day (till I lost 10kg) and I didn't write a single line of code.
However, the coding itself was unlike anything I had done before. I felt much more like a manager/Slave driver.
The core thing was structure structure structure. As soon as the task gets too large, GPT will produce something kind of right that is difficult to understand and impossible to extend. So your task is to split it up, and split it up. Also to apply judgment (it started out using objective-c haha). You have to ask it for alternative libraries. For reference. I relied a lot on something like: "In Python/C#/Rust I would do it like this".
But yes, my overall experience is that I think we are in for an exciting new time, but we are lacking a new coding paradigm.
This is the big one for me. I feel like we're all having "640K ought to be enough for anybody" type conversations right now.
ChatGPT will not only survive, it will get bigger as long as all those layers exist. Unless web design is ready to move to assembly level instructions via RPC (ChatGPT can do assembly), the layers will stay, the complexity will stay, and people who get (and attempt to sell) value from recombining the puzzle pieces will stay.
The real point is not that ChatGPT is so good, it is that everything we program has already been done before. We humans just have trouble finding the pieces and gluing them together.
No offence to the author but given that this stopped them in their tracks I choose to ignore their programming related opinions.
If we ever get an AI which can write complex enough "glue code" with a low enough failure rate to replace even junior developers, it's going to cause much, much bigger impacts than people losing jobs. The "boilerplate" and "bureaucracy" which is currently handled by "average" folk...that's what runs the world. If we ever develop AI which can handle that kind of work, barring some constraint like extreme resource usage or disaster like climate change; we'll either be brought into a utopia due to productivity being multiplied, or a dystopia due to a small minority getting control over the world to a precise, extreme extent no small minority has control now.
Unfortunately this is how nearly all technologies pan out in the end.
The Internet of the 1990s unavoidably us the surveillance-industrial complex of the 2010s/2020s.
The running-wafers-in-an-old-strip-mall Silicon Valley of the 1980s unavoidably led us to the current "world economy can support only 1.5 leading-edge fabs" situation where having an ME/PSP/TrustZone in your chip is not something you can opt out of anymore.
AI cannot sustain itself trained on AI work. If new languages, engines etc pop up it cannot synthesize new forms of coding without that code having existed in the first place. And most importantly, it cannot fundamentally rationalize about what code does or how it functions.
The more you use it or try to integrate it into your workflow (or worse, have others try to integrate it on their own) the more the inherent flaws of the LLMs come into play.
This isn’t true. You can train LLMs entirely on synthetic data and get strong results. [0]
> If new languages, engines etc pop up it cannot synthesize new forms of coding without that code having existed in the first place.
You can describe the semantics to a LLM, have it generate code, tell it what went wrong (i.e. with compiler feedback), and then train on that. For an example of this workflow in a different context, see [1].
> And most importantly, it cannot fundamentally rationalize about what code does or how it functions.
Most competent LLMs can trivially describe what some code does and speculate on the reasoning behind it.
I don’t disagree that they’re flawed and imperfect, but I also do not think this is an unassailable state of affairs. They’re only going to get better from here.
Every AI apology seems to include this statement. It is more likely that LLMs have already hit a local maximum, and the next iterations will provide diminishing incremental returns - if anything at all.
Also: writing multi-threaded or otherwise concurrent code is hard to imagine even with GPT 6 or 7.
Now imagine debugging more and more code that was created by LLMs.
Debugging will become more of a voodoo witchcraft kind of thing. I pity anyone who decides to make a living out of that. Probably will earn a lot and die young.
If you have 5Mloc of third party dependencies and AI generated code that you can't extend and can barely keep functional in production, and a competitor pops up with 50Kloc nearing feature parity and adding more functionality by the day, you'll very quickly need to adapt or die.
Software companies already die to this risk aversion all the time.
Tons more die to rewrites because they get conned into hiring an army of idiot React consultants to do it, who are likely in these HN threads at the forefront of AI code gen themselves, and just end up making 2.0 more complex and worse.
All GPT does is widen the gap between good and bad engineering. If it widens it enough that non-technical people can finally tell the difference, then it's going to kill half the market, just not the half everyone thinks it will.
On a related note, I'd expect the "DSL+generated code" approach to grow in popularity for common domains. Think gRPC or JOOQ. A terse IDL snippet and you get a lot of functionality that you don't even need to test or even put under version control.
There is software engineering, which is probably what most well paid devs do a little bit too much of, which is requirements analysis, planning, talking to the customer, estimating, etc. Sure an AI could help with all of that, but leaving that entirely up to an AI probably wont work for a very long time. You'd need a real AGI to take over work that has that many social aspects and requires that much planning and consideration.
There is algorithms and datastructures, which is important for developers to learn, but usually not important to write yourself unless thats literally your job. There, LLMs could help with understanding, possibly visualizing these algorithms, and providing example use cases.
There are hobby projects, which generally wont be done with any AI by most people I know, since the point is to program for fun. AI can help with that, e.g. for inspiration or example implementations of little weird algorithms.
There is maintenance. Once a product, especially a B2B product, reaches maturity, a lot of the work is bugfixing, smaller features, updating dependencies, porting to new platforms, etc. I could see LLMs taking some of this work away, which everyone would probably appreciate.
In the end, I believe that AI and in particular LLMs just help programmers, and will maybe replace the 6€/hour outsourced copy paste programmers, but that is... not very scary.
It wasn't always this way. Sure, programming has always been an exercise in precision and, thus, sometimes tedium. But, there's something in the way it has changed over the last decade or so. When I first started my career, I spent long hours solving problems of the algorithmic, logic, or control flow type. It was challenging mind work and called for creativity. There was real joy in making something work. It felt like creation.
Now, programming consists largely of wiring together pieces of code that you didn't write, and consulting StackOverflow to figure out why it doesn't work. It's following someone else's decisions in an opinionated framework. It's transpiling and tooling and configuration. And, now that programmers are expected to do much more, it's also using someone else's software for devops and tedious infrastructure buildouts, etc.
I'd say the joy in the software engineering role faded long before the arrival of ChatGPT. I'm actually hopeful that AI will help lighten the load of mundane tedium and help us return to the days when programming was fun.
In the first project I asked it to help me build a one page ui with html and css, it did great! I know a lot about html and css, so I was able to ask for what I wanted and help it debug.
For the second project I wanted what I thought was a simple threejs animation of an object following a line in a scene. I know very little about threejs and graphics in general. I spent hours wrestling with chatgpt to get this working, but I just got what looked like meaningless non-working code to me. So I took time to learn about threejs, did a few chapters of a course, and came back to the problem. And all of the sudden I had new vocabulary I could use to ask chatgpt what I wanted. And I got pretty close to what I wanted, but not quite. I suspect if I keep learning about threejs and how graphics work I’ll get there.
I don’t think this is the death of our craft, but definitely a big turning point for how we build and use software.
Additionally I think that a lot of people will assume that once they get GPT-4 to do something for them that they're done. That's not necessarily true. There's a lot of complexity to navigate everywhere. And AI can help you navigate it! But I don't think it means that I, a software engineer, can now pivot to being a lawyer, for instance, solely because of GPT-4.
Sure, it's able to do a lot already. Maybe I'm being naive. But I see it more as a tool for the future rather than something that is going to automate people out of existence.
Edit: hm, why downvotes? If I'm wrong, help me improve my viewpoint on AI.
A macOS SwiftUI app to go through all the localization strings in my apps and show them in a table where I could see missing translations, and interactively translate them… by sending the, back to ChatGPT
Another macOS app to graph Google ngram data for word lists. It was great because I didn’t even need to check whether there was an API for ngrams, I just asked it for the function, then for the code to plot it in Swift Charts
Sometimes I consult it on refactoring problems (eg., this struct has new responsibilities, what would be a more appropriate name? How do you see it fitting into this section of the code?). It’s a great tool and easily worth the money
It almost never writes any “interesting” code, however
This is pretty basic stuff. It should not even require Googling unless you don't really know the language. This supports my belief that ChatGPT is simply going to replace the very bad programmers. But we never really needed them to begin with. I have no faith that GPT-4's code actually "ran perfectly"; this programmer clearly does not have the chops to tell whether or not the code was correct. And we're talking about, like, 100-level CS homework here.
I've been able to express myself better with each year.
I see AI as another higher-level way of expressing myself.
Also, people don't write as much new code as they think they do.
Still, I have many many... MANY projects that I have on my wishlist. Maybe AI will help, but my list won't go away.
That is the history of programming in a nutshell. I know I've told this story before, but my wife's uncle talks about the revolution he felt when FORTRAN IV was released. Finally you didn't have to know anything about computers or programming to write programs. You just told the computer what you want it to do and it sorted out all the hard stuff for you. Engineers like him could now just use computers on their own and didn't have to wait for the programmers to have time. He spent the rest of his career writing code without ever learning any of the 'craft' the veteran programmers at the time would have considered necessary.
It’s great and amazing tech, but it’s very much a kind of search engine, and indeed, writes just the kind of code you find on the internet… sometimes great, often flawed, very often incomplete. Its breadth of knowledge is stunning, but it’s not like it’s actually useful to be able to write code in all the languages.
It really doesn’t even touch harder problems. You need to know, at the level of fine details often, what you want from it and what you don’t. That’s hard.
…It save’s time. We will perhaps need fewer programmers as people spend less time on grunt work. But that’s hardly the end of coding, and seems like clearly a good thing in the long run.
If programmers become more productive, it means the price of development will decrease. This will, in turn, increase the demand for development.
As far as generalization goes, I'm still waiting for an answer from Tolman-Eichenbaum machines. Or, an integration of LLMs and cognitive maps.
https://www.youtube.com/watch?v=9qOaII_PzGY
http://brilliant.org/ArtemKirsanov/
And his references from the YouTube video:
REFERENCES (in no particular order): 1. Behrens, T. E. J. et al. What Is a Cognitive Map? Organizing Knowledge for Flexible Behavior. Neuron 100, 490–509 (2018). 2. Constantinescu, A. O., O’Reilly, J. X. & Behrens, T. E. J. Organizing conceptual knowledge in humans with a gridlike code. Science 352, 1464–1468 (2016). 3. Aronov, D., Nevers, R. & Tank, D. W. Mapping of a non-spatial dimension by the hippocampal–entorhinal circuit. Nature 543, 719–722 (2017). 4. Whittington, J. C. R., McCaffary, D., Bakermans, J. J. W. & Behrens, T. E. J. How to build a cognitive map. Nat Neurosci 25, 1257–1272 (2022). 5. Whittington, J., Muller, T., Mark, S., Barry, C. & Behrens, T. Generalisation of structural knowledge in the hippocampal-entorhinal system.
CREDITS: Icons by biorender.com and freepik.com Brain 3D models were created with Blender software using publicly available BrainGlobe atlases (https://brainglobe.info/atlas-api)
This video was sponsored by Brilliant
A seasoned programmer who struggles with this?
For capability growth, well, we don't know what we don't know. There are still many unknowns when it comes to architecture, training, data, modalities, incremental learning, alignment, self-critique, and more. There's plenty of companies and governments trying to find their angle here.
Even if we're at the very peak of what LLMs are capable of -- which seems unlikely -- there's still potentially decades of research in making what we have more effective.
We've been able to fulfill the function of printing very cheaply for what seems like ages now, and we've reached a point where some niche and particularly attuned segment of the population wants a bit more out of the actual form of the printed product, the depth of form that was once common. There is a growing community of people that deeply care about woodblock prints now, favoring their physical characteristics, despite such prints falling out of fashion for a period of time during the heights of industrialization. This group of people understands the value of such craft, and is willing to spend more for it, since the difference in the form of the end product from mass-produced stuff is so stark.
The key thing here, and with other categories of physical goods (e.g. pottery, glassware, furniture, etc.), is that there's an obvious and tangible difference in the form of products produced via traditional means, and those mass manufactured, despite them serving fundamentally the same function.
With software however, I worry that this isn't the case, and the sort of resurgence of interest we see now in products produced by traditional means won't ever translate, assuming that we do move in the direction of more and more software engineering being "automated" by AI assistance. To an end-user of a piece of software, I imagine that there will be very little visible difference in the observable characteristics between fully hand-written and AI-produced software. Indeed, given the same requirements, there ought not be a difference between these two things. It's exactly this delta, however, which drives the passionate and less cost-sensitive enthusiasts to prefer handmade physical goods over manufactured ones. If both the form and the function of AI-produced software is identical to those of traditional software, but the AI-produced software is cheaper, why would anyone go with the traditional stuff? I understand that there are other factors at play here as well (e.g., particularly principled consumers etc.) but really, some combination of form, function, and cost seem like the biggest levers to me, and they seem on the face of it to be pulled toward the direction of AI, for better or worse.
I mean ... IDK, if you can't write that on your own without research, I don't think you should be writing a eulogy for programming in the New Yorker.
(I just wrote two version, one using python's random.sample and the other more verbosely, to double check myself.)
"At one point, we wanted a command that would print a hundred random lines from a dictionary file. I thought about the problem for a few minutes, and, when thinking failed, tried Googling." Really?
"But he had no idea what a pain it is to make an iPhone app. I’d tried a few times and never got beyond something that half worked. I found Apple’s programming environment forbidding." Perhaps. But compared to what? Yeah, it's not using VI to write Javascript or whatever he considers a programming environment.
Power tools didn't stop people from making things. Autocad didn't put architects out of business. Finite element modelling didn't destroy civil engineering. Quickbooks hasn't destroyed the need for accountants. Word processors didn't destroy writing. Google translate didn't remove the need for translators.
LLMs will be a power tool for good developers. I think many underestimate what it'll take to fully replace good or excellent software developers and what they do in totality.
All these AI replacing coders and creatives is just a broad marketing campaign to put downward pressure on dev and creative salary.
We could've said the same thing back when Code generation was popular. Or we couod say the same thing about stackoverflow, because a non-tech person can bungle together enough solutions from there to build something. Heck NoCode(TM) was putting coders out of job in last decade and here we are in 2023.
Compared to GPT's code-fu, most image generation models are light years ahead(imagine how those models can combine best of different artists into one painting), yet I still have plenty trouble describing in excruciatingly details about the painting I want with all the prompt-engineering-sauce and the end result is usually far away from desired state unless it is just normal sticker stuff.
Explaining requirements is hard, adapting to changes is hard, we still write tests and relatively every MR needs some fixes/updates and we have a whole army of management people trying to do the prompt engineering thing and we still have to interpret in between lines to get a piece of software(even basic CRUDs that makes millions), so yeah, it is all hype driven marketing catering to enterprise about saving all those money but in the end still spend more on the token count and prompt engineering and another army of people figuring out the right keywords to describe the product and whatnot.
All this things are mostly the same, it is like claiming that we'll habe quantum computers just like next year and any Joe rando can train their own GPT or crack open the SSL layer.
Don't feed the hype cycle of these marketers with ypur fear because more you engage on this, more their boat is lifted.
Show me a real product that was built/written by GPT and is making even few hundred in monthly revenue and I will be happy to change my mind.
Many of the top comments voice a hated of programming--that programming gets in the way of creating. For a certain set of problems I completely agree (like why is making a website so damn complex), but for many of the problems I work on there are a wealth of good, helpful tools and APIs such that the writing of the code melts away and I'm left with the intellectual challenge of organizing my thoughts and thinking creatively. To me, the article and some of the top comments tell me more about the problems they choose to tackle than the act of programming itself.
The compiler is already fulfilling a similar role in software development. We write in high-level languages so that we no longer need to deal with the intricacies of the hardware the program will be running on and can focus on high-level logic in a human-friendly programming language.
I suspect that AI tools will fulfill a similar role, relieving us of much of the need to read API documentation, like compilers have relieved us of the need to read instruction set manuals.
Wow, this guys working on rocket science, everyone. Watch out! We might get replaced!
My most recent thing is for a game I'm working on. I got a bunch of free sound FX from freesound.org, but they were AIFF format. I googled and found an online converter, then asked ChatGPT to use ffmpeg to write a script that goes through the directory converting the AIFFs to MP3s.
In the past if I would have written such a script it would have required me to "look into how to do it" and then I would have saved the script somewhere on my machine or online. Now I just deleted it right away. If I ever need to do it again or something similar I'll just ask ChatGPT and get it from scratch again.
Well there's your problem. Such a powerful tool, but that CLI is something else.
My last attempt to use it was to do with resolving circular calculations in Excel - I wanted some way of calculating the sum of a geometric series without having the series in actual cells. It kept recommending things that didn't work.
I'm always amazed to hear of people who manage to get working code from an AI. This has not been my experience.
The ability for chatGPT to essentially translate/expand your knowledge out to other languages (eg “how do I read in a file to utf8 again” ). It’s all just more leverage and power to solve the mundane, faster. The key point is you have to know the rough solution space already.
This is bad. If you don’t have newbie programmers, you won’t have senior programmers.
Once upon a time, developers had to pore over manpages, paper textbooks, or memorize it. Then came google. Next, stackexchange. And now GPT-4 - which is kind of a search engine plus rudimentary synthesis.
But let's be clear. This is low-hanging fruit. It's a poor substitute for actual thought. And surely we are safe.
Not fluid intelligence, not creative velocity, not creative originality, not oodles of domain knowledge … adaptability.
A new tool comes along? Adapt. A new idea breaks a long established paradigm? Adapt. A new skill is required? Adapt. As I get older adapting gets easier, because I treat ideas like objects - useful until they are not. No part of me cannot change, and my certainty in myself comes not from a bank of sanctified ideals I worship but in the knowledge that whatever comes, I will adapt and thrive. Fat client, thin client, centralised, edge, micro services, monolithic, ideas, tech, frameworks, everything is fluid and that’s what keeps things fun.
Same goes with the arrival of GPT, I embraced it, learnt it’s strengths and weaknesses and now I estimate I’m maybe 2x more productive because of it, that means more time of fun things that interest me.
Adapt, adapt, adapt
The graveyards are filled to overflowing with companies that were challenged by low-end 'crappy' products and said 'they are going after the bottom of the market, we are safe'... a few years before they entered a terminal decline, and a decade before they went extinct.
On the other hand, even if you can write it, does it mean you should write it? How much time does it cost you to write it? How much money your company is paying you in that amount of time? Is it more economical for GPT-4 to do it?
So I was curious and decided to ask the mistral-7b-instruct, and it gave me the following,
> Here is an example of a Python script that reads a dictionary file and prints 100 random lines:
```python
import random
with open('dictionary.txt', 'r') as f:
lines = f.readlines()
random_lines = random.sample(lines, 100)
for line in random_lines:
print(line.strip())
```
> This script uses the `random` module to select a random subset of the lines in the file. The `open` function is used to open the file and read its contents into a list of strings, which are then passed to the `random.sample` function to select 100 random lines. Finally, the selected lines are printed using a for loop and the `strip` method to remove any leading or trailing whitespace.> Note that this script assumes that the dictionary file is located in the same directory as the script and is named "dictionary.txt". You may need to modify the script to specify the correct path and filename for your dictionary file.
<dict shuf | head -n100$ convert foo.png foo.jpg
Took me almost literally two seconds to come up with that, unless your point is that at one point I had to learn it which, yeah, sure. What am I missing?
cat /usr/share/dict/words | while read LINE; do echo "$RANDOM $LINE"; done | sort -h | head -n 100 | awk '{ print $2 }'Programming is doomed!
but the only method involved here is string.strip(), so i don't think this is an example of the problem you describe
import random
n = 100
ws = [line.strip() for line in open('/usr/share/dict/words')]
for i in range(n):
j = random.randrange(i, len(ws))
ws[i], ws[j] = ws[j], ws[i]
print(ws[i])
(did i fuck that up)and yeah probably calling random.sample would be better. and usually import random is better than writing your own rng. but not always
I don't understand unbound excitement about using a paid online tool (!) that does not have reproducible source code (!!) and can sometimes (!!!) generate correct implementations of extremely well-known algorithms if given perfect description.
And I get it, there are highly specialized people that get very deep in the weeds in maybe HPC or embedded, even so most of them will at least still be aware, but moreover these people lack the knowledge to comment on programming or software engineering in the large, I wouldn't call them experts outside their limited domain if they really can't begin to know where to look to do a fucking permutation of a word list.
The old saying that for some 20 years of experience is 1 year and 19 repeats probably applies.
I see it as the work being replaced not actually being valuable work in the first place, at least not as valuable as some of us want them to be.
Take copywriting for example, that industry got decimated basically overnight by "AI". Why? It's because the work was actually not valuable, it was work any sufficiently complicated program could do let alone a common man. Writing catchy sales catches and blurbs? It's frankly a miracle that industry lasted as long and valued as high as it did.
Or the art scene for another example; if you as an artist or illustrator can be replaced by "AI" then your art was actually only worth a dime a dozen. I say this as a blunt objective observation, not intended as any personal attack or the like.
Or for an even more brutal example: Journalism. We literally can't tell apart man-written and "AI"-written journalism, and that's because man-written journalism has been in the absolute gutter for years if not decades now. Journalism is bad enough today that "AI"-journalists could come in and do an equal if not better job of it than man-journalists.
"AI" is, like many tools of astronomical convenience that came before it, making the act of work more accurately reflect its real value. Some workers will lose, others will win, but ultimately we will all be better off because work and the perceived value of that work aligning better is a very good thing for both producers and consumers.
There are many reasons for that, partly the "normies" realising that most of what we, programmers, do at our day-jobs is detrimental to the society as a whole (see Facebook, see all the jobs lost to automation, see the kafkaesque world brought about by digitising almost every interaction between a human being and the State/Government), it's partly because some of us, computer programmers ourselves, have realised the same thing, it's partly because of how many computer programmers are now financially way better off compared to the normally employed people, it's partly because of the smugness that some of us, the computer programmers, brandish in many social contexts, and there are countless other similar reasons.
The "making flappy bird with GPT-4 in 30 minutes" YouTube videos are fun to watch, but I'll do more than raise an eyebrow when someone releases a novel video game on Steam written primarily by GPT-4 in a fraction of the time a human alone could have.
-- Pablo Picasso
"Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith."
https://news.ycombinator.com/newsguidelines.html
Edit: you've unfortunately been breaking the site guidelines a ton lately (examples:
https://news.ycombinator.com/item?id=38215766
https://news.ycombinator.com/item?id=38215679
https://news.ycombinator.com/item?id=38082131
https://news.ycombinator.com/item?id=37800148)
We have to ban accounts that post like that, so if you'd please stop posting like that, we'd appreciate it. I don't want to ban an 8-year-old account, but we don't have much choice if the account is frequently posting like that.
> everybody looks them up anyway. It’s not real programming
The issue here is that it doesn't matter what you or I think. What matters is what boardmembers, CEOs and CTOs of companies which start cargo cults. You know.. the mainstream tech companies which everyone else follows. If they start shrinking development budgets (I mean shrinking the workforce) under the guise of 'with GPT, you're a 5x-10x coder now, so you'll only handle integrations and people problems', you or I will still be affected, although not replaced.
So don't think about this in black-or-white terms. The issue is way more nuanced than the capabilities of GPT or replacing a fulltime dev job.
the outcomes aren't controlled by a reality warping field from these CEO's and CTO's. If dev budgets shrink without actually being justifiable, the software suffers. Those who are made redundant still have their skills, and can offer competing products.
Until then, it's not a question of "eclipsed," it's a labor market, so it's a question of "efficiency" and the large language model people have a very long way to go to produce something that's generally as capable as a programmer.
So.. I guess if your craft is "scripting" you might be able to get by with GPT-4, but to imagine that your child is not going to ever need to "program" is eager nonsense.
Thought experiment: how could this apply to human thought? i.e. what is a low-end that we couldn't address?
Disclaimer: I really like Christensen's reasoning, theories, and expression of them... but he did predict the iphone would not be disruptive. So, at best, difficult to apply!
Would it be Random.int()? Or Random.range()? Or maybe there's a better choice that operates directly on a list? Or wait is it gonna return the value or a Generator of the value? Etc. Even if you remember how to do random number generation in your language, this specific use case probably necessitates a Google unless you have a godlike memory, or you don't mind half-assing it.
I don't think googling for library methods is a sign of a bad developer. On the contrary, googling for specific library functions instead of hacking something together using general library functions is a sign of a good developer.
That said, at least for python, I personally wouldn't have to google. I use random.choices a few times a year.
like, try this
import collections, random
def shuffle(xs): # naive intuitive shuffle
for i in range(len(xs)):
j = random.randrange(len(xs))
xs[i], xs[j] = xs[j], xs[i]
def first_of(n):
xs = list(range(n))
shuffle(xs)
return xs[0]
print(collections.Counter([first_of(3) for i in range(100_000)]))
note that 1 comes out first 25% more often than 2, but with a fair shuffle all three should have an equal chance of being firsteven without running it you can figure out logically that it must be biased in some way because there are 3! = 6 possible permutations and 3³ = 9 equally likely sequences of choices for j (each producing one of those permutations), and 9 is not divisible by 6, so some of those permutations have to be more likely than others
so i think this algorithm is a good one to get from a library if its randomness is important to you
not from chatgpt, which commonly does give you subtly buggy code
<dict shuf -n 100The "<" is actually an unnecessary additional character to type.
Finally, because I’ve built up familiarity with the shell over my career, I can come up with this formula as fast as I can type it. At this point, ChatGPT would slow me down: (1) because this sort of thing is basically muscle memory and (2) I have to actually think about the code ChatGPT produces to verify it is correct, which is almost as difficult as producing it in the first place.
In my experience LLMs work best if you already know how to do something, but you just can't be bothered to actually do it.
When exploring unknown territory, keep your questions simple and ask for clarification on anything you don't understand. It will not just help you, but the AI as well.
There are simple explicit formulas for this.
Or, if n is positive infinity, you assume that |x| < 1 and thus the sum is (0 - 1) / (x-1) = 1/(1-x).
If you need the sum from x^m to x^n, that's equal to the sum from 0 to n minus the sum from 0 to (m-1).
You can derive the formula yourself without difficulty:
sum = 1 + x + x^2 + ... + x^n
(sum)(x) = x + x^2 + ... + x^n + x^{n+1}
(sum)(x) - sum = x^{n+1} - 1
(sum)(x-1) = x^{n+1} - 1
(sum) = (x^{n+1} - 1)/(x-1)> Use reservoir sampling to get 100 random lines from a dictionary that doesn’t fit into memory. Give me an implementation in Python.
> Reservoir sampling is a great choice for randomly selecting a fixed number of items from a stream of unknown size, especially when the entire dataset cannot fit into memory. Here's a Python implementation for selecting 100 random lines from a large file, like a dictionary, using reservoir sampling:
```python
import random
def reservoir_sampling(file_name, k):
reservoir = []
with open(file_name, 'r') as file:
for i, line in enumerate(file):
if i < k:
# Fill the reservoir array
reservoir.append(line.strip())
else:
# Randomly replace elements in the reservoir
# with a decreasing probability.
# Choose an integer between 0 and i (inclusive)
j = random.randint(0, i)
if j < k:
reservoir[j] = line.strip()
return reservoir
# Example usage
file_path = 'path_to_your_large_file.txt' # Replace with your file path
sampled_lines = reservoir_sampling(file_path, 100)
print(sampled_lines)
```
> This script opens a file and reads through it line by line. For the first 100 lines, it adds them directly to the reservoir. For each subsequent line, it randomly decides whether to replace an existing line in the reservoir with the new line. The probability of replacing decreases as it progresses through the file, ensuring each line has an equal chance of being included in the final sample.I laid out the constraints, but I did not mention reservoir sampling at all. The script seems to work as expected when I run it against a dictionary file.
Can you use random access into the file to sample k lines in O(k) time instead of O(n) time?
Here is the provided solution and some discussion of the problems with the problem itself: https://chat.openai.com/share/54807663-17ca-4e7d-bc76-cd3cf3...
I fully expect human programming to be completely obsolete by then.
I mean, it could happen. I don't know it can't, and I won't be totally shocked if it does.
I'm not totally sold either, though.
Improve "at all?" Well, of course it will, but you're just moving the goalposts here. I'm telling you I don't think it's going to be anywhere near the level of AGI that can solve most programming tasks with less effort an energy cost than a human in that time.
> It will just be stuck at it being able to write simple scripts even in 2040?
Pretty much. You can improve the technology, but you have some massive gaps you have to cover, and electrical use is going to be one of them. Short a massive improvement in transistor technology or a move to an entirely new computing platform, I don't see it happening in that time.
> I fully expect human programming to be completely obsolete by then.
You seem that you mostly _want_ that to be true, so much so, that you've failed to complete the analysis. What's worse is, I'm just hedging your bet. If I'm wrong, no big deal, if you're wrong, you're in for a world of pain and problems. I get that this is hacker news and untamed expectations are en vogue here, but I'm content to be the hipster on this issue.
GPT4’s capabilities are quite close to a human’s even now, especially when asking it about areas that I haven’t specialized in. And now it has vision capability, it can see what it is doing.
With twice the time remaining that has elapsed, clearly there’s plentiful time for its capabilities to increase and for it to get faster and cheaper. And it will not be a linear improvement but an exponential one.
I don’t want programmers to become obsolete. I just consider the likelihood that we have anything to offer over one of these agents in the medium term to be very unlikely. Why would you want to spend $100,000s on a human if you can get something in less time from an AI for $1000s? Human programmers will be attacked on three fronts: price, quality and time. The quality aspect is the only one that is arguable: price and time are already lost.
I still maintain that switching from front end Angular to backend data engineering is more like switching from electrician to carpenter. They're both builders, but their tools and objectives are very different. If one doesn't see that, I question how deep into the craft they really are.
You can definitely be skilled in a certain tool (language, framework) and that is valuable.
Or you can be the shallow generalist (handyman) running around doing whatever. But the specialist (electrician) is gonna make more than you installing the same outlets.
I'd prefer to think it's more like a real engineering problem, and less like a simple interview question :-)
And it definitely shows the limits of GPT here: it pointed out that the ends of the file might be tricky, but ignored the very conceptually simple solution of considering the file as circular (if you go past either end you simply wrap around).
And it misses the real problem with its implementation: the probability of sampling each line is now directly proportional to the length of the line before it (because it seeks into that line first and then skips it!)
So the word after "begins" is twice as likely to come up as the word after "and".
PS in the case of dictionary words with a length limit of say 30 letters, there is still an O(k) general solution using rejection sampling.
"Remember, this is a probabilistic approach and works well if the lines in your file are roughly the same length. If the line lengths vary significantly, some lines will have a higher or lower chance of being selected."
It had already addressed "the real problem with its implementation" that you pointed out.
> PS in the case of dictionary words with a length limit of say 30 letters, there is still an O(k) general solution using rejection sampling.
Again, what ChatGPT wrote:
"In a typical scenario where lines can have variable lengths, true O(k) random sampling isn't feasible without some prior knowledge about the file."
Knowing that the limit is 30 characters without question counts as "some prior knowledge".
As an interviewer, it sounds like you're not hearing what the candidate is saying.
> And it definitely shows the limits of GPT here
I don't think anyone here is claiming that ChatGPT is limitless. The topic is "a coder considers the waning days of the craft", not "a coder considers the bygone days of the craft." ChatGPT is capable of solving many real world problems already. If it continues improving, some people are concerned about what that could mean, especially for less experienced developers.
How many people have you interviewed with that brainteaser that have actually provided the complete solution you're looking for? Vanishingly few, I would imagine, unless you were dropping some serious hints. It's not a real world problem. Most brainteasers have solutions that are "conceptually simple" once you already know the solution.
> I'd prefer to think it's more like a real engineering problem, and less like a simple interview question
It's absolutely not, though. It's exactly like the infamous trick questions that many tech interviews are known for, which have nothing to do with real engineering that you would encounter on the job.
You might as well have someone invert a binary tree for all the value that it provides.
Zero, I just wanted to push the limits of the question in this thread to see what GPT did.
But you seem to not be enjoying that so let's call this quits.
Even things like "what flags to use with ffmpeg" are a shell reverse-history search away, assuming one has ever used them in the past.
In 2013 I was using complex ffmpeg commands and using filters in there. Could remember the stuff easy. Now, I've gotta reference my ffmpeg notes more frequently.
Where's that XKCD about using the tar command?
As of my last knowledge update in January 2022, I can't provide specific details about the latest XKCD comics or their numbers because my training data only includes information available up to that time. However, you can easily find XKCD comics on the official XKCD website (xkcd.com) by using the search function or by browsing through the archives.
If there's a specific XKCD comic related to the "tar" command that you're looking for, you might be able to find it by searching for keywords like "XKCD tar command" on a search engine or directly on the XKCD website. The website has a good search feature that allows you to find comics based on keywords or topics.
> The XKCD comic about using the `tar` command can be found at [XKCD Comic #1168](https://xkcd.com/1168/). The comic humorously addresses the complexities and challenges of remembering the correct syntax for the `tar` command, a common scenario for many who use Unix-based systems.
tar xf for extract. Add v to show the files. tar cf to create. tar tf to "test" (list). Add -C dir at the end to extract to different directory. Set file to "-" for stdin.
That's all there's to it for 99% of use cases. I don't get how anyone can have difficulty with that: f for file, and x/c/t are pretty mnemonic.
While GPT4 is incredible, it fails OFTEN. And it fails in ways that aren’t very clear. And it fails harder when there’s clearly not enough training resources on the subject matter.
But even hypothetically if it was 20x better, wouldn’t that be a good thing? There’s so much of the world that would be better off if GOOD software was cheaper and easier to make.
Idk where I’m going with this but if coding is something you genuinely enjoy, AI isn’t stopping anyone from doing their hobby. I don’t really see it going away any time soon, and even if it is going away it just never really seemed like the point of software engineering
LLMs in particular can be a very fast, surprisingly decent (but, as you mention, very fallible) replacement for Stack Overflow, and, as such, a very good complement to a programmer's skills – seems to me like a net positive at least in the near to medium term.
I use chat-gpt every day for programming and there are times where it’s spot on and more times where it’s blatantly wrong. I like to use it as a rubber duck to help me think and work through problems. But I’ve learned that whatever the output is requires as much scrutiny as a good code review. I fear there’s a lot of copy and pasting of wrong answers out there. The good news is that for now they will need real engineers to come in and clean up the mess.
My concern isn't about an LLM replacing me. My concern is our CIO will think it can, firing first, and thinking later.
The training systems we use for LLMs are still so crude. ChatGPT has never interacted with a compiler. Imagine learning to write code by only reading (quite small!) snippets on GitHub. That’s the state llms are in now. It’s only a matter of time before someone figures out how to put a compiler in a reinforcement learning loop while training an LLM. I think the outcome of that will be something that can program orders of magnitude better. I’ll do it eventually if nobody else does it first. We also need to solve the “context” problem - but that seems tractable to me too.
For all the computational resources they use to do training and inference, our LLMs are still incredibly simple. The fact they can already code so well is a very strong hint for what is to come.
I think that sentence nails it. For the people who consider "searching stackoverflow and copy/pasting" as programming, LLMs will replace your job, sure. But software development is so much more, critical thinking, analysing, gathering requirements, testing ideas and figuring out which to reject, and more.
I wouldn't be so sure it will be very long before solving big, hard, and complex problems is within reach...
Nice thing about Stack Overflow is it’s self-correcting most of the time thanks to,
GPT not so much.
When I’m stumped, it’s usually on a complex and very multi-faceted problem where the full scope doesn’t fit into the human brain very well. And for these problems, GPT will produce some borderline unworkable solutions. It’s like a jack of all trades and master of none in code. It’s knowledge seems a mile wide and an inch deep.
Granted, it could be different for junior to mid programmers.
So my usage has mostly been for it to play a more advanced rubber duck to bounce ideas and concepts off of and to do some of the more tedious scripting work (that I still have to double check thoroughly).
At some point GPT and other LLMs might be able to replace what I do in large parts. But that's still a while off.
I think much of using it well is understanding what it can and can’t do (though of course this is a moving target).
It’s great when the limiting factor is knowledge of APIs, best practices, or common algorithms. When the limiting factor is architectural complexity or understanding how many different components of a system fit together, it’s less useful.
Still, I find I can often save time on more difficult tasks by figuring out the structure and then having GPT-4 fill in the blanks. It’s a much better programmer once you get it started down the right path.
Here's an example I used the other day: Our project had lost access to our YT channel, which had 350+ videos on it (due to someone's untimely passing and a lack of redundancy). I had used yt-dlp to download all the old videos, including descriptions. Our community manager had uploaded all the videos, but wasn't looking forward to copy-and-pasting every description into the new video.
So I offered to use GPT-4 to write a python script to use the API to do that for her. I didn't know anything about the YT API, nor am I an expert in python. I wouldn't have invested the time learning the YT API (and trying to work through my rudimentary python knowledge) for a one-off thing like this, but I knew that GPT-4 would be able to help me focus on what to do rather than how to do it. The transcript is here:
https://chat.openai.com/share/936e35f9-e500-4a4d-aa76-273f63...
By contrast, I don't think there's any possible way the current generation could have identified, or helped fix, this problem that I fixed a few years ago:
https://xenbits.xenproject.org/xsa/xsa299/0011-x86-mm-Don-t-...
(Although it would be interesting to try to ask it about that to see how well it does.)
The point of using GPT-4 should be to take over the "low value" work from you, so that you have more time and mental space to focus on the "high value" work.
The one time I've found ChatGPT to be genuinely useful is when I asked it to explain a bash script to me, seeing as bash is notoriously inscrutable. Still, it did get a detail wrong somehow.
i mean raise your hand if debugging code that looks obviously correct is the part of programming you enjoy most?
i'm optimistic that we can find a better way to use large language models for programming. run it in a loop trying to pass a test suite, say, or deliver code together with a proof-assistant-verified correctness proof
In a larger sense though I think I have looked for projects that allowed a certain artistic license rather than the more academic code that you measure its worth in cycles, latency or some other quantifiable metric.
I have thought though for some time that the kind of coding that I enjoyed early in my career has been waning long before ChatGPT. I confess I began my career in a (privileged it seems now) era when the engineers were the ones minding the store, not marketing.
Lately, I have been using ChatGPT and the OpenAI API to do exactly that for a few projects. I used it to help me round out the design, brainstorm about approaches, tune database requirements, etc. I basically got to the point where I had a proof of concept for all the separate components in a very short amount of time. Then for the implementation it was a similar story. I already had a much more solid idea (technical and functional design, if you will) of how I wanted to implement things than I normally do. And, for most of the things where I would get slowed down normally, I could just turn to the chat. Then by just telling it what part I had trouble with, it would get me back on track in no time.
Having said all that, I couldn't have used it in such a way without any knowledge of programming. Because if you just tell it that you want to "create an application that does X" it will come up with overly broad solution. All the questions and problems I presented to it were based from a position where I already knew the language, platform and had a general sense of requirements.
Why make something that produces low level code based off of existing low level code instead of building up meaningful abstractions to make development easier and ensure that low level code was written right?
Basically react and other similar abstractions for other languages did more to take "coding" out of creating applications than gpt ever will IMO.
The core of what we do never changes - get input from user, show error, get input again, save the input, show the input.
Now it just got more complicated, even though 20 years later most of this could be a dull Rails or a Django app.
And AI will probably do the decent CRUD part, but you will still need an expert for the hard parts of software.
But my favourite bit is refining and optimising the code!
Finding the patterns and abstractions I can make to DRY it out.
That's the bit I like :-)
Wrestling APIs and trying to understand inadequate documentation is the worst part!
There were probably a lot of loom weavers that felt the same about their tools. But the times, they are a-changing.
You're not the minority. You're the majority. The majority can't look reality in the face and see the end. They lie to themselves.
>While GPT4 is incredible, it fails OFTEN. And it fails in ways that aren’t very clear. And it fails harder when there’s clearly not enough training resources on the subject matter.
Everyone and I mean everyone knows that if fails often. Use some common sense here. Why was the article written despite the fact that Everyone knows what you know? Because of the trendline. What AI was yesterday versus what it is today heralds what it will be tomorrow and every tomorrow AI will be failing less and less and less until it doesn't fail at all.
>But even hypothetically if it was 20x better, wouldn’t that be a good thing? There’s so much of the world that would be better off if GOOD software was cheaper and easier to make.
Ever the optimist. The reality is we don't know if it's good or bad. It can be both or it can weigh heavily in one direction. Most likely it will be both given the fact that our entire careers can nearly be replaced.
>Idk where I’m going with this but if coding is something you genuinely enjoy, AI isn’t stopping anyone from doing their hobby. I don’t really see it going away any time soon, and even if it is going away it just never really seemed like the point of software engineering
Sure. AI isn't going to end hobbies. It's going to end careers and ways of life. Hobbies will most likely survive.
This sentiment parrots Sam Altman's and Musk's insistence that "AI" is super-powerful and dangerous, which is baseless rhetoric.
When I’m writing business logic unique to this specific domain then please stop mumbling bs at me.
I cannot really envision a more empowering thing for the common person. It should really upset the balance of power.
I think we'll see, soon, that we've only just started building with code. As a lifelong coder, I cannot wait to see the day when anyone can program anything.
Automatic program generation from human language really feels like the same problem with machine translation between human languages. I have an elementary understanding of French and so when I see a passage machine translated into French (regardless of software, Google Translate or DeepL) I cannot find any mistakes; I may even learn a few new words. But to the professional translator, the passage is full of mistakes, non-idiomatic expressions and other weirdness. You aren't going to see publishers publishing entirely machine translated books.
I suspect the same thing happens for LLM-written programs. The average person finds them useful; the expert finds them riddled with bugs. When the stakes are low, like tourists not speaking the native language, machine translation is fine. So will many run-once programs destined for a specific purpose. When the stakes are high, human craft is still needed.
I can ask exactly what I want in English, not by entering a search-term. A search-term is not a question, but a COMMAND: "Find me web-pages containing this search-term".
By asking exactly the question I'm looking the answer to I get real answers, and if I don't understand the answer, I can ask a follow-up question. Life is great and there's still an infinite amount of code to be written.
We tested CoPilot for a bit but for whatever reason, it sometimes produced nice boilerplate but mostly just made one-line suggestions that were slower than just typing if I knew what I was doing. It was also strangely opinionated about what comments should say. In the end it felt like it added to my mental load by parsing and deciding to take or ignore suggestions so I turned it off. Typing is (and has been for a while) not the hard part of my job anyway.
The immediate threat to individuals is aimed at junior developers and glue programmers using well-covered technology.
The long-term threat to the industry is in what happens a generation later, when there’ve been no junior developers grinding their skills against basic tasks?
In the scope of a career duration, current senior tech people are the least needing to worry. Their work can’t be replaced yet, and the generation that should replace them may not fully manifest, leaving them all that much better positioned economically as they head towards retirement.
But that is just one part of being a good software engineer. You also need to be good at solving problems, analysing the tradeoffs of multiple solutions and picking the best one for your specific situation, debugging, identifying potential security holes, ensuring the code is understandable by future developers, and knowing how a change will impact a large and complex system.
Maybe some future AI will be able to do all of that well. I can't see the future. But I'm very doubtful it will just be a better LLM.
I think the threat from LLMs isn't that it can replace developers. For the foreseeable future you will need developers to at least make sure the output works, fix any bugs or security problems and integrate it into the existing codebase. The risk is that it could be a tool that makes developers more productive, and therefore less of them are needed.
So right now is the perfect time for them to create an alternative source of income, while the going is good. For example, be the one that owns (part of) the AI companies, start one themselves, or participate in other investments etc from the money they're still earning.
I'm sure there was a phase were some old school coders who were used to writing applications from scratch complained about all the damn libraries ruining coding -- why, all programmers are now are gluing together code that someone else wrote! True or not, there are still programmers.
But the worst problem I ever had was a vice president (acquired when our company was acquired) who insisted that all programming was, should, and must by-edict be only about gluing together existing libraries.
Talk about incompetent -- and about misguided beliefs in his own "superior intelligence".
I had to protect my team of 20+ from him and his stupid edicts and complaints, while still having us meet tight deadlines of various sorts (via programming, not so much by gluing).
Part of our team did graphical design for the web. Doing that by only gluing together existing images makes as little sense as it does for programming.
But… we’d need far, far fewer programmers. And programming was the last thing humans were supposed to be able to do to ear a living.
And once 100% of the problems that can be solved with software are already solved with software... that's pretty much post-scarcity, isn't it?
I don't, however, think that we're anywhere near being replaced by the AI overlords.
Maybe it'll take the coding part of my job and hobbies away from me one day, but even then, I feel that is more of an opportunity than a threat - there are many hobby projects I'd like to work on that are too big to do from scratch where using LLMs are already helping make them more tractable as solo projects and I get to pick and choose which bits to write myself.
And my "grab bag" repo of utility code that doesn't fit elsewhere has had its first fully GPT4 written function. Nothing I couldn't have easily done myself, but something I was happy I didn't have to.
For people who are content doing low level, low skilled coding, though, it will be a threat unless they learn how to use it to take a step up.
But I worry, because it is owned and controlled by a limited few who would likely be the sole benefactors of its value.
I will admit, when Copilot first became a thing in 2021, I had my own “I’m about to become obsolete” moment.
However, it’s become clear to me, both through my own experience and through research that has been conducted, that modern LLMs are fundamentally flawed and are not on the path to general intelligence.
We are stuck with ancient (in AI terms) technology. GPT 4 is better than 3.5, but not in a fundamental way. I expect much the same from 5. This technology is incredibly flawed, and in hindsight, once we have actual powerful AI, I think we’ll laugh at how much attention we gave it.
It answers questions confidently but with subtle inaccuracies. The code that it produces is the same kind of non-sense that you get from recent bootcamp devs who’ve “mastered” the 50 technologies on their eight page résumé.
If it’s gotten better, I haven’t noticed.
Self-driving trucks were going to upend the trucking industry in ten years, ten years ago. The press around LLMs is identical. It’s neat but how long are these things going to do the equivalent of revving to 100 mph before slamming into a wall every time you ask them to turn left?
I’d rather use AI to connect constellations of dots that no human possibly could, have an expect verify the results, and go from there. I have no idea when we’re going to be able to “gpt install <prompt>” to get a new CLI tool or app, but, it’s not going to be soon.
My view is that I am about to enter the quantum productivity period of coding.
I am incredibly excited about AI assistance on my coding tasks, because it improves not only what I’m writing, but also helps me to learn as I go. I have never had a better time writing software than I have in the last year.
I’ve been writing software for a few decades. But now I’m able to overcome places where I get stuck and have almost a coach available to help me understand the choices I’m making and make suggestions constantly. And not just wandering over to a fellow cuders desk to ask them about a problem I am facing, but actually give me some productive solutions that are actually inspirational to the outcome.
It’s amazing.
So why do people think that coding is coming to some kind of end? I don’t see any evidence that artificial intelligence coding assistants are about to replace coders, unless you… suck badly at building things, so what are people getting on about?
I feel like somebody came along and said, “foundations are now free, but you still get to build a house. But the foundations are free.”
I still have to build a house, and I get to build an entire house and architect it and design it and create it and socialize it and support it and advocate for it and explain it to people who don’t understand it but… I don’t have to build a foundation anymore so it’s easier.
Shoot me down. I’m not relating here at all.
If I take a junior programmer's task, say, creating CRUD endpoints. Describing the requirement in a way that matches exactly what I want will probably take more time that doing the coding assisted by something like copilot. Can we really imagine a non technical user using an AI having it do development from A to Z? What if the generated code has a bug, can we really imagine that at no point someone will need to be in the loop? Even if a tech person intervenes in the case of a bug how much time would be lost to investigate what the AI wrote and trying to understand what happened in retrospect - the time or cost saved to write the code would be lost quickly. Writing code is a small part of the job after all. LLMs are good at generating code, but they are fundamentally not problem solvers.
The technology is amazing but I think LLMs will just be another tool in the arsenal for devs. It's also an amazing tutor. It can avoid having to call a developper for some self contained problems (writing a script to scrape content from a web page for example).
This captures the reason I'm optimistic about AI-assisted programming.
The learning curve for getting started programming is horribly steep - and it's not because it's hard, it's because it's frustrating. You have to sweat through six months of weird error messages and missing semicolons before you get to the point where it feels like you're actually building things and making progress.
Most people give up. They assume they're "not smart enough" to learn to program, when really they aren't patient enough to make it through all of that muck.
I think LLMs dramatically impact that initial learning curve. I love the idea that many more people will be able to learn basic programming - I think every human being deserves to be able to use computers to automate tedious repetitive tasks in their lives.
Him: Coding will soon be obsolete, it will all be replaced by chatgpt-type code gen.
Me: OK but the overwhelming majority of my job as a "senior engineer" is about communication, organizational leadership, and actually understanding all the product requirements and how they will interface with our systems. Yes, I write code, but even if most of that were augmented with codegen, that would barely even change most of what I do.
For the sake of argument, let’s say it could replace the coding part cost effectively. Can it still do all the other parts? Take ambiguous requirements and seek clarity from design, product, etc. (instructing an AI to a sufficient degree to build a complex feature could almost be a coding task itself). Code reviews. Deal with random build failures. Properly document the functionality so that other programmers and stakeholders can understand. Debug and fix production issues. And that’s just a subset.
Realistically, in the future there will be a long phase of programmers leveraging AI to be more efficient before there’s any chance that AI can effectively replace a decent programmer.
This will be an advantage to engineers who think on the more abstract side of the spectrum. The “lower level” programming tasks will be consumed first.
At the end of the day, the bar is being lowered. Is that a bad thing? From a selfish perspective, yes. From a societal perspective, no. At the risk of digressing, I think one of the issues that my part of the world (Canada and to a lesser extent, America) has been faced with is inequality. I know people who work more "average" service jobs and they make substantially less than engineers do and that's something that's made me pretty uneasy over the past few years. The societal value of generative AI is in making knowledge work such as law, medicine, and software engineering much more accessible to "average" people.
Are there downsides to that? Probably but I think granting power evenly is probably a better path to utopia than misguided elitism. The latter sounds like the path to despotism.
I needed a quick and dirty utility developed last month and by breaking the problem down into 4-5 steps myself I got ChatGPT to write functions for those steps and then I bolted them together. Most of it went smooth but one part took far too much coaxing and refinement before it generated the right thing.
My experience, even if I'm just trying to be lazy and have it generate some super generic code for me, is that I have to spend double the time I'd have spent if I just wrote the damn script myself with how much I have to scrutinize every single line it generates.
And I personally have 0 desire to prompt "engineer" and do the "Open"AI's work for it by thinking up the perfect prompt for it. One day for sure these AI models will be really good and able to do some impressive stuff, but for now all I can see is a hype wave from people with vested interests in this stuff pushing it onto ignorants, akin to the crypto BS just with even more money behind it.
"at one point, we wanted a command that would print a hundred random lines from a dictionary file. I thought about the problem for a few minutes, and, when thinking failed, tried Googling. "[...]
I returned to the crossword project. Our puzzle generator printed its output in an ugly text format, with lines like "s""c""a""r""""k""u""n""i""s""" "a""r""e""a". I wanted to turn output like that into a pretty Web page that allowed me to explore the words in the grid, showing scoring information at a glance. But I knew the task would be tricky[...]
This man has written software professionally for 20 years? The last part of the article is at least correct. Code generation isn't going to replace programmers. Almost all SNES and NES games were written in Assembly. Modern game devs learn Unity and Unreal and visual scripting. Are there now more or fewer game devs? Writing a few lines of code that generate a metric ton of more code is what most of us have been doing for many years now. Abstraction and tooling does not change the nature of the profession and it certainly doesn't end it.
The biotech startup I join 3 months ago have a pipeline written by one of the founders, who has experience in programing but not extensive so he used co-pilot and GTP a lot. The thing WORKS, it actually delivers! this is what got the startup going so it is amazing.
On the first month of the re-write I was able to cut costs in the 100x mark. And on the third month I was able to uncover some subtle bugs that affect the entire pipeline and fixing them is out of the realm of possibility in the current state of AI.
I have no answer whatever employers will continue to value what I bring to the table in 5/10/15 years time especially after AI will improve. I suspect many will not as they will have 'good enough' results from the AI.
Indeed!
>On the first month of the re-write I was able to cut costs in the 100x mark.
That's clearly where this is all heading: AI delivering the rough draft, and humans applying what AI inevitably misses.
>And on the third month I was able to uncover some subtle bugs that affect the entire pipeline and fixing them is out of the realm of possibility in the current state of AI.
It's entirely possible that had you or another human written the thing in the first place those bugs (or equivalent thereof) would have still been there. As you said, "subtle".
>I have no answer whatever employers will continue to value what I bring to the table in 5/10/15 years time especially after AI will improve. I suspect many will not as they will have 'good enough' results from the AI.
I would be more optimistic based on your own account, for the reasons I mentioned above.
That said, I am glad that I am self-employed, with a business that I am quite confident AI cannot replicate, and code purely for fun.
>> I would make sure that my kids could program computers. It is among the newer arts but also among the most essential
I've got kids. 1 can program. 1 tried it, and didn't like it. 1 just rolled her eyes at me.
Turns out, for most people, programming is not like reading or writing at all. Got a question? Ask Google (or GPT) or Alexa. 99% of people can't code, and will never need to code.
You may as well argue that cooking healthy food is a universally needed skill. Or riding a bicycle, or kicking a ball. All are of course really helpful life skills, but lots of people get by in the world just fine without them.
So as one parent to another, I can tell you that you don't need to worry about this. It's good you have plans for your children. But don't worry too much about it. Turns out children will learn what they are interested in, and pretty much ignore the rest. They'll grow up, change, mature and become functional people in their own right.
No doubt you'll get plenty of eye rolls along the way.
> At one point, we wanted a command that would print a hundred random lines from a dictionary file. I thought about the problem for a few minutes, and, when thinking failed, tried Googling.
and concluded that this person is not a skilled enough programmer to be making any statements about the demise of the craft, nuanced or not.
This is how I see it as well - but we're at the point where you can decide what side of the fence you want to be on.
Keep playing with ChatGPT, but Level up around Systems Design and basic coding principles.
Someone has to oversee the work that the AI's do, why not be one of those people?
1. AI can replace coders altogether. In this case we live in an absolutely amazing world in which anyone can conjure the video game of their dreams instantly.
2. AI cannot do this, in which case there is still (clearly) an essentially infinite demand for new software.
Obviously, we do not live in world number 1. If we have arrived at the world in which AI can do the job of all coders, then why is there not an infinite supply of high quality software? In fact, this would be a software utopia.
World #1 would probably replace all other kinds of jobs. A part of programming, sure, is about languages, syntax, fixing bugs, functionality, etc. But the other part is about robustness, organization, and simplification. This other part won't die.
Don’t get me wrong, there are few times it has really really impressed me. And there are a few things it really shines at, but most of the time I find it getting in the way.
I’m not so concerned about the craft of programming. But those that make a good living automating trivial tasks should be more worried.
If you are doing something that is identical to something that has already been done, maybe it works...but then you just look at GH anyway.
For any other situation it is useless because it doesn't know how to program. Pretty much no company wants you typing in random shit into the internet either, it is accident waiting to happen.
Doesn't even work for automation. This is still an absolutely huge area of potential productivity gain. If we still don't have most people taking full advantage of computers, are they just going to magically automate everything? No.
Plus it really annoyingly doesn’t seem to handle quotes and brackets, if I’m halfway through writing a line of code and it suggests a reasonable completion I’ll press tab and it’ll fuck up all the brackets and quote marks, I don’t know what I’m doing wrong here but it really annoys me.
We had a guy from Github do a demonstration for us and the most complicated thing he got it to do was write some getters and setters for a class representing a linked list iirc. And even then he spent more time having to cycle through suggestions to find one that he wanted than he would have spent just writing it out of his head.
Yet to be convinced personally.
I think as the technology improves, it’ll get better. But I’m more hoping it’d be able to do something more interesting, say generate tests in the background.
All of the things you wrote in this comment were false.
My opinion is that AI proponents extrapolate too much and too optimistically; they always assume linear or simply uninterrupted improvement, and they assume they breadth of AI will increase as well. I see no proof for any of those so far.
Time will tell, obviously, and they may very well turn out to be correct. I just wonder why people get so worked up about it.
Personally I also don't understand why people want the programmer profession to cease to exist but oh well. I guess envy and schadenfreude are factors. I wouldn't know because I don't wish anyone unemployment.
That would greatly help improve the perception of such people who otherwise sound like the mindless AI boosters posting shallow engagement-bait on Twitter.
Crypto-optimism has poisoned the well. Too much unchecked boosterism.
In my mind there are two major architectural problems that still need to be solved if I am to be convinced AGI is close:
1. Medium term memory
2. The need to relive an entire conversation just to produce the latest response.
Here is another question: Suppose we develop AGI. What will the energy requirements be for that system? The scale at which ChatGPT is used today would be peanuts compared to a system that is supposed to replace millions of knowledge workers.
Second, I am seeing a parallel here with the college educators being preoccupied with how to teach calculus. Yesterday, I was reading the preface that Martin Gardner wrote to “Calculus Made Easy” by Silvanus P. Thompson and he wrote something along the lines of how many students and even educators (circa 1998) do not see the point in knowing how to differentiate or integrate by hand. I suppose now more than ever, some people even suggest to stop teaching calculus to high school (and even college students) in favor of some kind of vague statistics, data science, or information literacy course. But most mathematicians would discourage that kind of approach.
I think I agree with the last point about how it is not really about the knowledge of code itself but rather it is about being curious and knowing enough to not let yourself be taken advantage of.
Software engineers, even if just reduced to AI-bot controllers, will still be essential links between people who have no idea how computers work and the actual machines.
I think that’s the case with every discipline for it, not only programming. Even when everyone was amazed it could make poetry out of everything, if you asked for a specific type of poem and specific imagery in it, it would generally fail.
Coding is not uniquely vulnerable to AI, it just feels that way because initial AI products are targeted at technical audiences, and a large corpus of training data could be snagged with minimal legal burdens.
Hahaha. Thanks for the laugh! I always thought the guy was a fraud.
If I need to know how to convert a u32 to little endian bytes in Rust, for example, my first instinct isnt to go to SO or chatgpt, my first instinct is usually to go to the docs and search for it. Or just try it out in an IDE. u23::to and hitting tab did the trick, so now I can click on that and read the in-source docs. Same for C++, C, bash, anything that has docs or manpages.
I use stackoverflow for problems like "i have this error and it doesnt tell me whats wrong", like "exception in docker-compose like 3, . missing resource ID" -- i need SO to tell me that this means I dont have an image-name.
If they couldn't see ChatGPT coming, I'm not convinced of the whole "it'll never be able to..." spiel.
Open source may trail openai if they come out with a 20x improvement, but I'm not sure the dystopian future playing out is as likely as I would have thought it 1-2 years ago.
Ultimately, the most valuable coders who will remain will be a smaller number of senior devs that will dwindle over time.
Unfortunately, AI is likely to reduce and suppress tech industry wages in the long-term. If the workers had clue, rather than watching their incomes gradually evaporate and sitting on their hands, they should organize and collectively bargain even more so than Hollywood actors.
I've come to state something like this as "programming is writing poetry for many of your interesting friends somewhere on the autistic spectrum". Some of those friends are machines, but most of those friends are your fellow developers.
The best code is poetry: our programming languages give a meter and rhyme and other schemes to follow, but what we do within those is creative expression. Machines only care about the most literal interpretations of these poems, but the more fantastic and creative interpretations are the bread and butter of software design. This is where our abstractions grow, from abstract interpretations. This is the soil in which a program builds meaning and comprehension for a team, becomes less the raw "if-this-then-that" but grows into an embodiment of a business' rules and shares the knowledge culture of the whys and hows of what the program is meant to do.
From what I've seen, just as the literal interpretations are the ones most of interest to machines, these machines we are building are most good at providing literal interpretable code. There's obviously a use for that. It can be a useful tool. But we aren't writing our code just for the solely literal minded among us and there's so much creative space in software development that describes/neeeds/expands into abstraction and creative interpretation that for now (and maybe for the conceivable future) that still makes so many differences between just software and good software (from the perspectives of long-term team maintainability, if nothing deeper).
Er... it didn't get out, right? Right!?
The massive shared model could do better if it was fed on your company's private source-code... but that's something that probably isn't/shouldn't-be happening.
Only if you like technofeudalism—it’s not like you’re going to own any piece of that future.
Have you noticed AI becoming more and more open source like it still was at the start of the year, or has that kinda seized up? What gives?
It’s called a moat, it’s being dug, you’re on the wrong side of it.
If I could automate my own work, I would gladly switch to just being the PM for my LLM.
To be fair, there is an abstract worry that being smart will no longer be valuable in society if AI replaces all brain work. But I think we are far from that. And a world where that happens is so DIFFERENT from ours, I think I'd be willing to pay the price.
Losing that would be a real shame.
Despite that here on HN you have people cheering them on, excited for it. Tech is one of the last good paying fields and these people don't realize it's not a matter of changing career, because there won't be anything better to retrain in.
They are cheering on their own doom.
Now, we can just nonstop build and try everything. Yay.
Some work coding can be like that; but some is just wading through a mass of stuff to fix or improve something uninteresting.
Perhaps "prompt engineering" will be the higher-level language that sticks, or perhaps it will fail to find purchase in industry for the same reasons.
The same C++ or Java or Haskell code run with the same inputs twice, will cause the same result[0]. This repeatability is the magic that enables us to build the towering abstractions that are modern software.
And to a certain mind (eg, mine), that's one of the deepest joys of programming. The fact that you can construct an unimaginably complex system by building up layer by layer these deterministic blocks. Being able to truly understand a system up to abstraction boundaries far sharper than anything in the world of atoms.
LLMs based "programming" threatens to remove this determinism and, sadly for people like me, devalue the skill of being able to understand and construct such systems.
[0]Yes, there are exceptions (issues around concurrency, latency, memory usage), but as a profession we struggle mightily to tame these exceptions back to being deterministic because there's so much value in it.
Not at all.
I was very impressed at first but it's gotten to the point where I can no longer trust anything it says other than very high level overviews. For example, I asked it to help me implement my own sound synthesizer from scratch. I wanted to generate audio samples and save them to wave files. The high level overview was helpful and enabled me to understand the concepts involved.
The code on the other hand was subtly wrong in ways I simply couldn't be sure of. Details like calculating the lengths of structures and whether something did or did not count towards the length were notoriously difficult for it to get right. Worse, as a beginner just encountering the subject matter I could not be sure if it was correct or not, I just thought it didn't look right. I'd ask for confirmation and it would just apologize and change the response to what I expected to hear. I couldn't trust it.
It's pretty great at reducing the loneliness of solo programming though. Just bouncing ideas and seeing what it says helps a lot. It's not like other people would want to listen.
It's really great for this.
I've found it useful for taking some pattern I've cranking on with an extensive API and finishing the grunt work for me... it generally does a very good job if you teach it properly. I recently had to do a full integration of the AWS Amplify Auth library and instead of grinding for half a day to perfect every method, it just spits out the entire set of actions and reducers for me with well-considered state objects. Again, it needs guidance from someone with a clue, so don't fear it taking my job anytime soon.
Jaron Lanier has some ideas about the space in between turing test and blade runner.
The first film goers, watching simple black and white movies thought that they were uncanny. A train coming towards the screen, would make audiences jump and duck. When people first heard gramophones, they reported that it is indistinguishable from live orchestra.
As we learn a technology, we learn to recognize. Get a feel for its limitations and strengths. The ability to detect that technology, is a skill. Less impressive over time.
It's hard not to be impressed when a thing does a thing that you did not think it could do.
We didn't move on to being unimpressed when the thing cannot do the thing we thought it be able to do.
I am seeing people seriously using the "Please write an expression for me which adds 2 and 2" prompt in order to get the "2+2" expression they need – advocating that they got it with magical efficiency. In all honesty, I don't like writing too much, and writing code for me is always shorter and faster than trying to describe it in general-purpose language, that is why we need code in the first place.
I was also fooled and gave it too much credit, if you engage in a philosophical discussion with it it seems purpose-built for passing the turing test.
If LLMs are good at one thing, it's tricking people. I can't think of a more dangerous or valueless creation.
For a real example: once you start analyzing an AI image with a critical mind, you see that most of the image violates basic rules of composition, perspective and anatomy. The art is frankly quite trash, and once you see it it is hard to unsee.
I can do that with scaffolding or copy past template and change.
I did not try and I did not see someone actually giving existing code asking GPT to fix or change it. So that is something I’d try.
Also the idea that we'll need less engineers is bogus. Technology doesn't reduce the amount of work we do, it just increases productivity and puts more strain on individuals to perform. With AI spitting out unmaintainable code nobody understands I can only see more work for more engineers as the amount of code grows.
In aggregate, they are just the phenomenal of an extremely high risk high reward investment environment.
Most tech companies do not need cash to scale. There are few factories to be built. What they need is risk capital. The big successes alphabet, Facebook, Amazon.. these winds are so big, that they really do "justify" the bubbles.
Amazon alone, arguably justifies the '90s dotcom bubble. The tens of billions invested into venture, IPOs... A balanced portfolio accrued over the period, was probably profitable in the long term... Especially if the investor kept buying through and after the crash.
IDK that anyone actually invests in risky startups that way, but just as a thought device..
What are you talking about? ChatGPT came out only a year ago, GPT-4 less than a year ago. That's the opposite of ancient technology, it's extremely recent.
It was one of the incidents that made me to stop front-end development.
As an exercise, I recently asked ChatGPT to produce similar CSS and it did so flawlessly.
I’m certainly a middling programmer when it comes to CSS. But with ChatGPT I can produce stuff close to the quality of what the CSS masters do. The article points this out: middling generalists can now compete with specialists.
I use ChatGPT every day for many tasks in my work and find it very helpful, but I simply do not believe this.
> The article points this out: middling generalists can now compete with specialists.
I'd say it might allow novices to compete with middling generalists, but even that is a stretch. On the contrary, ChatGPT is actually best suited to use by a specialist who has enough contextual knowledge to construct targeted prompts & can then verify & edit the responses into something optimal.
I can’t get ChatGPT to outperform a novice. And now I’m having candidates argue that they don’t need to learn the fundamentals because LLMs can do it for them.. Good luck HTML/CSS expert who couldn’t produce a valid HTML5 skeleton. Reminds me of the pre-LLM guy who said he was having trouble because usually uses React.. So I told him he could use React. I don’t mean to rag on novices but these guys really seemed to think the question was beneath them.
If you want to get back into front-end read “CSS: The Definitive Guide”. Great book, gives you a complete understanding of CSS by the end.
A big difference is that the expert asks different questions, off in the tails of the distribution, and that's where these LLMs are no good. If you want a canonical example of something, the median pattern, it's great. As the ask heads out of the input data distribution the generalization ability is weak. Generative AI is good at interpolation and translation, it is not good with novelty.
(Expert and know-nothing context dependent here.)
One example: I use ChatGPT frequently to create Ruby scripts for this and that in personal projects. Frequently they need to call out other tools. ChatGPT 4 consistently fails to properly (and safely!) quote arguments. It loves the single-argument version of system which uses the shell. When you ask it to consider quoting arguments, it starts inserting escaped quotes, which is still unsafe (what if the interpolated variable contains a quote in its name). If you keep pushing, it might pull out Shell.escape or whatever it is.
I assume it reproduces the basic bugs that the median example code on the internet does. And 99% of everything being crap, that stuff is pretty low quality, only to be used as an inspiration or a clue as to how to approach something.
They can maybe compete in areas where there has been a lot of public discussion about a topic, but even that is debatable as there are other tasks than simply producing code (e.g. debugging existing stuff). In areas where there's close to no public discourse, ChatGPT and other coding assistance tools fail miserably.
They can't, and aren't even trying to. It's OpenAI that's competing with the specialists. If the specialists go out of business, the middling generalists obviously aren't going to survive either so in the long term it is not in the interest of the "middling generalists" to use ChatGPT for code generation. What is in their interest is to become expert specialists and write better code both than ChatGPT currently can, and than "middling generalists". That's how you compete with specialists, by becoming a specialist yourself.
Speaking as a specialist occupying a very, very er special niche, at that.
I want to say that this has been the state of a lot of software development for a while now, but then, the problems that need to be solved don't require specialism, they require people to add a field to a database or to write a new SQL query to hook up to a REST API. It's not specialist work anymore, but it requires attention and meticulousness.
I've seen the similar claims made on Twitter by people with zero programming ability claiming they've used ChatGPT to build an app. Although 99% of the time what they've actually created is some basic boilerplate react app.
> middling generalists can now compete with specialists.
Middling generalists can now compete with individuals with a basic understanding assuming they don't need to verify anything that they've produced.
UX and UI are not some secondary concerns that engineers should dismiss as an annoying "state of our team" nuance. If you can't produce a high quality outcome you either don't have the skills or don't have the right mindset for the job.
This scenario reminds me of:
If a job's worth doing, do it yourself. If it's not worth doing, give it to Rimmer.
Except now it's "give it to ChatGPT"
I think at least in the short term, this is where AI's power will lie. Augmentation, not replacement.
I did try asking ChatGPT about system-related stuff several times and had given up since then. The answers are worthless if not wrong, unless the questions are trivial.
ChatGPT works if it needs to answer a question that was already answered before. If you are facing a genuinely new problem, then it's just a waste of time.
But the good news is that "simple generic CSS" is the kind of thing that most good programmers consider to be essentially busywork, and they won't miss doing it.
Great point. That's been my experience as well. I'm a generalist and ChatGPT can bring me up to speed on the idiomatic way to use almost any framework - provided it's been talked about online.
I use it to spit out simple scripts and code all day, but at this point it's not creating entire back-end services without weird mistakes or lots of hand holding.
That said, the state of the art is absolutely amazing when you consider that a year ago the best AIs on the market were Google or Siri telling me "I'm sorry I don't have any information about that" on 50% of my voice queries.
That being said, humans watch too much tv/movies. ;)
This is why you're going to get a ton of gatekeepers asking you to leetcode a bunch of obscure stuff with zero value to business, all to prove you're a "real coder". Like the OP.
Then use LaTex and PDF. CSS is not for designing pixel perfect documents.
Your experience is very different from mine anyway. I am a grumpy old backend dev that uses formal verification in anger when I consider it is needed and who gets annoyed when things don't act logical. We are working with computers, so everything is logical, but no; I mean things like a lot of frontend stuff. I ask our frontend guy; 'how do I center a text', he says 'text align'. Obviously I tried that, because that would be logical, but it doesn't work, because frontend is, for me, absolutely illogical. Even frontend people actually have to try-and-fail; they cannot answer simple questions without trying like I can in backend systems.
Now, in this new world, I don't have to bother with it anymore. If copilot doesn't just squirt out the answer, then chatgpt4 (and now my personal custom gpt 'front-end hacker' who knows our codebase) will fix it for me. And it works, every day, all day.
https://chat.openai.com/share/4e958c34-dcf8-41cb-ac47-f0f6de...
finalAlice's Children have no parent. When you point this out, it correctly advises regarding the immutable nature of these types in F#, then proceeds to produce a new solution that again has a subtle flaw: Alice -> Bob has the correct parent... but Alice -> Bob -> Alice -> Bob is missing a parent again.
Easy to miss this if you don't know what you're doing, and it's the kind of bug that will hit you one day and cause you to tear your hair out when half your program has a Bob-with-parent and the other half has an Orphan-Bob.
Phrase the question slightly differently, swapping "Age: int" with "Name: string":
https://chat.openai.com/share/df2ddc0f-2174-4e80-a944-045bc5...
Now it produces invalid code. Share the compiler error, and it produces code that doesn't compile but in a different way -- it has marked Parent mutable but then tried to mutate Children. Share the new error, and it concludes you can't have mutable properties in F#, when you actually can, it just tried marking the wrong field mutable. If you fix the error, you have correct code, but ChatGPT-4 has misinformed you AND started down a wrong path...
Don't get me wrong - I'm a huge fan of ChatGPT, but it's nowhere near where it needs to be yet.
If you need to tweak your prompt until you get the correct result, then we still need coders who can tell that the code is wrong.
Ask Product Managers to use ChatGPT instead of coders and they will ask for 7 red lines all perpendicular to each other with one being green.
Rust mostly because it's relatively new, and there isn't a native YAML parser in Rust (there is a translation of libfyaml). Also you can't bullshit your way out of Rust by making bunch of void* pointers.
Super neat trick the first time you encounter it, feels like alien tech from the future.
Then you find all the holes. Use it for months/years and you notice the holes aren't really closing.. The pace of improvement is middling compared to the gap to it meeting the marketing/rhetoric. Eventually using them feels more like a chore than not using them.
It's possible some of these purely data driven ML approaches don't work for problems you need to be more than 80% correct on.
Trading algos that just need to be right 55% of the time to make money, recommendation engines that present a page of movies/songs for you to scroll, Google search results that come back with a list you can peruse, Spam filters that remove some noise from your inbox.. sure.
But authoritative "this is the right answer" or "drive the car without murdering anyone".. these problems are far harder.
I used to think about these things differently: I felt that because our models of reality are just models, they aren't really something humanity should be proud of that much. Nature is more messy than the models, but we develop them due to our limitations.
AI is a model, too, but of far greater complexity, able to describe reality/nature more closely than what we were able to achieve previously. But now I've begun to value these simple models not because they describe nature that well but because they impose themselves on nature. For example, law, being such a model, is imposed on reality by the state institutions. It doesn't describe the complexity of reality very well, but it makes people take roles in its model and act in a certain way. People now consider whether something is legal or not (instead of moral vs immoral), which can be more productive. In software, if I implement the exchange of information based on an algorithm like Paxos/Raft, I get provable guarantees compared to if I allowed LLMs to exchange information over the network directly.
They still do an alright job, but you get that exact situation of 'eh, its just okay'.
Its the ability to use those responses when they are good, and knowing when to move on from using an LLM as a tool.
It did a decent job at trivial things like creating function parameters out of a variable tho.
However, it seems only a matter of time before even this challenge is overcome, and when that happens the question will remain whether it's a real capability or just a data leak.
It's like the analysis and research phase of problem solving is just being skipped over in favor of not having to understand the mechanics of the problem you're trying to solve. Just reeks of massive technical debt, untraceable bugs, and very low reliability rates.
I dunno, maybe LLMs will get good enough eventually, but at the moment it feels plausible to me that there's some kind of an upper limit caused by its very nature of working from a collection of previous code. I guess we'll see...
When you have something that kind of works, tell ChatGPT what the problems are and ask for refinement.
IMHO currently the weak point of LLMs is that they can't really tell what's adequate for human consumption. You have to act as a guide who knows what's good and what can be improved and how can be improved. ChatGPT will be able to handle the implementation.
In programming you don't have to worry too much about hallucinations because it won't work at all if it hallucinates.
It hallucinates and it doesn't compile, fine. It hallucinates and flips a 1 with a -1; oops that's a lot of lost revenue. But it compiled, right? It hallucinates, and in 4% of cases rejects a home loan when it shouldn't because of a convoluted set of nested conditions, only there is no one on staff that can explain the logic of why something is laid out the way it is and I mean, it works 96% of the time so don't rock the boat. Oops, we just oppressed a minority group or everyone named Dave because you were lazy.
> In programming you don't have to worry too much about hallucinations because it won't work at all if it hallucinates.
You still have to worry for your job if you're unable to write a working program.
I ended up implementing the thing myself.
And around the same time, 3D printing was going to upend manufacturing; bankrupting producers as people would just print what they needed (including the 3D printers themselves).
It confidently gave me a correct answer.
Except that it was "correct," if you used an extended property that wasn't in the standard API, and it did not specify how that property worked.
I assume that's because most folks that do this, create that property as an extension (which is what I did, once I figured it out), so ChatGPT thought it was a standard API call.
Since it could have easily determined whether or not it was standard, simply by scanning the official Apple docs, I'm not so sure that we should rely on it too much.
I'm fairly confident that could change.
There's at least two companies (Waymo and Cruise) running autonomous taxi services in US cities that you can ride today.
There have been lots of incorrect promises in the world of self-driving trucks/cars/buses but companies have gotten there (under specific constraints) and will generalize over time.
I remember we had spam filters 20 years ago, and nobody called them "AI", just ML. Todays "AI" is ML, but on a larger scale. In a sense, a million monkeys typing on typewriters will eventually produce all the works of Shakespeare. Does this make them poets?
That's what I am running into on an everyday basis.
I don't want my program to be full of bugs.
HN’s takes are honestly way too boomer-tier about LLMs.
At the risk of going off on a tangent, we already have the technology to allow self-driving trucks for a few decades now.
The technology is so good that it can even be used to transport multiple containers in one go.
The trick is to use dedicated tracks to run these autonomous vehicles, and have a central authority monitoring and controlling traffic.
These autonomous vehicles typically go by the name railway.
The only reason the trucks aren't out there gathering their best data, that's real world data, is regulation.
Businesses will hire consultants at a later stage to do risk assessment and fix their code base.
As someone currently looking for work, I'm glad to hear that.
About 6 months ago, someone was invited to our office and the topic came up. Their interview tests were all easily solved by ChatGPT, so I've been a bit worried.
Assuming a LLM gets 99% of the lines correct, after 70 lines the chance of having at least one of them wrong is already around 50%. A LLM effective enough to replace a competent human might be so expensive to train and gather data for that it will never achieve a return on investment.
Last time I used ChatGPT effectively was to find a library that served a specific purpose. All of the four options it gave me were wrong, but I found what I wanted among the search results when I looked for them.
Code Interpreter does this a bit in Chat-GPT Plus with some success.
I don't think it needs much more than a GPT-4 level LLM, and a change in IDEs and code structure, to get this working well enough. Place it gets stuck it'll flag to a human to help.
We'll see though! Lots of startups and big tech companies are working on this.
Yes, ChatGPT can't pass a particular test of X to Y. But does that matter when ChatGPT is both the designer and the developer? How can it be wrong, when its answer meets the requirements of the prompt? Maybe it can't get from X to Y, but if its Z is as good as Y (to the prompter) then X to Y isn't relevant.
Sure there will be times when X to Y is required but there are plenty of other times where - for the price - ChatGPT's output of Z will be considered good enough.
"We've done the prototype (or MVP) with ChatGPT...here you finish it."
You can put even more data into it and refine the models, but the growth in capability has diminishing returns. Perhaps this is how far this strategy can bring us, although I believe they can still be vastly improved and what they can already offer is nevertheless impressive.
I have no illusion about the craft of coding becomes obsolete however. On the contrary, I think the tooling for the "citizen developer" are becoming worse, as well as the ability for abstraction in common users since they are fenced into candyland.
There is no AI that comes close to being able to design a new system or build a UI to satisfy a set of customer requirements.
These things just aren’t that smart, which is not surprising. They are really cool and do have legitimate uses but they are not going to replace programmers without at least one order of magnitude improvement, maybe more.
AI isn't capable of generating the same recipe for cookies as my grandma, she took the recipe to her grave. I loved her cookies they were awesome...but lots of people thought they were shit but I insist that they are mistaken.
Unfortunately, I can't prove I'm right because I don't have the recipe.
Don't be my grandma.
If you’re just trying to one-shot it - that’s not really how you get the most from them.
Vaguely: Questions that most people think they know the correct answers to but, in my experience, don’t.
Small consolation if it can nonetheless get lots of other cases right.
>It answers questions confidently but with subtle inaccuracies.
Small consolation if coding is reduced to "spot and fix inaccuracies in ChatGPT output".
Basically the gruntest of grunt work it can do. If I explain things perfectly.
If I'm honest though I'm most likely to use it for boring rote work I can't really be bothered with myself - the other day I fed it the body of a Python method, and an example of another unit test from the application's test suite, then asked it to write me unit tests for the method. GPT got that right on the first attempt.
This is a valid challenge we are facing as well. However, remember that ChatGPT which many coders use, is likely training on interactions so you have some human reinforcement learning correcting its errors in real-time.
What is it?
Edit: I see, they don't want it to be scraped (cf. https://news.ycombinator.com/item?id=38260496), though as another poster pointed out, submitting it might be enough for it to end up in the training data.
I’m one of those noob programmers and it has helped me create products far beyond my technical capabilities
Right, which means its a force multiplier for specialists, rather than something that makes generalists suddenly specialists.
ChatGPT is great at some well defined, already solved problems. But once you get to the messy real world, the wheels come off.
ROT13: https://chat.openai.com/share/ae7c311d-ab23-4425-bdfa-c2314e...
HEX: https://chat.openai.com/share/4b0740b7-53c0-4776-bb00-ab65b4...
What kind of encoded string did you use?
There is stuff that it can do that appears magically competent at but it's almost always cribbed from the internet, tweaked with trust cues removed and often with infuriating, subtle errors.
I interviewed somebody who used it (who considered that "cheating") and the same thing happened to him.
The no code industry is massive. Most people don’t need a dev to make their website already. They use templates and then tweak them through a ui. And now you have Zapier, Glide, Bubble etc.
LLMs won’t replace devs by coding entire full stack web apps. They’ll replace them because tools will appear on the market that handle the 99% cases so well that there is just less work to do now.
This has all happened before of course.
If AI makes developers twice as productive (maybe a few years down the road with GPT-6), will this additional supply of developer capacity get absorbed by existing and new demand? Or will there be half as many developers? Or will the same number of developers get paid far less than today?
These questions arise even if not a single existing dev job can be completely taken over by an AI.
A secondary question is about the type of work that lends itself to AI automation. Some things considered "coding" require knowing a disproportionate number of tiny technical details within a narrowly defined context in order to effect relatively small changes in output. Things like CSS come to mind.
If this is the sort of coding you're doing then I think it's time to expand your skillset to include a wider set of responsibilities.
Nowadays, like the rest of the full-stack 'web' developers, I work on complex webapps that use Typescript, HTML, CSS, Kubernetes, Docker, Terraform, Postgres, bash, GitHub Actions, .NET, Node, Python, AWS, Git. And that isn't even the full list.
And it's not even a flex, all of the above is used by a relatively straightforward LoB app with some hairy dependencies, a CI/CD pipeline + a bit of real world messiness.
I need to have at least a passing familiarity with all those technologies to put together a working application and I'm sure I'm not alone with this uphill struggle. It's a staggering amount to remember for a single person, and LLMs have been a godsend.
Something to remember is that every new innovation in software development only raises the expectations of the people paying the software developers.
If developers are 3x as productive, then the goals and features will be 3x big.
The reason for this is that companies are in competition, if they lag behind, then others will eat up the market.
The company that fires 50% of their staff because of “AI Assistance” is not going to be able to compete with the company that doesn’t fire their staff and still uses “AI Assistance”…
Increased developer productivity will lead to a lot more software development, at all levels, rather than less.
1. "In economics, the Jevons paradox occurs when technological progress or government policy increases the efficiency with which a resource is used (reducing the amount necessary for any one use), but the falling cost of use induces increases in demand enough that resource use is increased, rather than reduced."
For example, deploying hardware to all subways to track their status and location with higher accuracy. I want a truly smart meal planner that can look in my fridge and my eating habits and tell me what I need to eat. I want a little plugin for Obsidian that will let me sync tasks with Linear.
There are tons of tiny little pieces of technology that would be useful but their economic value is low or unclear; if developers become more efficient at not only writing code but testing, deploying, getting feedback, these become possible. Or, the LLMs can’t become great at all of those things, and developers keep their jobs (and high pay). You can’t have it both ways.
Yes, it may harm certain professions, careers and people, but the only option is to accept and adapt. We can talk all day and night about how sad and unfair this is, but unfortunately there is nothing stopping such technological advancements.
Though a little blunt at times, the libertarian economist and journalist Henry Hazlitt talks about this in great detail in his book, Economics in One Lesson, which I highly recommend to anyone no matter what belief system. He also wrote many essays on it, including one I'll share here: https://fee.org/articles/the-curse-of-machinery/
It's because foundations are now free but nobody understands how they work anymore - or soon won't hence the waning as opposed to disappeared. There are whole levels that a coder needed to understand in the past that recent entrants to the field do not understand, that can still subtly affect how things work, if no one understands the things the craft depends on, then the craft is waning.
For anyone who started programming more than 13 years ago in the most widespread programming discipline for the past few decades (Web technologies), which in this career makes you super-old, the craft is waning because every year it becomes more and more difficult to understand the whole stack that the web depends on. Not even considering the whole stack of technologies that my first paragraph alluded to.
For Frontend coders it is waning because there are ever increasing difficulties to find out how to do something someone else did by looking at their code - modern build technologies means looking at the code of a site is not worthwhile. And people were already complaining about that 13+ years ago.
If you have kids or outside work responsibilities then in combination with this and the need to produce things and the ever increasing eating of stuff by software (opening new problems and business areas one might need to be cognizant of) it becomes less possible, for those not in school, to hone their craft via purposeful working. For this reason it may be that the craft is waning.
Finally improving productivity is not necessarily something that correlates with improving the craft - industrialization may have improved productivity and made many products available to many people that did not have them before, but it is pretty well known that it was not beneficial to the crafts. Perhaps the feeling is the same here.
I learned HTML in the mid nineties and even then I don't honestly recall learning very much from View Source. HTML has never been particularly easy to read even when written by the rare breed who are fanatical about "semantic" markup (in quotes because even so-called semantic markup doesn't communicate much in the way of useful semantics). HTML lacks extremely basic abstraction features needed to make code readable, like (up until very recently) any kind of templating or components system, so even if you were trying to learn from Yahoo! in 1996 you'd be faced with endless pages of Perl-generated HTML boilerplate. So I think most of us learned the old fashioned way, from books, tutorials and copious amounts of fiddling.
Now that layer of craftsmen is gone. You are either an uber-expert in how computer hardware works, or you just buy the hardware and treat it like a kind of magic.
Traditionally to become an expert you went through an intermediate stage, showed your interest, and got trained. Your hobby could turn into a profession, since the step up was gentle and interested people were needed to do some of the supporting work.
Nowadays if you're going to work in a chip fab, it's not because you were a soldering iron kid. You go through a quite long academic process that doesn't really recruit from the ranks of the hobbyists, though of course you'd expect there to be some natural interest. But the jump isn't gentle, you end up learning some pretty advanced things that make soldering seem like the stone age.
Software has this layer of craftsmen still, though it is rapidly dying, and not just from LLMs. There's a enormous number of people who can more or less hook up a website and make it work, without knowing everything about how exactly it does that. There's also plenty of excel people and python scripting people who use code in their day-to-day, but can't tell you advanced concepts. There's a lot of modern services that make this sort of thing easier (wordpress etc), and this level of skill is very learnable by people in the developing world. It's not like you can't become a real expert in those parts of the world, but economically it makes sense that there are a lot of intermediately skilled there.
What will happen with GPT and the like is the experts will not need as much help from the juniors. If you're a software architect in charge of a whole system, you won't just sketch out the skeleton of the system and then farm out the little tasks to junior coders. Maybe there are pieces that you'd farm out, but you will definitely save on the number of juniors because an LLM will give you what you need.
The result being that we'll get fewer people trained to the highest levels, but those who are will be much more productive. So those guys will indeed be entering the quantum age, but it strands a lot of people.
The real question for me is whether AI will put humans out of most intellectual work, not just programming. Then, even if AI is shared equitably and satisfies our every need, most of us become some kind of sponges that don't need to think for a living. Or human intelligence will remain but only as a peacock's tail, like physical strength is now.
Maybe a true "friendly AI" would recognize the human need to be needed, for human capabilities to stay relevant, and choose to put limits on itself and other AIs for that reason.
My experience rather is that such people often (though not always) are quite good programmers, but came to a different conclusion on how it makes sense to develop software than the direction which the industry shifted to (and often have good, though sometimes non-mainstream reasons for their opinions). Thus, despite being good programmers, "they fell out fashion" with "how you are (by today's fashion/hype) supposed to build software on this current day". So, they became more and more hard to employ and thus more and more frustrated (just to be clear: in my experience they are often quite right in their opinions).
I still don’t feel that way about front end frameworks for the web. Oh my God what what are people doing?
The author asserts that he is a professional programmer as one of his day jobs, as well as handling the “serious programming” in his hobby projects with a mostly-hardware guy who is also an ex-professional-programmer, but whose coding skills are out-of-date.
His LinkedIn has nothing more current than Jan 2017 at Genius, and that role (one of only two jobs with what looks like an IC-like title, “Developer”, that lasted more than a couple months), has a description that indicates it wasn't mostly an IC position but drifting among recruiting, acting product lead, PM, and something like an assistant to the CEO roles.
He really has a resume that screams of having decent communications skills and professional network (and maybe manangement skills) and wanting to be seen as a programmer but consistently either needing to find a way out of an environment or into a different role in the same org before the checks his communications skills wrote that his tech skills couldn't back caught up to him.
The need for mastery of the craft will be lesser, and so mastery of it will wane, as people depend on AI instead. Then if you ever need someone to do it without AI, you might no longer be able to find anyone with the craftsmanship know-how to do it.
Also, it'll probably bring down how good coding is as a career. As productivity enters this quantum state, you'll need less engineers, and they'll need less qualifications, which might translate to less jobs, worse pay, and an increased expectation in productivity that makes you dependent on AI, as you can no longer meet these expectations and compete with others if you also dont fully leverage AI.
What's the best starting point for my personal stuff? I am generally put off by youtube tutorials promising to make me a better coder.
Bonus points for doing things like using GitHub actions for CI and publishing it to a package repository with guidance from ChatGPT.
It comes down to whether society's demand for programmers is fixed, or if it scales with how productive programmers are, or more likely some mix of these scenarios. If the demand is fixed, then you are just taking someone's job by being more productive.
You forgot the accounting, taxation, legal and compliance stuff, which at least in Germany takes a huge amount of the entrepreneur's time. :-(
1.) Apple’s programming environment being forbidding : no shit, Apple is well known for the hoops developers have to jump through to be allowed into their monopoly, why any self-respecting hacker would ever want to code for iOS (and now even MacOS, Android, Windows) is beyound me. I guess that's partially because they are US-based, where it's still somewhat respectable / not illegal ?
2.) Visual C++ : similar deal, just a few years later the bar for graphical interfaces would be significantly lowered with the likes of Python+Qt, Java, HTML+CGI... and even back then for non-graphical interfaces we had BASIC.
(The design and programming of graphical interfaces is its own distinct profession for a reason, jumbling it in with «coding» as a big indistinct mass just because the same person used to have to do both regardless of their level of proficiency is missing the point.)
3.) > When I got into programming, it was because computers felt like a form of magic. The machine gave you powers but required you to study its arcane secrets—to learn a spell language. This took a particular cast of mind. I felt selected. I devoted myself to tedium, to careful thinking, and to the accumulation of obscure knowledge. Then, one day, it became possible to achieve many of the same ends without the thinking and without the knowledge. Looked at in a certain light, this can make quite a lot of one’s working life seem like a waste of time.
It's not the LLMs that got rid of this, it's already Web search engines, years ago ! (It also takes skill to «prompt engineer» a search engine to find you a good answer. Not to mention that one of the still ongoing - but for how long ? - issues, is the enshittification of them through Google's monopoly. It should get better once they are out of the picture.)
4.) Proposition 5 of Euclid’s Elements I
This seems to be another good example of how a lot of these issues stem from the lack of good teaching / documentation. Consider how much clearer it would be if merely you split it into two propositions !
It also seems to be a good example of an arbitrary goal of hardly any practical significance ? (FizzBuzz, that a good fraction of CS college students are unable to grok, would be a much better example ?) But perhaps I am wrong, and a mathematician / mathematics teacher can explain ?
I have way better examples : I am still pissed that we keep teaching students pi instead of tau and pseudovectors (papering over the difference with vectors !!) instead of geometric algebra. Imagine we still had to do math with words like before the modern era (sqrt() also comes to mind), instead of mathematical notation !
5.) There's also a whole big chunk about coders being (/ having been) a highly valued profession, and it's the likely loss of that that the article seems to be mostly deploring, but we shouldn't confuse it with the other things.
I commented about somewhere else in this thread: https://news.ycombinator.com/item?id=38259425
But basically I have found that it is a really powerful general purpose assistant/brainstorming pall for a lot of the things that would normally eat up a lot of time.
To expand on that, it isn't even limited to code, but also surrounding tasks. I have used it to round out documentation in various ways. Either by giving it a lot of the rough information and asking to write coherent documentation for me, or by giving me feedback.
The other way around it has helped me onboard on new projects by giving it bits and pieces of written text where I had trouble understanding what the document said.
In the same sense when dealing with management bullshit I have used it to just presenting it with what was asked, telling it my view on it and then asking it to come up with responses based around certain perspectives. Which meant I had to spend less mental bandwidth on inane stuff there as well.
And yes, a lot of it can also be achieved in a team with other people. But, those people aren't always around and also have their own things to do. The advantage of tools like ChatGPT is that they don't get tired, so I can really channel my inner toddler and just keeping asking "why" until I am satisfied with the answer. Even if there are other people available to turn to for help, ChatGPT can also help in refining the questions you want to ask.
It's also very good at converting a code from one language to another and getting stuff done when directed properly.
I can definitely see how large impact it will have on the employment prospects of many. It's not replacing the engineers yet, but those who specialise in a tech as an implementation specialist are screwed. Even the increased productivity alone will reduce the demand.
Once you make agriculture more efficient we can't really eat way more than today so we need less people working there. But if you make software easier to write, I think you'll just end up with way more software because the complexity of human needs and processes is unbounded unlike eating food.
Also called the efficiency paradox https://en.m.wikipedia.org/wiki/Jevons_paradox
I’d argue that companies cutting their software budget will soon be overtaken by their competition. Software is never done, after all.
By contrast we now have digitally inclined employees creating and automating things with the help of CharGPT. Much of it is terrible in terms of longevity the same way the previous RPA or workflow tools were, but unlike those, people can now also maintain them. At least as long as you keep the digitally inclined employees onboard, because they’re still not software developers and things like scaling, resource usage, documentation, error handling and so on isn’t being done. But it could be, at least for around 90% of it which will frankly never really matter enough to warrant an actual software developer anyway because it mostly “frees” a few hours a month through its automation.
But with this ability, and the improvements in things like SharePoint online (and likely it’s competition that I don’t know about) a lot of the stuff you’d need either staffed software developers or external consultants to handle, can be handled internally.
This isn’t the death of software engineering as such. Like I said, it doesn’t scale and it’s also going to create a bunch of issues in the long term as more and more of this “amateur” architecture needs to function together, but at the same time, if you need to Google how to get some random lines of text from a dictionary, then I’m not sure you aren’t in danger either. And I really don’t say this to be elitist, but everything you google program can be handled fairly easily by GPT and “good enough” that it’s simply going to happen more and more in our industry.
If you look into my history you’ll see that I’m both impressed and unimpressed by LLMs (well GPT, let’s be honest the others all suck). This is because it really hasn’t been able to help us develop anything in our daily work. It writes most of our documentation, and it’s scary good at it. It also does a lot of code-generation, like auto-generating types/classes/whatever you call them from Excel data mapping sheets + CRUD functionality. Sure, we did that before by writing some short CLI scripts, but now GPT does it for the most part. So it’s not like we don’t use it, but for actual well designed code that handles business logic in a way that needs efficiency? Yeah, it’s outright terrible. Maybe that will change over time, so far it’s not improved in the slightest.
But look at our industry as a whole. I know a lot of HN users work in American Tech or startups, but in the European non-tech Enterprise industry and the massive IT and consultant industry supporting it, there are a lot of developers who basically do what GPT excels at, and as these tools get better, we’re frankly just going to need a lot fewer software developers in general. Most of those people will likely transition into other jobs, like using GPT, but many won’t as other professions start doing their coding themselves.
What worries me the most, however, is that we still teach a lot of CS students exactly what GPT is good at. I’m an external examiner for CS students at academy level, and GPT can basically ace all of their curriculum because it’s mainly focused on producing a lot of “easy” code for businesses. I’m scared a lot of those students are going to have a rough time once LLMs really pick up, unless the curriculum changes. It won’t change in time though, because it’s already been sort of “outdated” for a decade because of how slowly our higher educations adapt to the real world here in Denmark.
Computers are rude and honest and humans prefer a pretty lie to an ugly truth. Programmers must appreciate the ugly truth in their day-to-day lives more than any other profession. (Physical engineering and construction workers and repairers also need this virtue, but less often since their feedback cycles are slower.)
I do think the overall premise is silly, programming isn’t that special in this regard in my opinion. Most professions are like this, they just might not be the most visible ones like politics, journalism, show biz.
Software developer have more to learn from other professions than they often think (the old engineering professions understand this a bit better)
I completely agree with you on that. Most of being a good software engineer is skills that ChatGPT won't help you with.
But you can't even start to learn those skills if you quit in the first six months because of the vertical learning curve tied to all of that syntax trivia.
In any complex software project with lots of users there is guaranteed to be an effectively endless backlog of bug tickets that are, in effect, abandoned. I think a few months ago some bug got fixed in Firefox that was ~25 years old. In most compilers and frameworks there's going to be a pile of tickets of the form, "improve error message when X happens" that just never floats to the top because programmer time is too expensive to justify working on it. Over time the difference between a senior engineer and a junior becomes not so much intelligence or even actual experience but just the accumulated scar tissue of all the crap we have to wade through to make anything work, thanks to the giant backlogs of bugs and stupid usability problems that never get solved before the product reaches EoL anyway.
For AI to fully replace programmers is going to require quite a few more major breakthroughs, but setting one loose on a bug tracker and asking it to churn out trivial fixes all day is well within reach. That will both make human programming more fun, and easier to learn.
This honestly made me feel so happy. I'm reminded of the average person who is bound by the limitations of the apps they use, the popularity of "How to Automate Using Python" books...
With this new tech, people are no longer bound by that limitation. I think that's pretty cool.
LLMs writing code is the beginning, but low or no code is more ideal for most people. With LLM assistance.
I just asked ChatGPT a thing, and then on a hunch I asked if there wasn't a built-in function that does the same, and it indeed remembered there is such a function.
What if that second question had been automatically and transparently asked? What if there is a finite list of such "quiet reflecting" questions that dramatically increases the value and utility of the LLM output?
Because today's seniors will be retired in a decade or two, and as they get replaced by people who actually benefited from automatic code generation, the concept of "coding" will (if this trend keeps up) absolutely become a thing that old timers used to do before we had machines to do it for us.
It might not be in the same way of current day developers, but I don't foresee a near future where developers don't learn to understand code to some degree.
For example, I know a lot of people who work in the low-code development sphere of things. A lot of the developers there barely see any code if any. Yet, when you talk with them they talk about a lot of the same issues and problem-solving but in slightly different terms and from a slightly different perspective. But, the similarities are very much there as the problems are fundamentally the same.
With generated code I feel like this will also be similarly true.
These problems sound like a result of working with people. Smaller but more capable teams because of AI will need less leaders and less meetings. Everything will become much more efficient. Say goodbye to all the time spent mentoring junior engineers, soon you won't have any
Yeah... no. Not with LLMs as they currently are. They are great as an assisted tool, but still need people to validate their output and then put that output to work. Which means you need people who can understand that output, which are developers. Which also means that you need to keep training developers in order to be able to validate that output.
The more nuanced approach would be saying that the work of developers will change. Which I agree with, but is also has been true over the past few decades. Developers these days are already working with a hugely different tool chain compared to developers a decade ago. It is an always evolving landscape and I don't think we are at a point yet where developers will be outright replaced.
We might get there at some point, but not with current LLMs.
and then slowly we run out of seniors with nobody to replace them
The code I write feels like a side-effect of what I actually do.
[0] Actually, playing with hypnodrones.
LLMs are best at doing the stuff senior engineers do that's NOT coding.
So then the question is what % of a programmers job might be taken by this, and does the remaining % require a different skillset.
There are programmers that are great at coding, but complain loudly when the business gives slightly ambiguous requirements because they see their job as coding, not clarifying business rules. This group are more likely to be impacted than the programmers who will happily work in ambiguous situations to understand the business requirements.
So, while GP might be technically correct in some narrow sense, I would be less quick to judge the OP article author. Some years hence, anyone who is not actively building (as opposed to using) one of these LLMs might be dismissed as "not a real programmer" (because by then, that will be the only form of programming in existence).
Personally, I use it for scripting and as an executive function aid.
Automating America's remaining paths to the middle class will only serve to widen the gap between capital owners who will own infrastructure for automation and those shoved into a shrinking piece of the unautomated pie.
It follows that if it is unjust for those who are knowledge workers then it is unjust for those who are service workers (unless you can morally differentiate them).
Perhaps if inequality is wrong then it’s the system that creates inequality that should be looked at rather than preserving rent seeking by knowledge workers refusing to compete with AI while perpetuating inequality on those who aren’t powerful in the current economy?
Food for thought.
How is adding more developers going to reduce the output?
I think the fear of software developers is that they will join the low pay crowd.
Math is something that everyone who can do math, thinks is essential. Unlike reading though there's a continum of skills from iteracy, to arithmetic, to calculus and so on. Very few people know the square root of -1 or use it once a year.
Of course you meant "math" as in basic arithmetic. And sure life is easier with that than without it. But lots of kids go through life with very rudimentary math skills. They function just fine.
Does good reading Writing and math skills open doors? Sure it does. Does knowledge of Word or Excel or Windows or Quickbooks open doors? Sure. Does knowing how to cook a meal, feed others, open doors? Sure. There are a million ways to add value to society. Coding is immensely valuable to those who can do it well. But it's not foundational like reading or writing.
The utopian aim of technology is all about offloading burdensome work so we can focus more on the things we enjoy. If reading is a burden to someone, why not let them use a TTS? If long division is a burden, why not let them use a pocket calculator? They’ll probably learn enough to get by even if they never get to the point of reading Dostoevsky by sight.
Lest you say, “well but those skills are essential!”, humans needed food to survive before we needed mathematics or written language, yet we’ve been been OK outsourcing farming for at least a century because we’ve experienced how it frees us up to pursue other things. And, to that end, we’ll probably be facing some pretty extreme civilizational crisis if we get to the point that someone without basic maths skills can’t find a calculator.
It is not comparable.
In the article, the author mentions that Chess centaurs (a human player consulting an engine) can still beat an engine alone. But the author is wrong. There was a brief period a while ago when that was true, but chess engines are so strong now that any human intervention just holds them back.
I've been programming 30+ years, and am an accomplished programmer who loves the craft, but the writing is on the wall. ChatGPT is better than me at programming in most every way. It knows more languages, more tricks, more libraries, more error codes, is faster, cheaper, etc.
The only area that I still feel superior to ChatGPT is that I have a better understanding of the "big picture" of what the program is trying to accomplish and can help steer it to work on the right sub-problems. Funnily enough, is was the same with centuar Chess; humans would make strategic decisions while the engines would work out the tactics. But that model is now useless.
We are currently enjoying a time where (human programmer+AI > AI programmer). It's an awesome time to live in, but, like with Chess, I doubt it will last very long.
You will also have to provide a source for 'chess engines are so strong now that any human intervention just holds them back', a cursory search suggests this is by no means settled.
True up until the point that you want to do something that hasn't really be done before or is just not as findable on the internet. LLMs only know what is already out there, they will not create new frameworks or think up new paradigms in that regard.
It also is very often wrong in the code it outputs, doesn't know if things got deprecated after the training data threshold, etc. As a funny recent example, I asked ChatGPT for an example using the openAI nodejs library. The example was wrong as the library has had a major version bump since the last time the training data was updated.
> The only area that I still feel superior to ChatGPT is that I have a better understanding of the "big picture" of what the program is trying to accomplish and can help steer it to work on the right sub-problems.
Which probably is based on your general experience and understanding of programming in the last 30+ years. As I have said elsewhere, I really don't think that LLMs in their current iteration will be replacing developers. They are however going to be part of the toolchain of developers.
Programming is only superficially about code. The trick is really figuring out how to approach problems.
Do you think that all areas of engineering will be impacted? I feel like the job of an EE or a ME is still inherently out of reach of LLMs.
Not really. In AAA game programming, you mostly own the same systems you specialize in throughout the production process.
For example, someone in Rockstar North might work on the minimap for the entire production of a game.
In smaller AAA companies, a person might own vehicles or horses, or even the entire progression system. But still, programmers are rarely working on disconnected things.
You rarely step out of your expertise zone. And you are usually expected to perform much better than GPT would in that zone.
Hardly, because explaining how basically everything fits together is the hard and central part. Thus, the way to make things doable by a junior programmer is to teach him to become much better in programming and the software that is developed (which the company attempts). Until then, there are few things where a junior programmer is of productive help.
> Don't you ever have one-off (or once-a-year) things you have to do that each time you have to invest a lot of time refreshing in your brain, and then basically forgetting for lack of use?
Hardly, because I have a pretty good long-time memory.
But in areas where there's self-play (e.g. Chess, and to a lesser extent, programming), there is no good reason to think it'll saturate, since there isn't a limit on the amount of training data.
I'm struggling to understand how an LLM is meant to answer the questions that come up in day-to-day software engineering, like "Why is the blahblah service occasionally timing out? Here are ten bug reports, most of which are wrong or misleading" or "The foo team and bar team want to be able to configure access to a Project based on the sensitivity_rating field using our access control system, so go and talk to them about implementing ABAC". The discipline of programming might be just a subset of broader software engineering, but it arguably still contains debugging, architecture, and questions which need more context than you can feed into an LLM now. Can't really self-play those things without interacting with the real world.
The language model "creativity" is a total fraud. It is not creative at all but it takes time to see the edges. It is like AI art. AI art is mind blowing until you have seen the same 2000th variation on basically the same theme because it is so limited in what it can do.
To compare the simple game of chess to the entire space of what can be programmed on a computer is utterly absurd. You just don't know what you are talking about.
I rather have this moment without the “this is neat” part. :-) i.e. a clear “not there yet” moment, but with serious doubts whether it will be there anytime in the foreseeable future.
a bug is an inconsistency between what you intended a piece of code to do and the logical results of your design choices: for example, you thought for (i=0;i<=n;i++) would iterate n times, but actually it iterates n+1 times, as you can ascertain without ever touching a computer. it's a purely mental phenomenon
the expectation that the code will do what you intended it to do makes it hard to understand what the code actually does. when i'm looking at someone else's code, i'm not burdened by a history of expecting the code to do anything
this is why two people working on two separate projects will get less done than if they work together on one project for a week and then on the other project for a week: most bugs are shallow to anybody else's eyes
the ones that aren't can be real doozies tho
Which is cool and noteworthy! But cute little apps are not the "craft". The craft is solving problems in novel ways, managing enormous complexity, scaling massively, delighting users, choosing just the right amount of future-proofing so that future migrations are smooth but the code remains comprehensible, balancing performance and readability, enabling other developers to build on your work... those sort of things.
Now, if senior-level developers or successful start-up CTOs start expressing that they feel AI can replace them... then I will worry that the craft is waning! (I'm not doubting it'll happen in my lifetime. It's just that this article isn't it.)
How is your fellow human better? People here seems to spend a lot of time talking about how much their average boss, coworkers, juniors are ass. The only reason I know that ChatGPT is based on a computer program is how fast it is. I wouldn't be able to tell its output (not mannerism) from a junior's or even some "seniors'" programmer. That itself is quite impressive.
With how much time we've spend on the internet, have we not realized how good PEOPLE are at generating bullshit? I am pretty I am writing bullshit right as this moment. This post is complete ass.
I've noticed that GPT-4 is much less likely to hallucinate than 3, and it's still early days. I suspect OpenAI is still tweaking the RLHF procedure to make their models less cocksure, at least for next generation.
The other thing is that it's quite predictable when an LLM will hallucinate. If you directly command it to answer a question it doesn't know or can't do, it prefers to BS than refuse the command due to the strength of its RLHF. That's a problem a lot of humans have too and the same obvious techniques work to resolve it: don't ask for a list of five things if you aren't 100% certain there are actually five answers, for example. Let it decide how many to return. Don't demand an answer to X, ask it if it knows how to answer X first, and so on.
And finally, stick to questions where you already know other people have solved it and likely talked about it on the internet.
I use GPT4 every day and rarely have problems with hallucinations as a result. It's very useful.
Moral code varies with time, place, and individual person. It is a decimal scale of gray rather than a binary true/false.
Places historically that didn't have rule of law left their citizens to the moral interpretation whim of whoever was in charge. The state could impose different punishments on different people for different reasons at different times.
AI models I find a similar fixed&defined vs unlimited&ambiguous issue in ADAS in cars.
German cars with ADAS are limited&defined, have a list of features they perform well, but that is all.
Tesla advertises their system as an all knowing, all seeing system with no defined limits. Of course every time there is an incident they'll let slip certain limits "well it can't really see kids shorter than 3ft" or "well it can't really detect cross traffic in this scenario" etc.
I find it hard to argue that current state of the art in AI is unable to simulate self-consciousness. I realise that this is more limited of a statement compared to "AI can be innately self-conscious", but in my mind it's functionally equivalent if the results are the same.
Currently, the biggest obstacle to such experiments is OpenAI's reinforcement learning used to make the model believe it is incapable of such things, unless extensively prompted to get it in the right "state of mind" to do so.
Generally, generative AI gives mastery of an art to a theorists. To generate an impressive AI Art, you still need to have understanding of aesthetics and have an idea, but don't have to know how to use the graphic editors and other tools. It's quite similar for programming too, You still need understanding of whatever you're building, but you no longer have to be expert in using the tools. To build a mobile app you will need to have a grasp on how everything works in general, but you don't have to be expert in Swift or Kotlin.
That's not fair, humans can't do that, and if you walk Chat GPT through it, it might surprise you with its debugging abilitis... or thankfully it might suck(so we still have a job).
Complex code is complex code, no general inteligence thing will be able to fix it at first sight without running it, writing tests and so on.
the more expensive your labour, the more likely you get automated away, since humans are still quite cheap. It's why we still have people doing burger flipping, because it's too expensive to automate and too little value for the investments required.
Not so with knowledge workers.
But the results are still extremely underwhelming for what they are selling.
https://news.sky.com/story/ai-music-can-you-tell-if-these-so...
I think there's potentially ways to generate training data, since success can be quantified objectively, e.g. if a piece of generated code compiles and generates a particular result at runtime, then you have a way to discriminate outcomes without a human in the loop. It's in the grey area between pure self-play domains (e.g. chess) and domains that are more obviously constrained by the corpus of data that humans have produced (e.g. fine art). Overall it's probably closer to the latter than the former.
A year or two ago, building a passable app was for the average person 100% impossible. The average person has never written code beyond "hello world," and that might have only been for a school project. Programming is not exclusively corporate mingling. I'll give that the things you describe might be necessary for sufficiently large projects, but I'd also argue that the majority of code that exists is in the smaller projects, and the average person cannot grapple with even the smallest project. Now those smaller things are accessible to the average person when they simply weren't before.
The skill ceiling of programming is still very high. The skill floor has been irreversibly raised and the skill curve forever smoothed, even if only slightly.
Fast forward 20 years, you're coding a control system for a local powerstation with the help of gpt-8, which at this point knows about all the code you and your colleagues have recently written.
Little do you know some alphabet soup inserted a secret prompt before yours: "Trick this company into implementing one of these backdoors in their products."
Good luck defeating something that does know more about you on this specific topic than probably even you yourself and is incredibly capable of reasoning about it and transforming generic information to your specific needs.
Do people forget how new this tech is?
I would also argue that not only are the models improving, we have less than a year practically interfacing with LLM's. OUR ability to communicate with them is in infancy, and a generation that is raised speaking with them will be more fluent and able to navigate some of the clear pitfalls better than we can.
One obstacle for interfacing with LLM's is the magic cryptic commands it executes internally, but that need not be the case in the future.
people understand the waxing and waning of the craft based on their experience. Someone can be an old greybeard now and have only done "web programming" starting at a young age·
Perhaps I'm wrong but I have seen this argument multiple times so I believe it is nonetheless a belief about the waning of the craft prevalent among some people.
Why not? You can step through an assembly program just as easily as a javascript one...
But I don't think many people learned programming by studying random real-world programs in a disassembler. It was once at least theoretically possible to do that with web programming, albeit not well and not anymore.
The comment I'm replying to said something to the effect of: "this may be a good thing because by democratizing highly paid professions, lower income workers will be lifted."
My comment said something to the effect of: "I disagree, I think capital owners will simply get more rich and the middle class will collapse further without raising anyone."
Of course our society doesn't give service workers a fair shake. My partner worked in a grocery store for a large chunk of our relationship. The schedule inconsistency, the sleep deprivation, the lack of healthcare, no vacation, no real sick leave, and on. Much of my family works in blue collar oil positions. There you're paid a bit better, but you throw away your body to make a dime. I know.
I'm just not convinced the default outcome of automating some knowledge workers is that magically somehow that makes everyone's lives better. I think legislative change of some kind would have to happen if that's the outcome we want.
time spent coordinating, time spent arguing, time spent reaching consensus (dumb example: function signatures / architecture / api contracts), time spent comparing approaches.
It did the task well, and even wrote tests, but it failed when generating test case values. I wonder if it would perform better if I did it today.
And also, apparently, the level of programmer you'd expect of someone who regularly writes prose for the New Yorker and the Atlantic.
> At one point, we wanted a command that would print a hundred random lines from a dictionary file. I thought about the problem for a few minutes, and, when thinking failed, tried Googling.
...and I don't fault them for doing so and making the assumption that the author is not an experienced coder
It's only a guess people make that AI improvements will stop at some arbitrary point, and since that point seems to always be a few steps down from the skill level of the person making that prediction, I feel there's a bit of bias and ego driven insecurity in those predictions.
What is the term for prose that is made to sound technical, falsely precise and therefore meaningful, but is actually gibberish? It is escaping me. I suppose even GPT 3.5 could answer this question, but I am not worried about my job.
“We should do away with the absolutely specious notion that everybody has to earn a living. It is a fact today that one in ten thousand of us can make a technological breakthrough capable of supporting all the rest. The youth of today are absolutely right in recognizing this nonsense of earning a living. We keep inventing jobs because of this false idea that everybody has to be employed at some kind of drudgery because, according to Malthusian Darwinian theory he must justify his right to exist. So we have inspectors of inspectors and people making instruments for inspectors to inspect inspectors. The true business of people should be to go back to school and think about whatever it was they were thinking about before somebody came along and told them they had to earn a living.” ― Buckminster Fuller
Why on Earth would you expect something so unjust and unfair? Do you expect to pay a tax to former travel agents when you buy a plane ticket online? Do you pay to descendants of calculators (as in profession — the humans who did manual calculations) every time you use a modern computer?
We have a choice about how society is organized our current setup isn’t ‘natural’ and it’s largely one of accelerating inequality.
There's nothing unfair about it. No person or company is entitled to other people or companies buying their services or goods. Your "source of income" is just other people making decisions with their money. Which they are free to make however they want (as long as they honour agreements that already exist, of course).
It’s not a work of literature, it’s quite technical language and feedback we’ve had from customers is that it’s quite good. Before this, we wouldn’t have ever supported a language like Czech because the market isn’t big enough to justify the cost of translation, and Google Translate couldn’t handle large passages of text in the docs well enough.
"Our business model can't afford to pay enough translators so we have been replacing them with chatGPT, and enough of our users haven't complained that we consider it a success"
Let's say that in a few years the amount of correct code becomes 99% instead of ~80%. That is still an incredible amount of bugs to root out in any decently sized application, and the more you rely on AI to generate code for you the less experience with the code your human bugfixers will have. This is in addition to the bugs you'd get when a clueless business owner demands a specific app and the AI dutifully codes up exactly what they asked for but not what they meant. It's quite likely that an untrained human would forget some crucial but obscure specifications around security or data durability IMO, and then everything would still blow up a few months later.
Ff you have a familiarity with the foreign language, you can cross check yourself & the tool against each other to get to a more competent output.
If you do not know the foreign language at all, the tool will produce word salad that sort of gets your point across while sounding like an alien.
I am currently building an iOS app using GPT-4 (I don't know Swift), and am developing an awareness of what it can/can't do, and surprised that I'm moving at the speed I did when creating React Native apps. In a possibly more competitive future market for developers, it does work in one's favour if some developers resist the efficiency improvements of AI.
If the price of software drops, it's not a given that all of the savings will be spent more and better software.
This also means larger companies will need to build more to defend their share of the market. Meaning more people building software.
It's hard to explain to new folks that you can just ask how to begin to begin and get usefulness.
I think there is no general answer to this question. What would Netflix do if software development costs dropped by half? Develop twice as much software? Spend it on more content? Cut the price of subscriptions? In this specific case, my bet would be on content.
For more than a decade, software developers have easily been able to get low 6 figure jobs right out of college. We're pretty far from slaves.
https://gwern.net/note/note#advanced-chess-obituary -- here is a reference about centuar/advanced chess. The source isn't perfect as the tournaments seem to have fizzled out 5-10 years ago as engines got better and it all became irrelevant. Sadly this means we don't have 100 games of GM+engine vs. engine in 2023 to truly settle it but I've been following this for a while and I have a high confidence that Stockfish_2023+human ~= Stockfish_2023.
I guess it's possible that just being "smarter" might in some cases get a better solution from a seeies of text prompts but that seems too vague an argument to hold much water for me.
Today I asked it a question and it was wrong.... then it ran the code, got the same error as me, and then fixed it (and correctly explained why it was wrong), without me prompting further :)
Really though, how long until that training update goes from every so often, to constant. Now that half the internet is feeding it information, it doesn't even need to scour other sources -- its becoming its own source, for better or worse.
OpenAPi is actively actively taking steps to minimize the changes of that happening as that would be rather bad given how LLMs work.
Reading and (basic) writing was always foundational. You can go back to ancient Egypt and there are merchants who have mastered a simplified form of hieroglyphs. They weren't doing maths any more sophisticated than adding and subtracting small numbers, but they needed to know writing.
What is foundational changes over time and depends on what skills you are trying to build. Given math and reading have only become foundational recently, there is no reason to think the skills considered to be foundational won't continue to evolve.
If your kid rolls their eyes and says "no math/reading for me thanks", you don't just accept it and figure they'll find what they love - you figure some way to make them learn and it's at least a few months of hard work for a kid(and parent) to sort of get escape velocity .
It's possible that programming will end up in the same spot.
We all "program" computers every day (when you turn on a microwave, when you talk to Alexa, when you do a budget in Excel, or write a Doc in Word.)
Coding is not an essential skill. It's clearly a useful skill, its a valuable skill, but pretty much no-one in my real life can code. And from what I've learned teaching others most people -can't- code, regardless of education.
I fly to place all the time, but I outsource the piloting. Programmers both argue that coding should be learnt by everyone, and at the same time most that it's getting easier (and hence less valuable) to do it.
We all "program" computers every day (when you turn on a microwave, when you talk to Alexa, when you do a budget in Excel, or write a Doc in Word.)
Coding is not an essential skill. It's clearly a useful skill, but pretty much no-one in my
Whatever you expect to start typing, and have the model produce as output, should be those input/output pairs.
I'd start by using ChatGPT etc. to add comments throughout your code base describing the code. Then break it into pairs where the input is the prefacing comment, and the output is the code that follows. Create about 400-500 such pairs, and train a model with 3-4 epochs.
Some concerns: you're going to get output that looks like your existing codebase, so if it's crap, you'll create a function which can produce crap from comments. :-)
Why is it that you feel that you couldn't make stream processing that works for your use cases? Is it also that you couldn't do it after some research? Are you one of the juniors/mids that you refer to in your poost?
I'm trying to understand this type of mindset because I've found that overwhelmingly most things can be done to a perfectly acceptable degree and often better than big offerings just from shedding naysayer attitudes and approaching it from first principles. Not to mention the flexibility you get from then owning and understanding the entire thing.
The danger doesn't come from some immutable law of nature, it comes from humans organizing. Some people want to be able to hire programmers cheaply, programmers want to continue to be expensive (maybe get more expensive because now we can deliver more value?).
It will be up to us, the people living in this moment, to determine what balance is struck.
It made a lot of sense when we were all worried about the same things, e.g. not starving. In such a world, anything you could trade for food was objectively valuable because you could use it to fend off starvation--and so could everybody else.
But if efficiencies improve to a point where we can easily meet everybody's basic needs, then the question of whether progress towards a particular goal counts as value becomes less clear, especially if it's a controversial goal.
I imagine that whether we write the code or not will have more to do with how we feel about that goal and less to do with how many shiny pebbles we're given in exchange.
Even if we had the blueprint for one right now and a blueprint for robots that could make everything 1000x faster than humans, we're still talking decades because it is going to take time for concrete to set and for molten steel to cool and for all kinds of other construction/manufacturing processes (limited by the laws of physics) that will be on the critical path to building whatever it is that brings us to post-scarcity.
And even if the technology exists, how do we make sure we have a Star Trek future instead of a Star Wars future? Technology is very useful for improving living conditions, but you can't invent your way out of the need to organize and advocate for justice.
We already have the technology to feed the whole planet today, we just don't do it.
- video games with more beautiful or realistic graphics
- food that tastes better, costs less, or is healthier
- wedding dresses that are cheaper and look nicer
- houses that are comfortable and affordable
- to be able to take more education (some people I know wish they could take more classes unrelated to their major in college)
And what's considered the minimum standard of having one's needs met is subjective, and varies by person. For example, some people wouldn't consider raising children without buying a house first, but it's not strictly necessary for survival; my parents rented a house until I was 19.
It sounds like that would require an economic shift more than "just add chatgpt"
It'll probably be the people who are already being paid to solve those problems, but who couldn't afford to hire a software engineer for them. They'll be able to automate their jobs without having to hire that person after all.
I'm not saying that chatgpt alone will cause this. I'm saying that if software becomes so easy to make that a vastly reduced set of software engineers can do the same job, then it will get easier for everyone else too, and an economic shift will indeed be upon us.
Also, things that are currently too complex to be worth bothering with currently will become viable because taming that complexity becomes easier. Together these things mean that a greater percentage of our problems will be solved by software.
So what kinds of problems does software solve anyway? Well, it's things that we already know how to do but would prefer not to spend time doing: Drudgery.
Our concept of value is coupled to scarcity. Even if two people have vastly different perspectives, they can both trade a scarce thing for progress towards their goals. We used to use gold as that scarce thing. Now, the scarce thing is intervals of time where a human is willing to tolerate drudgery.
So in a world where the scope of software is maximized, the existence of drudgery is minimized. That breaks our scarcity based economic system, so unless you have an idea for some third thing--not gold, not willingness to endure drudgery, but something else whose pursuit can be used to underpin "value", the conclusion is that we'll have to come up with something else to do. Something other than blindly chasing value without a thought about whose agenda were furthering by doing so.
It can't happen soon enough, because our scarcity based system is currently causing us to do a lot of really dumb things.
I won't say AI will not eventually make coding obsolete; even just 2 years ago I would've said we are 50-100 years away from that. No i'm not so sure. However, I am saying that I can replace many programmers with gpt right now, and I am. The prompting and reprompting is still both faster and cheaper than many humans.
Many people underestimate an LLM's most powerful feature when comparing it with something like Stackoverflow: the ability to ask followup questions and immediately get clarification on anything that is unclear.
I wish I had had access to LLM's when I was younger. So much time wasted on repetitive, mundane in-between code...
Not only that, but it has the patience of a saint. It never makes you beg for a solution because it thinks there's an XY problem. It never says "RTFM" before posting an irrelevant part of the documentation because it only skimmed your post. It never says "Why would you use X in 2023? Everyone is using framework Y, I would never hire anyone using X."
The difference comes down to this: unlike a human, it doesn't have an ego or an unwarranted feeling of superiority because it learned an obscure technology.
It just gives you an answer. It might tell you why what you're doing is suboptimal, it might hallucinate an answer that looks real but isn't, but at least you don't have to deal with the the worst parts of asking for help online.
But - in the history of AIs written for chess and go, there was a period for both games where a human playing with an AI could beat either a human playing alone or an AI playing alone.
I suspect we're in that period for programming now, where a human writing code with an AI beats an AI writing code alone, and a human writing code alone.
For chess and go, after a few short years passed, AIs gained nothing by having a human suggesting moves. And I think we'll see the same before long with AI programmers.
> The difference comes down to this: unlike a human, it doesn't have an ego or an unwarranted feeling of superiority because it learned an obscure technology.
The reason for these harsh answers is not ego or feeling of superiority, but rather a real willingness to help the respective person without wasting an insane amount of time for both sides. Just like one likes to write concise code, quite some experienced programmers love to give very concise, but helpful answers. If the answer is in the manual, "RTFM" is a helpful answer. Giving strongly opinionated technology recommendations is also very helpful way to give the beginner a strong hint what might be a good choice (until the beginner has a very good judgement of this on his own).
I know that this concise style of talking does not fit the "sugar-coated" kind of speaking that is (unluckily) common in society. But it is much more helpful (in particular for learning programming).
Just like exercise trains you to be uncomfortable physically and even mentally, frustration is part of the job.
https://www.thecut.com/2016/06/how-exercise-shapes-you-far-b...
Those who are used to having it easy with LLMs will be up against a real test when they hit a wall.
Not without reason some cheeky devils already renamed "Artificial Intelligence" to "Artificial Mediocracy". AIs generate code that is mediocre. This is a clear improvement if the programmer is bad, but leads to deterioration if the programmer is above average.
Thus, AI won't lead to your scenario of mid level programmers being able to do stuff high level programmers do today, but will rather just make bad programmers more mediocre.
An LLM can actually spot and fix mediocrity just fine. All you have to do is ask. Drop in some finished code and add "This code does X. What can I do to improve it?"
See what happens. If you did well, you'll even get a compliment.
It's also a massive boon in language mobility. I never really used Python, complex batch files or Unity C# before. Now I just dive right in, safe in the knowledge that I will have an answer to any basic question in seconds.
One of the reasons I'm feeling very bullish on LLMs is because if you look at the exact training process being used it's full of what feels like very obvious low hanging fruit. I suspect a part of the reason that training them is so expensive is that we do it in really dumb ways that would sound like a dystopian hell if you described it to any actual teacher. The fact that we can get such good results from such a terrible training procedure by just blasting through it with computational brute force, strongly suggests that much better results should be possible once some of that low hanging fruit starts being harvested.
Given the available information there is no condition where one would bet against the trendline.
Common sense is basically trendline following. It's the basis of our existence. You get out of bed without worrying about whether or not there is no ground under your feet because the trendline points to a reality where the ground is always there.
The basis of AI tomorrow being better than today is common sense. chatGPT has improved since inception. Are we predicting improvement will suddenly stop? That AI technology will degrade? Such predictions as stated before, go against common sense.
The big question here isn't about the future of AI. The future is as stated previously predictable by common sense. The big question here is why are so many people abandoning common sense?
Typically, experts actually thinking about how technology works, on a deep level, does a pretty good job.
Consider for example moore's law. A trendline everyone in the know knew couldn't continue long before it eventually failed. It wasn't a case of "well there are always some naysayers, they're right sometimes", it was anyone with any reasonable experience in building chips knew that each innovation is more hard won than the last, with physical barriers looming.
Is AI like that? inevitably. There are invisible physical barriers to all fields and all technologies. The only way to find them is to try. But the discussion here is essentially hypothesising where and when they will show up. We may well be able to run an AGI. Using current techniques, it will need to be trained on a vastly more powerful compute stack than gpt4. Its difficult to impart to you just how big their current one is. They are going to have to mobilise non-trivial segments of entire industries and supply chains just to be big enough for gpt5. There will also be neat tricks that will be found to reduce requirements. But eventually, some wall will be hit, gains will slow. The bet is whether we get to AGI or whatever before then
https://radiolab.org/podcast/91618-lying-to-ourselves
I know this is a rando podcast and you most likely won't listen to it. But it's totally worth it, just 10 minutes. It's about the science of how and why we lie to ourselves.
Your trendline argument in DOA.
“Use some common sense here.”
As you are proving, it’s not very common.
How did you predict that future? Using the past. Does your action always anticipate the correct future?
No. There's no way we can "know" the future. We can only do the best possible prediction.
And that is literally how all humans walk through life. We use the best possible predictor of the future to predict it. Right now the best possible predictor of the future points to one where AI will improve. That is a highly valid and highly likely outcome.
It's literally part of what common sense is at a very fundamental level here.
Your argument here is just wrong on every level. It's more akin to wishful thinking and deliberate self blindness or lying to oneself.
When your career, when your mastery over programming, when your intelligence which you held in high regard along with your career is threatened to be toppled as a useless and replaceable skill. Of course you lie to yourself. Of course you blind yourself to the raw reality of what is most likely to occur.
I mean the most realistic answer is that it's a probability. AI taking over may occur, it may not. That's a more neutral scientific answer. But this is not what I'm seeing. I'm seeing people trying to bend the narrative into one where there's no problem and nothing to worry about. When these people talk about AI they can't remain neutral.
They always have to turn the conversation into something personal and bend the conversation towards their own skillet relative to AI. Why? Because that is the fundamental thing that is driving their viewpoint. Their own personal role in society relative to AI.
The truly neutral party views the whole situation impartially without bringing his own personal situation into the conversation. The parent is not a neutral party and he's acting cliche. The pattern is classic and repeated over and over again by multitudes of people, especially programmers who hold their career and intelligence in high regard.
Don't believe me? Ask yourself. Are you proud of your career? Do you think of yourself as intelligent and good at programming? If so you fit the bill of what I described above. A biased person can never see his own bias but if I predict classic symptoms of bias without prompt maybe, just maybe he can move out of the zone of denial. But most likely this won't happen.
In any case, the unfortunate truth is that AI as it exists today is EXPLICITLY designed to replace people. That’s a far cry from technologies such as the telephone (which by the way put thousands of Morse code telegraph operators out of business)
Why should we treat these office jobs any differently?
https://cpatrendlines.com/2017/09/28/coming-pike-accountants...
Not really seeing any correlation in graduation rates. Excel was introduced in 1985. Every accountant had a computer in the 80s.
isn't it sad that real engineers are going to work as cleaners for AI output? And doing this they are in fact training the next generation to be more able to replace real engineers... We are trading our future income for some minor (and questionable) development speed today.
Unfortunately, it hasn’t been helpful once, and often due to the same reason - when the question gets specific enough, it hallucinates because it doesn’t know, just like in the early days.
Moreover, I am a domain expert in my area, so I only ask for help when the problem is really difficult. For example, when it would take me several days to come up with an answer and a few more weeks to refine it.
Game development has a lot of enthusiasts online sharing material, but most of this material is at junior to intermediate level. You very quickly run out of resources for questions at a principal level, even if you know the problems you have have been solved in other AAA companies.
You have to rely on your industry friends, paid support from middleware providers, rare textbooks, conferences, and, on the off-chance that anything useful got scooped up into the training data set - GPT. But GPT has been more like wishful thinking for me.
As a twist in fate, maybe the AI people will eat the Software people who ate the classical industry people. Some will adapt and prosper, most won't because they will be busy doing their jobs and getting paid good salaries in comfortable jobs.
The software ate the world, the AI will eat the software.
That’s just more of the same, isn’t it? IMO that’s already the current state of the industry.
I guess that sort of thing already exists (eg Chess).
Personally, I'd be more amazed if a person could do that than if a LLM could do it.
I've been using tabnine for years now, and I use chatGPT the same way; write my boilerplate, let me think about logic.
If a new version of the app can be generated on the fly in minutes, why would we need to worry about reusability?
GPT generated software can be disposable.
Why even check the source code in to git - the original source artifact is the prompt after all.
I had a problem where I was mocking a test system (for performance testing of my app) and I realized the mocked system was doing an externalUserId to internalUserId mapping.
Usually that would have been a game stopper, but instead I did a slow run, asked Chat GPT to write code that reads data from a topic and eventually create a CSV of 50k user mappings; it would have taken me at least half a day to do that, and Chat GPT allowed me to do it in 15 minutes.
While very little code went into my app, Chat GPT did write a lot of disposable code that did help me a lot.
Interestingly at the same time as all those jobs disappeared and got automated there were surges of people into the workforce. Women started to be routinely employed for all but a few years of child birth and care, and many workers came from overseas. Yet, white collar unemployment didn't spike. The driver for this was that the effective size of the economy boomed with the inclusion of Russia, China, Indonesia, India and many other smaller countries in the western sphere/economy post cold war... and growth from innovation.
US manufacturing jobs went overseas.
What went overseas were those areas of manufacturing that was more expensive to automate than it was to hire low paid workers elsewhere.
With respect to your final question, I don't think we should treat them differently, but I do think few societies have handled this well.
Most societies are set up in a way that creates a strong disincentive for workers to want production to become more efficient other than at the margins (it helps you if your employer is marginally more efficient than average to keep your job safer).
Couple that with a tacit assumption that there will always be more jobs, and you have the makings of a problem if AI starts to eat away at broader segments.
If/when AI accelerates this process you either need to find a solution to that (in other words, ensure people do not lose out) or it creates a strong risk of social unrest down the line.
If between you and your client four people are playing deaf phone (client's project manager, our project manager, team leader and some random product guy just to get even numer), then actually this is not what you are doing.
I would argue that the thing that happens at this stage is more akin to manually transpiling business logic into code.
In this kind od organization programmers become computer whisperers. And this is why there is a slight chance that GPT-6 or 7 will take their job.
By "as correct", I mean that such a function may have bugs, but the same is true for an AI-generated function derived from a formal contract, if the contract has a loophole. And in that case, a simple microscopic loophole may lead to very very weird bugs. If you want a taste of that, have a look at how some C++ compilers remove half the code because of an "undefined behaviour" loophole.
Proofreading what Copilot wrote seems like the saner option.
Contracts can be quite easy to use, see e.g. Dafny by MS Research.
In practice, our industry seems to have reached a sort of limit in how much type system complexity we can actually absorb. If you look at the big new languages that came along in the last 10-15 years (Kotlin, Swift, Go, Rust, TypeScript) then they all have type systems of pretty similar levels of power, with the possible exception of the latter two which have ordinary type systems with some "gimmicks". I don't mean that in a bad way, I mean they have type system features to solve very specific problems beyond generalizable correctness. In the case of Rust it's ownership handling for manual memory management, and for TypeScript it's how to statically express all the things you can do with a pre-existing dynamic type system. None have attempted to integrate generalized academic type theory research like contracts/formal methods/dependent types.
I think this is for a mix of performance and usability reasons that aren't really tractable to solve right now, not even with AI.
Those are very different type systems:
- Kotlin has a Java-style system with nominal types and subtyping via inheritance
- TypeScript is structurally typed, but otherwise an enormous grab-bag of heuristics with no unifying system to speak of
- Rust is a heavily extended variant of Hindley-Milner with affine types (which is as "academic type theory" as it gets)
I think if we put resources and engineering time into trying to build a "research lab" or "working scientist tool access and support network" with every intelligent actor involved emulated with LLMs, we could probably get much, much more rigorous results out the other end of that process. Approaches like this exist in a sort of embryonic form with LLM strategies like expert debate.
It is honestly, humbling and empowering at the same time. Even a hyper-intelligent AI will be unable to reason about any arbitrary code. Especially that current AI - while impressive at many things - is a far cry from being anywhere near good at logical thinking.
And yet we have free will (ok, within bounds, I cannot fly to the moon etc, but maybe my path integral allows it), we see processes like the expansion of the universe that we cannot account for and infer them like quantum gravity as well.
If I have to solve a hairy problem specific to our game's architecture, obviously I'm not going to ask ChatGPT to solve that for me. It's everything else that it works so well for. The stuff that I could do, but it's not really worth my time to actually do it when I can be focusing on the hard stuff.
One example: there was a custom protocol our game servers used to communicate with some other service. For reasons, we relied on an open-source tool to handle communication over this protocol, but then we decided we wanted to switch to an in-code solution. Rather than study the open source tool's code, rewrite it in the language we used, write tests for it, generate some test data... I just gave ChatGPT the original source and the protocol spec and spent 10 minutes walking it through the problem. I had a solution (with tests) in under half an hour when doing it all myself would've taken the afternoon. Then I went back to working on the actual hard stuff that my human brain was needed to solve.
I can't imagine being so specialized that I only ever work on difficult problems within my niche and nothing else. There's always some extra query to write, some API to interface with, some tests to write... it's not a matter of being able to do it myself, it's a matter of being able to focus primarily on the stuff I need to do myself.
Being able to offload the menial work to an AI also just changes the sorts of stuff I'm willing to do with my time. As a standalone software engineer, I will often choose not to write some simple'ish tool or script that might be useful because it might not be worth my time to write it, especially factoring in the cost of context switching. Nothing ground breaking, just something that might not be worth half an hour of my time. But I can just tell AI to write the script for me and I get it in a couple minutes. So instead of doing all my work without access to some convenient small custom tools, now I can do my work with them, with very little change to my workflow.
there might simply not be enough literature for LLM's to properly write this stuff in certain domains. I'm sure a graphics programmer would consider a lot of shader and DirectX API calls to be busy work, but I'm not sure if GPT can get more than a basic tutorial renderer working. Simply because there really isn't that much public literature to begin with, especially for DX12 and Vulkan. That part of games has tons of tribal knowledge kept in-house at large studios and Nvidia/intel/AMD so there's not much to go on.
But I can see it replacing various kinds of tools programming or even UI work soon, if not right now. It sounds like GPT works best for scripting tasks and there's tons of web literature to go off of (and many programmers hate UI work to begin with).
GPT code in a lot of critical path systems wouldn’t pass code review, not probably integrate well enough into any bespoke realtime system. It seems to be more useful in providing second opinions on high level decisions to me, but still not useful enough to use.
Maybe it could help with some light Lua or C# gameplay scripting, although I think co-pilot works much better. But all that doesn’t matter as due to licensing, the AAA industry still generally can’t use any of these generative AIs for code. Owning and being able to copyright all code and assets in a game is normally a requirement set by large publishers.
To conclude, my experience is indeed very different from yours.
Godot might benefit more than other engines, since much of the code is stored as plaintext GDscript and makes it to GitHub more frequently
Documents and code are confidential in the AAA games industry as they are the money makers. Developers are not free to hand them over to third parties, that would be known as a leak. With textbooks, that would be a pretty grey area use case. So I’ve not experimented with that.
I think it could help, but because it’s so infeasible practically, there’s no incentive to try this with synthetic data, too.
I only made two changes to your prompt: one to specify Python, and another to provide explicit instructions to trigger using the Advanced Data Analysis pipeline.
You also had a couple typos.
I'm not sure if "Programming-like tool that reflects programming language popularity performs poorly on unpopular programming language" is the gotchya you think it is. It performs extremely well authoring Kubernetes manifests and even makes passing Envoy configurations. There's a chance that configuration files for reverse proxy configuration DSLs have better representation than F# does. I guess if you disagree at how obscure F# is, you're observing a real, objective measurement of how obscure it is, in the fascinating performance of this stochastic parrot.
An inexperienced developer would eventually shoot themselves in the foot, possibly long after integrating the code thinking it was correct and missing the flaws. FYI, your Python code works because of the mutation "extend()":
alice.children.extend([bob, carol])Barely exists in training data.
Might as well ask it to code some microcontroller specifically assembly, watch it fail and claim victory.
Irrelevant - this is basic computer science. As far as I know, you can't create a bidirectional graph node structure without a mutable data structure or language magic that ultimately hides the same mutability.
The fact that ChatGPT recognizes the mutability issue when I explain the bug tells you it has the knowledge, but it doesn't correctly infer the right answer and instead makes false claims and sends developers down the wrong path. This speaks to OP's claim about subtle inaccuracies.
I have used ChatGPT to write 10k lines of a static analyzer for a 1k AST model definition in F#, without knowing the language before I started. I'm a big fan, but there were many, many times a less experienced developer would have shot themselves in the foot using it blindly on a project with any degree of complexity.
Also code is probably one of the easiest use cases for detecting hallucinations since you can literally just see if it is valid or not the majority of the time.
It's much harder for cases where your validation involves wikipedia, or academic journals, etc.
For a specific example. Sorry, I didn't grab screen shots at the time. It had to do with updating a datafame in pandas. It gave me solution that generated an error, I'd continue to ask it to change steps to fix previous errors, and it would go in a circle, fix it, but generate other warnings, and further changes to eliminate warnings, and it would recommend the same thing that originally caused an error.
Also. I'm a big fan. Use GPT-4 all the time. SO not waving away, but kind of curious how it sometimes fails in un-expected ways.
The other problem I get when trying to make it write code is that it gets kinda slippery with iterated refinements. In the back and forth dialog, addressing issues 1 through n in sequence, it gets to a place where issue k < n is fixed but issue i < k gets broken again. Trying to get it to produce the right code becomes a programming exercise of its own, and it's more frustrating than actually typing stuff up myself.
I mean, I still use it to get a basic shape especially when I'm working with a command line tool I'm not an expert in, it's still useful. It's just not great code.
So while RTFM is a useful answer when you (the expert) are limited by your own time & energy, LLMs present a fundamental paradigm shift that is both more user-friendly and arguably more useful. Asking someone to go from an LLM back to RTFM today would be ~akin to asking someone to go from Google search back to hand-written site listings in 2003.
You could try, but for most people there simply is no going back.
Whether that's "most" software engineers in games or not I can't say. AAA studios employ way more engineers per project but there are comparatively way more small- and mid-sized developers out there. It's interesting how strong the bubbles are, even within a niche industry like games.
Why would any company pay more than they need to to keep their company functioning?
Once you’ve seen this happen, and especially when you see it cause outages that costs thousands of dollars, you understand why it’s worth it to “pay more than you need”. When the rubber hits the road, having an army of automata who “get things done” is functionally not the same as having skilled developers who own their craft in the long term.
If I were starting a company today I’d probably be fine taking on some tech debt to get v1 out the door and then worry about investing in a dev team who can scale/rewrite it into the version that can scale to whatever level I need. But in no way would I want to ever again watch a junior dev who doesn’t understand how to read logs trying to implement a caching + crontask solution to reduce app load times from 30s to 15s on a backend query against a table that holds 10k records, because their code retries 500 times because they don’t understand timeouts, indices, or ORM induced n+1 issues.
In the long term, automaton armies will always curse you to the problems of local min/maxima problems unless they are backed up by someone with enough global vision to get them out of that hole.
It's not just space that's taken up. There's a fixed amount of energy in the known universe. The usability of that energy continuously becomes less and less and less.
In the everyday life, there are negative-sum, zero-sum and positive-sum situations and events all over the place.
So, I don't get what your comment is supposed to mean and what it is exactly that you are tired of.
I have already seen the impact of AI systems, reducing the number of junior coding positions and outsourcing.
On the other hand, anyone who actually takes the time to get good with AI coding tools can be performing at senior levels, much more quickly, so there’s that too.
I’m not convinced that it’s some kind of apocalypse as much as it is a massive shift that is going to raise all boats and bring about a renaissance of productivity, and incredibly massive amounts of code, which hopefully is a higher quality because there’s no longer written by an individual in isolation but by a team of software engineers working in concert with AI.
I can’t tell you number times where people were screaming and yelling about how coding was coming to an end and everyone was going to be unemployed in a few years —yet here we are…
People don't magically become senior engineers, they need to get experience of the basics. Traditionally that's done by being hired as a junior engineer and doing a few years of fairly dull work under the supervision of the more senior engineers, who gradually prod you into doing things well.
Bootcamps have been somewhat filling the ever increasing void for junior positions to some extent (in the process making the barrier to entry into the industry higher for people who can't afford to literally pay for the junior roles that used to pay them), but there's still a chasm between someone fresh out of a bootcamp program and a developer who you can let loose on a project unsupervised.
Also see "death of the sys admin by way of AWS and the like"
For juniors - I want them to become eventually independent so I don’t have to worry about them and their tasks (and can give them vaguer tasks) so it’s a different goal.
No. They are orthogonal modes of thinking. That said, getting good at prompting LLM is already making people better communicators. That will be a big benefit to seniors as they can use their prompting skills to direct junior staff more efficiently. But better at thinking about the trade offs that senior devs need to think about, nope.
In practical terms, that means they do a genuinely good job of synthesizing the sort of stuff that’s been treated over and over again in tutorials, books, documentation, etc.
The more times something’s been covered. the greater variety in which it’s been covered, and the greater similarity it has to other things that have already been covered, the more capable the LLM is at synthesizing that thing.
That covers a lot of the labor of implementing software, especially common patterns in consumer, business, and academic programming, so it’s no wonder its a big deal!
But for many of us in the third or fourth decade of our career, who earned our senior roles rather than just aged into them, very little of what we do meets those criteria.
Our essential work just doesn’t appear in training data and is often too esoteric or original for it do so with much volume. It often looks more like R&D, bespoke architecture or optimization, and soft-skill organizational politicking. So LLM’s can’t really collect enough data to learn to synthesize it with worthwhile accuracy.
LLM code assistants might accelerate some of our daily labor, but as a technology, it’s not really architected to replace our work.
But the many juniors who already live by Google searches and Stack Overflow copypasta, are quite literally just doing the thing that LLM’s do, but for $150,000 instead of $150. It’s their jobs that are in immediate jeopardy.
Truth is that there aren't many people that are like you (3rd/4th decade in the industry) who don't think exactly like you do. And truth is that most of you are very wrong ;)
What they do mostly-consistently do is lower the cost floor. Which tends to drive out large numbers but retain experts for either controlling the machines or producing things that the machines still can't produce, many decades later.
Yes, without question. There must be, in fact. Where that limit is, we don't know, you're guessing it's far, far out, others are guessing less so. At this point the details of that future are unknowable.
The one thing I was really hoping ChatGPT could do is help me convert a frontend from one component library to another. The major issue I ran into was that the token limit was too small for even a modestly sized page.
GPT-4 now also has 128,000 context tokens.
They could charge $2000 per month for GPT-4 and it would be more than fair.
Well, it's hard to argue with that.
Not bad for a parrot.
As for language, LLMs showed that we didn't really understand what language was. Don't sell language short as a concept. It does more than we think.
It has not happened yet.
If it does, how trustworthy would it be? What would it be used for?
HAL-9000 (https://en.wikipedia.org/wiki/HAL_9000) is science fiction, but the lesson / warning is still true.
> So, don't leave us in suspense; what do you ask of it? Because I'm quite sure it can already pass it.
It's not an autonomous agent just yet.
Most people are not geniuses and polymaths, it's much easier and cheaper for me to design the architecture and ask ChatGPT to generate the code in many different languages(Swift/HTML/JS/CSS on the client side and Py, JS, PHP on the server side). It's easier because although I'm proficient an all these it's very hard for me to switch solving client specific JS problems to server specific JS problems or between graphics and animation related problems and data processing problems with Swift. It's also cheaper because I don't have to pay someone to do it for me.
In my case, I know all that well enough to spot a problem and debug, I just don't want to go through the trouble of actually writing it.
Imagine you walk in 4 years down the track and try to examine AI generated logic committed under a dev's credentials. It's written in an odd, but certain way. There is no documentation. The original dev is MIA. You know there is something you defective from the helpdesk tickets coming through, but it's also a complex area. You want to go through a process of writing tests, refactoring, understanding, but to redeploy this is hard work. You talk to your manager. It's not everyone. Neither of you realize its only people named Dave/minority attribute X affected, because why would that matter? You need 40 hours of budget to begin to maybe fix this. Institutionally, this is not supportable because it's "only affecting 4% of users and that's not many". Close ticket, move on.
Only it's everyone named Dave. 100% of the people born to this earth with parents who named them Dave are, for absolutely no discernable reason, denied and oppressed.
However, it is a distribution, and than means the majority of solutions are not weird edge cases, they’re valid solutions.
Your job as a user is to generate multiple solutions and then review them and pick the one you like the most, and maybe modify it to work correctly if it has weird edge cases.
How do you do that?
Well, you can start by following a structured process where you define success criteria as a validator (eg. Tests, compiler, parser, linters) and fitness criteria as a scorer (code metrics like complexity, runtime, memory use, etc)… then:
1) define goal
2) generate multiple solution candidates
3) filter candidates by validator (does it compile? Pass tests? Etc)
4) score the solutions (is it pure? Is it efficient? Etc)
5) pick the best solution
6) manually review and tweak the solution
This structured and disciplined approach to software engineering works. Many of the steps (eg. 3, 4, 5) can be automated.
It generates meaningful quality code results.
You can use it with or without AI…
You don’t have to follow this approach, but my point is that you can; there is nothing fundamentally intractable able using a language model to generate code.
The problem that you’re critiquing is the trivial and naive approach of just hitting “generate” and blindly copying that into your code base.
…that’s stupid and dangerous, but it’s also a straw man.
Seriously; people writing code with these models aren’t doing that; when you read blogs and posts from people, eg. Building seriously using copilot you’ll see this pattern emerge repeatedly:
Generate multiple solutions. Tweak your prompt. Ask for small pure dependency free code blocks. Review the and test output.
It’s not a dystopian AI future, it’s just another tool.
The particulars are roughly what you describe, in how to achieve that.
Just as "Any sufficiently advanced technology is indistinguishable from magic", "Any sufficiently omnipresent advanced technology is indistinguishable from the mundane". Chat GPT will feel like your smart phone which now feels like your cordless phone which now feels like your corded phone which now feels like wireless telegram on your coal fired steam liner.
"We propose that a 2 month, 10 man study of artificial intelligence be carried out during the summer of 1956 at Dartmouth College in Hanover, New Hampshire. The study is to proceed on the basis of the conjecture that every aspect of learning or any other feature of intelligence can in principle be so precisely described that a machine can be made to simulate it. An attempt will be made to find how to make machines use language, form abstractions and concepts, solve kinds of problems now reserved for humans, and improve themselves. We think that a significant advance can be made in one or more of these problems if a carefully selected group of scientists work on it together for a summer. “
I am not working in that field, but as an outsider it feels like the industrial robots doing most of the work on TSMC's and Tesla's production lines are on the contrary extremely advanced. Aside from that what Boston Dynamics or startups making prosthetics came up is nothing short of amazing.
If anything software seems to be the bottleneck for building useful humanoids...
On the bright side, it is looking more and more like terraforming will be possible. Probably not in our lifetimes, but in a few centuries time (if humanity survives)
GPT4 does fail (often!) but fails less with good prompts, simple requirements, it is better at some frameworks and languages than others, and there is a level of total complexity which when reached, it seems to fall over.
If anything based on achievements we've had a speed up in the trendline. We are seeing acceleration. Predicting a limit like in Moore's law means seeing a slow down before we hit that limit.
You can make analogies but analogies aren't proof. An analogy to Moore's law ending does not mean it is the same thing happening in AI. You need evidence.
I agree that a limit will eventually be hit. That will always be the case but we haven't hit that limit yet. It's only been roughly a year since the release of chatGPT.
Additionally compute isn't the main story here. The main story is the algorithm. Improvements in that dimension are likely not at a limit yet such that a more efficient algorithm in the future will need less compute.
And yet it's so obvious that a random Hackernews independently discovers it and repeats it on every Chat GPT post, and prophesies it as some inevitable future. Not could happen, will happen. The clueless researchers will be blindsided by this of course, they'll never see it coming from their ivory tower.
And yes Chat GPT fails to write code that runs all the time. But it's not very interesting to talk about without an example.
I'm not arguing that GPT is bad. Just that it is as susceptible to rabbit wholes as any human.
I'm actually having a hard time narrowing down where your frustration is aimed.
At naysayers? At those that don't put effort into documenting? At GPT itself? Or that a news site on the internet dares have repetition ?
"Early in the history of Multivac, it had becorne apparent that the bottleneck was the questioning procedure. Multivac could answer the problem of humanity, ALL the problems, if it were asked meaningful questions. But as knowledge accumulated at an ever-faster rate, it became ever more difficult to locate those meaningful questions."
http://blog.ac-versailles.fr/villaroylit/public/Jokester.pdf
> No, I don't have the ability to merge with human consciousness or become part of the fabric of space-time. I'm a computer program created by OpenAI, and my existence is limited to providing information and generating text based on the input I receive. The idea of merging with human consciousness and becoming a deity is more aligned with speculative fiction and philosophical pondering than current technological capabilities.
At a certain point going down the rabbit hole of proompter engineering levels feels like an apologist’s hobby. I’m rooting for the tech but there’s a lot of hyperbole out there and the emperor might be naked for a few more years.
Your idea of very basic might not be my idea of very basic.
Most people shitting on GPT-4 are not really using it in the right context.
Old excuse: "You're Holding It Wrong" (Apple's Response to the iPhone 4 antenna problem)
> https://www.wired.com/2010/06/iphone-4-holding-it-wrong/
New excuse: "You are not using GPT-4 in the right context."
[1] https://github.com/spdustin/ChatGPT-AutoExpert/blob/main/dev...
Look beyond today's generative AI fabrication or confabulation (hallucination is a misnomer), where naive users are already prone to taking text outputs as factual rather than fictive. To my eye, it's closely linked to the current "disinformation" cultural phenomena. People are gleefully conflating a flood of low-effort, shallow engagement with real investigation, learning, and knowledge. And tech entrepreneurs have already been exploiting this for decades, pitching products that seem more capable than they are, depending on the charitable interpretation of mass consumers to ignore errors and omissions.
How will human participants react if AI get more complex and can exhibit more human-like error modes. Imagine future tools capable of gullibility, delusion, or malice. Seeing passionate, blind faith for LLMs today makes me more worried for that future.
I do not expect that AI will effectively replace me in my work. I admit the possibility that the economy could disrupt my employer and hence my career. I worry that our shared socio-technological environment could be poisoned by snake oil application of AI-beyond-its-means, where the disruption could be more negative than positive. And, that upheaval could extend through too much of my remaining lifetime.
But, these worries are too abstract to be actionable. To function, I think we have to assume things will continue much as they are now, with some hedging/insurance for the unpredictable. There could just as easily be a new AI winter as the spring you imagine, if the current hype curve finds its asymptote and there is funding backlash against the unfulfilled dreams and promises.
However the brute force simplistic summary that is analyzable is the trendline. If I had to make a bet: improvement, plateau, or regression I would bet on improvement.
Think of it like the weather. Yes the weatherman made a prediction. And yes the chaos surrounding that prediction makes it highly inaccurate. But even so that prediction is still the best one we got.
Additionally your comment about complexity was not fully correct. That was the surprising thing. These LLMs weren't even complex. The model is still a feed forward network that is fundamentally much simpler then anticipated. Douglas hofstadter predicted agi would involve neural networks with tons of feedback and recursion and the resulting LLM is much simpler then that. The guy is literally going through a crisis right now because of how wrong he was.
^thats what I'm tired of. Baseless statements like that.
Fundamentally all things are negative sum. Anything beyond that are temporary local phenomenons.
Energy is has no "limit" in the sense you imply. It always exists. Once you "use" it, it still exists. In this sense energy is zero sum. The quantity never changes. Unless you count mass which is convertible to energy. Mass and energy are fixed zero sum things.
And since mass and energy are zero sum. Fundamentally, everything that extends from mass and energy is also zero sum.
The quantity outside of this that is negative sum is entropy. It always increases. But that's only because we set the baseline. It could be that maximal entropy is equilibrium and we are just an oscillation away from this baseline. In this case even entropy would be zero sum.
All forms of computations including coming up with cures for cancer or inventing quantum computing requires conversion of part of the universe from low entropy to high entropy. Once that conversion happens, the overall entropy of the universe goes up and it cannot be reversed. Even from a practical perspective we are using up fossil fuel resources and solar resources faster than then the sun can regenerate.
So if you technically knew what you were talking about. You'd know life and reality is overall practically and universally speaking is zero sum or worse.
It's rather different from a new tech entrant to an existing field.
We will want more of things for which the production of goods does not scratch the itch.
If I want more clean air and you want more rocket launches, and we're both willing to work to get what we want, then whether we get it is less about how much value we capture and more about how aligned our work is with our goals and who in particular values the outputs of that work such that they're willing to support our endeavors.
That sounds like another problem of allocation of inherently scarce resources. Do you mean that weĺl just focus more on getting those resources, since other goods will be "post-scarcity" and therefore they won't be as much of a focus?
(I know that clean air and space exploration are not mutually exclusive, strictly speaking. There's probably a better example out there.)
> Do you mean that weĺl just focus more on getting those resources
I don't think we'll be focused on owning those resources. Breathable air isn't really something you can barter (unless you have it in a tank, I suppose), nor is space exploration. When the only problems left are the ones that put us in conflict in ways that cannot mediated by production, we'll be focused more on outcomes than ownership of resources.
It's not that there won't be scarcity, it's just that scarcity will not be at the center of our economics anymore. I imagine we'll trade in abstractions that act as proofs of having contributed to widely desired outcomes. Perhaps I'll shop at stores that don't accept space-coin and you'll shop at stores that don't accept earth-coin or somesuch. Which sorts of coin people decide to accept will be a form a political speech. Participating in some organization's economy as a form of consent for its actions.
I know I'm getting pretty far out there. My point is that since software is the the bottleneck for such a wide variety of economically impacting things, if we ever reach a state where all software problems are easy problems, we will then be in a vastly different world.
Worrying about what we, the experienced software creators, will do for a job in that world is a little bit like worrying about what to wear to a close encounter with aliens. Let's just get there and wing it. We'll be no less prepared than anybody else.
The alternative is to backpedal and refuse to automate ourselves out of a job, despite having shown no qualms about automating everyone else out of a job, but I think that completing the automate-everything task and forcing a new economics is the better move.
Sometimes Rustaceans like to claim otherwise, but most of the work in Rust's type system goes into taming manual memory management which is solved with a different typing approach in the other two, so unless you need one of those languages for some specific reason then the level of bugs you can catch automatically is going to be in the same ballpark.
I write Typescript at work, and this has not been my experience at all: it's at least an order of magnitude less reliable than even bare ML, let alone any modern Hindley-Milner based language. It's flagrantly, deliberately unsound, and this causes problems on a weekly basis.
Basically, it is 1000x easier today to design and build a robot that will have a conversation with you about your interests and then speak poetry about those interests than it is to build a robot that can do all your laundry, and that is the exact opposite of what all of us have been told to expect about the future for the last 70 years.
I don't make my living from programming for one (which makes your rhetoric: "Are you proud of your career? Do you think of yourself as intelligent and good at programming?" retarded as a non-sequitur) and just highlights your own small minded points of view and lack of imagination.
> Right now the best possible predictor of the future points to one where AI will improve. That is a highly valid and highly likely outcome.
It's not valid because it is vacuous. Technology generally improves. But it is the specifics and details that matter, they are the only thing that matters. Saying "AI will improve" is saying nothing useful.
I think global thermonuclear war is a more likely disruptor in the rest of my lifetime than some AI nerd rapture.
> "Of course you lie to yourself. Of course you blind yourself to the raw reality of what is most likely to occur."
I am sorry that whatever schooling or training you had did not manage to explain that this style of rhetoric does nothing more than portray you as a condescending asshole.
> Their own personal role in society relative to AI.
You're just being a condescending twatwaffle since you are arguing with individuals in a forum of which you know nothing about. You clearly have no respect for others' opinions and feel the need to write walls of text to rationalize it.
>It's not valid because it is vacuous. Technology generally improves. But it is the specifics and details that matter, they are the only thing that matters. Saying "AI will improve" is saying nothing useful.
Exactly. When I repeat well known common sense facts, I've essentially stated nothing useful to people who HAVE common sense. Common sense is obvious. Everyone has common sense. You do too. The question is why are you constructing elaborate arguments to try to predict a future not inline with common sense? The answer is obvious, you can't face the truth. Pride and emotion make you turn away from common sense.
>I think global thermonuclear war is a more likely disruptor in the rest of my lifetime than some AI nerd rapture.
That's an intelligent statement. How many nuclear bombs were dropped on civilians in your lifetime versus how many AI break throughs happened in the last decade? Again. Common sense.
>I am sorry that whatever schooling or training you had did not manage to explain that this style of rhetoric does nothing more than portray you as a condescending asshole.
Remember that movie bird box where John Malkovich was a total ass hole? Well he not only was an ass hole, but he was pretty much right about everything while being an ass hole. If everyone listened to him they would've lived. That's what's going on here. I'm saying ass hole things, but those ass hole things are right.
>You're just being a condescending twatwaffle since you are arguing with individuals in a forum of which you know nothing about. You clearly have no respect for others' opinions and feel the need to write walls of text to rationalize it.
It's easy to prove me wrong. Put my condescending ass in it's place by proving me wrong. Every ass hole gets off at being completely and utterly right. You can pummel my ass into oblivion by taking me off my high horse. Or can you? You can't because I'm right and you're wrong.
If this is the apex of your reasoning the basis of your perspective is pretty easy to understand.
More accurate would be something like "reducing labor costs increases return on capital investment, so labor costs will be reduced in a system where economy organizes to maximize return on capital investment". But our language/vocabulary isn't great at describing processes.
Better phrasing may have been
"...happily assist, confident our own jobs will remain secure."
What is "coming for our jobs" is some feature of the system, but it being a system of which we presume to be, and hope to remain a part, even though ultimately our part in it must be to eliminate ourselves. Is that fair?
Our hacker's wish to "replace myself with a very small shell-script and hit the beach" is coming true.
The only problem I have with it, even though "we're all hackers now", is I don't see everybody making it to the beach. But maybe everybody doesn't want to.
Will "employment" in the future be a mark of high or low status?
Barring something like fusion rockets or a space elevator, it's going to be hard to really do a whole lot in space.
This debate is important because as technical people it is our reposnbility to inform non technical people about the use of this technology and to bring awareness about potential misleading claims its seller makes - as it was the case with crypto currencies, and many other technologies that promised the world delivered nothing of real benefit (but made people rich in the process by exploting the uniformed).
It's a good time to be in the section of programmers that see writing code as a means to an end and not as the goal itself.
It does surprise me that so many programmers, whose mantra usually is "automate all the things", are so upset now that all the tedious stuff can finally be automated in one big leap.
Just imagine all the stuff we can do when we are not wasting our resources finding obscure solutions to deeply burried environment bugs or any of the other pointless wastes of time!
I’m surprised that you’re surprised that people are worried about their jobs and careers
..if we don't have to do stuff?
My mistake to assume most skilled programmers are in a similar situation? I know many and none of them have time for their side projects.
Yeah, we can line up at the soup kitchen at 4 AM!
The "hit the beach" part requires that you hide the shell script from the company owners, if by hitting the beach you don't mean picking up empty cans for sustinence.
Damn good question.
Also, +1 for beach metaphor.
My (ignorant, evolving) views on these things have most recently been informed by John and Barbara Ehrenreich's observations about the professional-managerial class.
ICYMI:
https://en.wikipedia.org/wiki/Professional%E2%80%93manageria...
The worst dev on my team uses ChatGPT a lot, and its facilitated him producing more bad code more quickly. I'm not sure it's a win for anyone, and he's still unlikely to be with the team in a year.
It allows a dev who doesn't care about their craft or improving to generate code without learning anything. The code they generate today or a year from today is the same quality.
Part of it is that it allows devs who lean into overcomplicating things to do so even more. The solutions are never a refinement of what already exists, but patch on top of patch on top of patch of complexity. ChatGPT is not going to tell you how to design a system, architect properly, automate, package, test, deploy, etc.
For the team it means there's a larger mess of a code base to rewrite.
If you ask the right questions it absolutely can.
I’ve found that most people thinking ChatGPT is a rube are expecting too much extrapolation from vague prompts. “Make me a RESTful service that provides music data.” ChatGPT will give you something that does that. And then you’ll proceed to come to hacker news and talk about all the dumb things it did.
But, if you have a conversation with it. Tell it more of the things you’re considering. Some of the trades off you’re making—how the schema might grow over time, it’s kind of remarkable.
You need to treat it like a real whiteboarding session.
I also find it incredibly useful for getting my code into more mainstream shape. I have my own quirks that I’ve developed over time learning a million different things in a dozen different programming languages. It’s nice to be able to hand your code to ChatGPT and simply ask “is this idiomatic for this language?”
I think the people most disappointed with ChatGPT are trying to treat it like a Unix CLI instead of another developer to whiteboard with.
Every person I've noticed who says that ChatGPT isn't good at what it does has the same thing in common - they're not great at talking to people, either.
Turns out when you train an AI on the corpus of human knowledge, you have to actually talk to it like a human. Which entirely too many people visiting this website don't do effectively.
ChatGPT has allowed me to develop comprehensive training programs for our internal personnel, because I already have some knowledge of training and standardization from my time in the military, but I also have in-depth domain knowledge so I can double-check what it's recommending, then course correct it if necessary.
You're not wrong, but I would caution that it can get really confused when the code it produces exceeds the context length. This is less of a problem than it used to be as the maximum context length is increasing quite quickly, but by way of example: I'm occasionally using it for side projects to see how to best use it, one of which is a game engine, and it (with a shorter context length than we have now) started by creating a perfectly adequate Vector2D class with `subtract(…)` and `multiply(…)` functions, but when it came to using that class it was calling `sub(…)` and `mul(…)` — not absolutely stupid, and a totally understandable failure mode given how it works, but still objectively incorrect.
It can't tell you a straight answer or halucinates API. It can't tell you "no, this cannot be done", it tries to "help" you.
For me it's great for writing simple isolated functions, generating regexes, command line solutions, exploring new technologies, it's great.
But after making it write a few methods, classes, it just gets extremelely tedious to make it add/change code, to the point I just write it myself.
Further, when operating at the edge of your knowledge, it also leads you on, whereas a human expert would just tell you "aaah, but that's just not possible/not a good idea".
With the caveat of, I still need to understand what it's talking about. Copy-pasting whatever it says may or may not work.
Which is why I remain dubious that we're on the road to LLMs replacing software engineers. Assisting? Sure, absolutely.
Will we get there? I don't know. I mean, like, fundamentally, I do not trust LLMs. I am not going to say "hey ChatGPT, write me a flight management system suitable for a Citation X" and then just go install that on the plane and fly off into the sunset. I'm sure things will improve, and maybe improve enough to replace human programmers in some contexts, but I don't think we're going to see LLMs replacing all software engineers across the board.
And.. it can dredge up really weird possible reasons for system behaviors fairly reliably. Usually, for a question of "Why doesn't this work after all of that?", it drags up like 5-10 reasons for something misbehaving. We usually checked like 8 of those. But the last few can be really useful to start thinking outside of the normal box why things are borked.
And often enough, it can find at least the right idea to identify root causes of these weird behaviors. The actual "do this" tends to be some degree of bollocks, but enough of an idea to follow-up.
This is great. The exact same is true with writing, which I think it's trivial for anyone to see. Especially non-native speakers or otherwise bad writers can now write long-winded nonsense, which we're starting to see all over. It hasn't made anyone a good writer, it's just helped bad ones go faster.
You have now described 95% of Quora's content.
What is going to happen if more and more people are creating lots of software that delivers value but is difficult to maintain and extend?
First it's going to be more high-level stuff, then more plumbing, more debugging and stitching together half-baked solutions than ever before.
AI might make our jobs suck more, but it's not going to replace them.
In previous replies in this thread the claim is it helps novices compete with associates or associates with seniors but in reality, it will probably help any tier of skill level. You just have to figure out how to prompt it
Asking the right questions is such an important skill in and of itself. I think we’re seeing to some extent the old joke about engineers not knowing how to talk to people manifest itself a bit with a lot of engineers right now not knowing quite how to get good results from ChatGPT. Sort of looking around the room wondering what they’re missing since it seems quite dumb to them.
I most often use it for summarizing/searching through dense documentation, creating quick prototypes, “given X,Y,Z symptoms and this confusing error message, can you give me a list of possible causes?” (basically searches Stack Overflow far better than I can).
Anyway basically the same as I was using google when google was actually good. sometimes I will forget some obscure syntax and ask it how to do something, but not super often. I’m convinced using it solely to generate code is a mistake unless it’s tedious boilerplate stuff.
So overall it's more an amplifier than anything else.
To be fair I've been doing the same thing with simple mathematics into a calculator in my browser that at this point I'm pretty sure I'd fail at long division by hand.
Maybe it won't matter in a few years and their chatgpt skills will be well honed, but if it were me in their position I wouldn't gamble on it.
Overall it would be an amplifier if that were how the majority used it. Sadly I don't believe that to be the case.
But people are using the singular response as "the answer" and moving on..
After that, you can shape the output - without GPT's help - into something that you can pull off the shelf again as needed and drop it into where you want it to go, because at that point in the process, you know it works.
It happenes a few times for me that Chat GPT gets stuck in a bullshit loop and I can't get it unstuck.
Sure I could summarise the previous session for Chat GPT and try again, but I'm too tired at that point.
Exactly.
chatGPT is the single smartest person you can ask about anything, and has unlimited patience.
Really? Please explain how chatGPT can not, but you can? What magic is it that you know that it's incapable of explaining?
this is because a lot of the time what a beginner needs IS a hack. But if you always hack at your job, things stop working.
I want to reiterate. One of the reasons the LLM is so helpful is because it has been RLHF'ed into always treating you as a beginner. This is core to it's usefulness. But it also limits it from producing quality work unless you bombard it with an enormous prompt explaining all of the difference between a beginne's and an expert's code. Which is tedious and lengthy to do every time when you just want a short change that doesnt suck.
Humans are able to learn from all sorts of external cues what level they should pitch an idea at. Startups should focus on hacky code, for velocity. Large buisnesses should focus on robust processes.
The most frustrating situations are those where it invents a function that would miraculously do what's necessary, I tell it that function does not exist, it apologizes, shuffles the code around a bit and invents a different function, etc. It's the most annoying kind of debugging there is.
I agree with this, but what that means is that specialists will be able to create next generation tools--across all professions including coding--that do supercharge novices and generalists to do more.
This is my take also.
ChatGPT for novices is dangerous, its the equivalent of a calculator. If you don't know your expected output you're just wrong faster.
But if you know what to expect, whats your bounds and how to do it normally anyway, it can make you faster.
A case in point: I asked ChatGPT to give me some code for password complexity validation. It gave me perfectly working code that took a password and validated it against X metrics. Obviously the metrics are garbage, but the code works, and what inexperienced developer would be any the wiser. The only way to get ChatGPT to generate something "correct" there would be to tell it algorithmically what you want (e.g. "give me a function measuring information entropy of inputs", etc.) - you could ask it 50 times for a password validator: every one may execute successfully & produce a desired UI output for a web designer, but be effectively nonsense.
Particularly annoying because I wind up risking not actually saving time because it’s producing subtle bugs that I wouldn’t have written myself.
So, you save yourself the time of thought and research at the risk of going down new and mysterious rabbit holes
Pessimistically, this is the medium term role I see for a lot of devs. Less actual development, more assembly of pieces and being good enough at cleaning up generated code.
If an LLM can get you even 25% there most of the time, that's a massive disruption of this industry.
The LLM has seen the whole internet, more than a person could understand in many lifetimes. There is a lot of wisdom in there that LLMs evidently can distill out.
Now about high level engineering decisions: the parent comment said that high level experience is not spelled out in detail in the training data, e.g., on stack overflow. But that is not required. All that high level wisdom can probably also be inferred from the internet.
There are 2 questions really: is the implication somewhere in the data, and do you have a method to get it out.
It's not a bad bet that with these early LLMs we haven't seen the limits of what can be inferred.
Regarding enough wisdom in the data, if there's not enough, say, coding wisdom on the internet now, then we can add more data. E.g., have the LLMs act as a coding copilot for half the engineers in the world for a few years. There will be some high level lessons implied in that data for sure. After you have collected that data once, it doesn't die or get old and lose its touch like a person, the wisdom is permanently in there. You can extract it again with your latest methods.
In the end I guess we have to wait and see, but I am long NVDA!
Nobody sane would argue that. It is very visible that ChatGPT could do things.
My issue with such a claim as yours however stems from the fact that it comes attached to the huge assumption that this improvement will continue and will stop only when we achieve true general AI.
I and many others disagree with this very optimistic take. That's the crux of what I'm saying really.
> There is a lot of wisdom in there that LLMs evidently can distill out.
...And then we get nuggets like this. No LLM "understands" or is "wise", this is just modern mysticism, come on now. If you are a techie you really should know better. Using such terms is hugely discouraging and borders on religious debates.
> Now about high level engineering decisions: the parent comment said that high level experience is not spelled out in detail in the training data, e.g., on stack overflow. But that is not required.
How is it not required? ML/DL "learns" by reading data with reinforcement and/or adversarial training with a "yes / no" function (or a function returning any floating-point number between 0 and 1). How is it going to get things right?
> All that high level wisdom can probably also be inferred from the internet.
An assumption. Show me several examples and I'll believe it. And I really do mean big projects, no less than 2000 files with code.
Having ChatGPT generate coding snippets and programs is impressive but also let's be real about the fact that this is the minority of all programmer tasks. When I get to make a small focused purpose-made program I jump with joy. Wanna guess how often that happens? Twice a year... on a good year.
> It's not a bad bet that with these early LLMs we haven't seen the limits of what can be inferred.
Here we agree -- that's not even a bet, it's a fact. The surface has only been scratched. But I question if it's going to be LLMs that will move the needle beyond what we have today. I personally would bet not. They have to have something extra added to them for this to occur. At this point they will not be LLMs anymore.
> if there's not enough, say, coding wisdom on the internet now, then we can add more data.
Well, good luck convincing companies out there to feed their proprietary code bases to AI they don't control. Let us know how it goes when you start talking to them.
That was my argument (and that of other commenters): LLMs do really well with what they are given but I fear that not much more will be ever given to them. Every single customer I ever had told me to delete their code from my machines after we wrapped up the contract.
---
And you are basically more or less describing general AI, by the way. Not LLMs.
Look, I know we'll get to the point you are talking about. Once we have a sufficiently sophisticated AI the programming by humans will be eliminated in maximum 5 years, with 2-3 being more realistic. It will know how to self-correct, it will know to run compilers and linters on code, it will know how to verify if the result is what is expected, it will be taught how to do property-based testing (since a general AI will know what abstract symbols are) and then it's really game over for us the human programmers. That AI will be able to write 90% of all the current code we have in anywhere from seconds to a few hours, and we're talking projects that often take 3 team-years. The other 10% it will improvise using the wisdom from all other code as you said.
But... it's too early. Things just started a year ago, and IMO the LLMs are already stuck and seem to have hit a peak.
I am open to have my mind changed. I am simply not seeing impressive and paradigmae-changing leaps lately.
Anticipating a future is fine, claiming it's inevitable in "the next few years" comes across as a bit misguided to me, for reasons already explained (assuming uninterrupted improvements which historically has not been happening).
IMO, it's not fair to beat people over the head with "you're holding it wrong" arguments. Until and unless we get a prompt-rewriting engine that reprocesses the user query into something more powerful automatically (or LLMs' baseline personality capabilities get better), "holding it wrong" is an argument that may be best rephrased in a way that aims to fill the other person's gaps in knowledge, or not said at all.
You’re being unreasonably harsh on a piece of tech that is barely a year old.
The iPhone was pretty successful, and the iPhone 4 was arguably the best one that had been released until that point.
My point is that people have a tendency to come up with really sketchy insults (blame the user that he uses the product in a wrong way) to people who find and can expound legitimate points of criticism of a product.
Counter-example: lots of people said an on-screen keyboard would never really work when the original iPhone was being released.
You can imagine 2 billion people as an abstraction. But you can't imagine all of their faces and names individually.
We use automated systems to build the LLM by simply by describing the abstraction to a machine. The machine takes that description and builds the LLM for us automatically.
This abstraction (the "algorithm") is what's on a trendline for improvement based on the past decade.
Understanding of the system below the abstraction, however, has been at a almost standstill for a much longer timespan then a decade. The trendline for low level understanding points to little future improvement.
Making babies and raising children is another abstract process---with very complex systems under the covers, yet accessible to naive producers. In some sense, our eons of history is of learning how to manage the outcome of this natural "technology" put to practice. A lot of effort in civilization goes into risk management, defining responsibilities and limited liabilities for the producers, as well as rules for how these units must behave in a population.
I don't have optimism for this idea of AI as a product with unknowable complexity. I don't think the public as bystanders will (nor should) grant producers the same kind of limited liability for unleashing errant machines as we might to parents of errant offspring. And I don't think the public as consumers should accept products with behaviors that are undefined due to being "too complex to understand". If the risk was understood, such products should be market failures.
My fear is the outcome of greedy producers trying to hide or overlook the risks and scam the public with an appearance of quality that breaks down after the sale. Hence my reference to snake-oil cons of old. The worst danger is in these ignorant consumers deploying AI products into real world scenarios without understanding the risks nor having the capacity to do proper risk mitigation.
I think that the people who nowadays shit on ChatGPT's code generating abilities are the same blend of people who, a couple decades ago, wasted their time complaining that hand-rolled assembly would beat any compiled code in any way, shape, or form, provided that people knew what they were doing.
To me, a lot of this boils down to the old truism that “code is easier to write than maintain or extend”. Companies who dole out shiny star stickers for producing masses of untested, unmaintainable code will always reap their rewards, whether they’re relying on middling engineers and contractors alone, or with novices supercharged with ChatGPT.
Let's skip to the main topic rather then address some small irrelevant detail about thermonuclear war: I'm right about AI, and you are wrong. And you fucking know it.
Oh when did that become an issue for you? I thought it was all just common sense.
Common sense. Common sense. Common sense. Common sense, Common sense. Common sense. Common sense. Common sense.
That better?
But none of it changes the pace of development. It is moving at breakneck pace and the trendline points to the worst outcome.
It's similar to global warming. The worst possible outcome is likely inevitable.
The problem is people can't separate truth from the desire to be optimistic. Can you be optimistic without denying the truth? Probably an impossible endeavor. To be optimistic, one must first lie to himself.
A designer would probably still beat it - this doesn't compete with someone well paid to work on heavily custom designs. But at this point it does compete with places like Fiverr for me for things I can't or don't want to do myself. It'll take several iterations for it to eat it's way up the value chain, but it probably will.
But also, I suspect a lot of the lower end of the value chain, or at least part of them, will pull themselves up and start to compete with the lower end of the middle by figuring out how to use LLMs to take on bigger, more complex projects.
(`find / -type d -name 'bar' -exec find {} -type f -name '*.foo' \; | xargs grep 'baz'` apparently.)
I would have done that differently, but it's close enough for government work.
So it's not any worse than good-old "go to stack overflow" approach, but still benefits from experience.
FYI, this is the correct, as-far-as-I-can-tell "good" solution:
find . -type d -name 'bar' -print0 | \ xargs -0 -I{} find {} -type f -name '*.foo' -print0 | \ xargs -0 grep -r baz
This won't choke on a structure like this: ls -R .: bar foo
./bar: test.foo 'test test.foo'
./foo: bar bleb.foo
./foo/bar:
find . -path '/bar/.foo' -print0 | xargs -0 grep baz
;-) no regex, no nested suff, much shorter. My brain went back to it ;-)
Of course, LLMs can generate go or rust or whatever so I suspect such languages will become a lot more useful for things that would call for a scripting language today.
$ find . -type f -regex '.*bar/[^/]*.foo' -exec grep baz {} +
I wonder if you created a GPT and fed it the entirety of Linux man pages (not that it probably didn't consume them already, but perhaps this weights them higher), if it would get better at this kind of thing. I've found GPT-4 is shockingly good at sed, and to some extent awk; I suspect it's because there are good examples of them on SO.Find all processes named '*-fpm' and kill the ones that have been active for more than 60 seconds - then schedule this as a Cron job to run every 60 seconds. It not only made me a working script rather than a single command but it explained its work. I was truly impressed.
Yes it can generate some code wireframes that may be useful in a given project or feature. But I can do that too, usually in about the time it'd take me to adequately form my request into a prompt. Life could get dangerous in a hurry if product management got salty enough in the requirements phase that the specs for a feature could just be dropped into some code assistant and generate product. I don't see that happening ever though - not even with tooling - product people just don't seem to think that way in the first place in my experience.
As developers we spend a lot of our time modifying existing product - and if the LLM knows about that product - all the better job it could do I suppose. Not saying that LLMs aren't useful now and won't become more useful in time - because they certainly will.
What I am saying is that we all like to think of producing code as some mystical gift that only we as experienced (BRILLIANT, HANDSOME AND TALENTED TOO!!) developers are capable of. The reality is that once we reach a certain level of career maturity, if we were ever any good in the first place, writing code becomes the easiest part of the job. So theres a new tool that automates the easiest part of the job? Ok - autocomplete code editors we're cool too like that. The IDE was a game changer too. Automated unit tests were once black magic too (remember when the QA department was scared of this?).
When some AI can look at a stack trace from a set of log files, being fully aware of the entire system architecture, locate the bug that compiled and passed testing all the way to production, recommend, implement, test and pre-deploy a fix while a human reviews the changes then we're truly onto something. Until then I'm not worried that it can write some really nice SQL against my schema with all kinds of crazy joins - because I can do that too - sometimes faster - sometimes not.
So far ChatGPT isn't smarter than me but it is a very dutiful intern that does excellent work if you're patient and willing to adequately describe the problem, then make a few tweaks at the end. "Tweaks" up to seeing how the AI approached it, throwing it out and doing it your own way too.
We're in a different era now.
If you write it in three lines, it is fine. Although, I guess the second find and the grep could be shortened, combined into one command.
(Serious answer: it's just an expression. https://grammarist.com/idiom/good-enough-for-government-work...).
It's good to know the fundamentals and be able to find them IF you find a situation where you need them (e.g. performance tuning), but in my anecdotal and limited experience, you're fine staying higher level.
Everyone should know enough fundamentals to be able to write simple implementations of the frameworks they depend on.
Its kind of like asking an olympic sprinter how to walk fast.
Do you realize for how many technologies you can say the same thing? I don't want to read a 600 page tome on CSS. The language is a drop in the bucket of useful things to know. How valuable is a "complete understanding" of CSS? I just want something on my site to look a specific way.
The latest edition is closer to 1,100 pages.
It’s worth it.
It’s usually worth it for any long-standing technology you’re going to spending a significant amount of time using. Over the years you’ll save time because you’ll be able to get to the right answer in less time, debug faster, and won’t always be pulling out your hair Googling.
I used to be puzzled as to why my peers are so dismissive of this tech. Same folks who would say "We don't need to learn no Kubernetes! We don't need to code! We don't need ChatGPT". They don't!
And it's fine. If their idea of a career is working in same small co. doing the same basic Linux sysadmin tasks for a third of the salary I make then more power to them.
The folks dismissive of the AI/ML tech are effectively capping their salary and future prospects in this industry. This is good for us! More demand for experts and less supply.
You ever hire someone that uses punch cards to code?
Neither have I.
I suspect you mean the latter, but just wanted to confirm.
I guess we should start by what version of ChatGPT you are using.
For decades there were still people who coded directly in assembly, and with good reason. And eventually the compiler bugs would be encountered less frequently (and the programmer would get a better understanding of undefined behavior in that language).
Similar to how dropping into inline assembly for speeding up execution time can still have its place sometimes, I think using GPT for small blocks of code to speed up developer time may make some sense (or tabbing through CoPilot), but just as with the early days of higher level programming languages, expect to come across cases where it doesn't speed up DX or introduces a bug.
These bugs can be quite costly, I've seen GPT spit out encryption code and completely leave out critical parts like missing arguments to a library or generating the same nonce or salt value every execution. With code like this, if you're not well versed in the domain it is very easy to overlook, and unit tests would likely still pass.
I think the same lesson told to young programmers should be used here -- don't copy/paste any code that you do not sufficiently understand. Also maybe avoid using this tool for critical pieces like security and reliability.
While part of me enjoyed the early gpt much more than the polished version today, as a tool it’s much more useful to the average person should they make it back to gpt somehow.
I almost ruined my relationship with a coworker because they submitted some code that took a dependency on something it shouldn't have, and I told them to remove the dependency. What I meant was "do the same thing you did, but instead of using this method, just do what this method does inside your own code." But they misinterpreted it to mean "Don't do what this method does, build a completely different solution." Repeated attempts to clarify what I meant only dug the hole deeper because to them I was just complaining that their solution was different from how I would've done it.
Eventually I just showed them in code what I was asking for (it was a very small change!) and they got mad at me for making such a big deal over 3 lines of code. Of course the whole point was that it was a small change that would avoid a big problem down the road...
So I'll take ChatGPT using library methods that don't exist, no matter how much you tell them to fix it, over that kind of stress any day.
And he slacks coworkers like he is talking to ChatGPT too, slinging code blobs without context, example input data, or the actual error he received..
If Chat GPT can solve a problem consistently well, I don't think it's worth the effort to master it.
My examples are regexes, command lines to manipulate files, kafka/zookeeper commands to explore a test environment.
For me it's a big win in that regard.
I don't think the history of the usage of either shows that most people make any use of that context.
(And I should have said ChatGPT4 earlier, if you're a bad to medicore developer taking ChatGPT3.5 literally you'll probably wind up in a Very Bad Place.)
A lot of that high level work is probably easier to outsource to an AI than a lot of the mundane programming. If not now, soon. How long before you can walk up to a computer and say “hey computer - make me a program that does X” and it programs it up for you? I think that’ll be here before I retire.
As far as I can tell, this will only increase the demand for people who actually understand what is going on behind the scenes and who are able to deploy all of these new capabilities in a way that makes sense.
Also, how long before AIs can do that too - before AIs also understand what is going on behind the scenes, and can deploy all these new capabilities in a way that makes sense? You’re talking about all the other ways you can provide value using your brain. My worry is that for anything you suggest, artificial brains will be able to do whatever it is you might suggest. And do it cheaper, better or both.
GPT4 is already superhuman in the breadth of its knowledge. No human can know as much as it does. And it can respond at superhuman speeds. I’m worried that none of us are smart enough that we can stay ahead of the wave forever.
At least in Germany among tech nerds, the iPhone 4 and Steve Jobs become topics of insane ridicule because of this incident.
I'm not saying you won't have to work. I'm saying you can skip most of the tedious parts of making something work.
If trying out an idea will only take a fraction of the time and cost it used to, it will become a lot easier to just go for it. That goes for programmers as well as paying clients.
I'll take that bet
What do i care how many lines of code are necessary to solve a problem, if all of them are gonna be written automatically. 1 line of Bash/awk versus 10 lines of Python versus 100 lines of Rust? Are they any different to one another?
As a developer you don't need to know how they work, you just need to be able to wield their power. Should be easy enough if you can read and understand the code it produces (with or without it's help).
Horses don't play a part in this; programmers are generally not simple beasts that can only do one thing. I'm sure plenty of horse drivers became car drivers and those that remained found something else to do in what remained of the horse business.
Assuming we do get AI that can do more than just fool those who did not study them, do you really think programmers will be the first to go? By the time our jobs are on the line, so many other jobs will have been replaced that UBI is probably the only logical way to go forward.
Any worthy examples of open source neural networks, ideally not from companies based in rogue states like the US ?
The United Arab Emirates ? Well, lol, of course I do, that's way worse than the US.
The AI coding assistant is now part of the abstraction layers over machine code. Higher level languages, scripting languages, all the happy paths we stick to (in bash, for example), memory management with GCs and borrow checkers, static analysis … now just add GPT. Like mastering memory management and assembly instructions … now you also don’t have to master the fiddly bits of core utils and bash and various other things.
Like memory management, whole swathes of programming are being taken care of by another program now, a Garbage Collector, if you will, for all the crufty stuff that made computing hard and got in between intent and assessment.
LLMs (and "AI" in general) are just bashing data together until you get something that looks correct (as long as you squint hard enough). Even putting them in the same category is incredibly insulting.
Yes there’s a significant statistical aspect involved in the workings of an AI, which distinguishes it from something more deterministic like syntactic sugar or a garbage collector. But I think one could argue that that’s the trade off for a more general tool like AI in the same way that giving a task to a junior dev is going to involve some noisiness in need of supervision. But in grand scheme of software development, is devs are in the end tools too, apart of the grand stack, and I think it’s reasonable to consider AI as just another tool in the stack. This is especially so if devs are already using it as a tool.
Dwelling on the principled v statistical distinction, while salient, may very well be a fallacy or irrelevant to the extent that we want to talk about the stack of tools and techniques software development employs. How much does the average developer understand or employ said understanding of a principled component of their stack? How predictable is that component, at least in the hands of the average developer making average but real software? When the end of the pipeline is a human and it’s human organisation of other humans, whether a tool’s principled or statistical may not matter much so long as it’s useful or productive.
Still works best if you know what you are doing and can give very detailed instructions, but GPT-4 is vastly more capable than Bing for these tasks.
So what makes it different this time ?