A coder considers the waning days of the craft
newyorker.com
newyorker.com
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.
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.
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.
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.
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.
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.
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… 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.
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.
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).
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
I’m one of those noob programmers and it has helped me create products far beyond my technical capabilities
ChatGPT is great at some well defined, already solved problems. But once you get to the messy real world, the wheels come off.
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.
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 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.
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.
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 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.
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.
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.
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).
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.
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.
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.
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.)
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.
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.
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.
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
The code I write feels like a side-effect of what I actually do.
LLMs are best at doing the stuff senior engineers do that's NOT coding.
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.
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.
Personally, I use it for scripting and as an executive function aid.
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.
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.
I think the fear of software developers is that they will join the low pay crowd.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
> 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.
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.
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.
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?
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.
(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
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.
Wow, this guys working on rocket science, everyone. Watch out! We might get replaced!