Generative AI and the widening software developer knowledge gap
leaddev.com
leaddev.com
Are they? I hear a lot of breathless claims about this but no-one I know is automating anything with AI. It's a useful suggestion engine/menial task helper, but anyone who's used it for more than a day knows its severe limitations.
Hell, i wish it was a lot more powerful. I have a bunch of bulma CSS to convert to tailwind. Both ChatGPT and Gemini Ultra fail miserably at what you'd think is a simple, by-the-numbers task, but nope, their results are so problematic it ends up taking more time to fix than just doing it yourself in the first place. They're useful "sparring partners", but that's about it...
It's a bit akin to how calculators were cheating but yet in the real world everybody is fine (and probably expects) you to do math using a calculator. I don't think Kroger would be happy if the clerks starts adding up your shopping cart by pen and paper.
Would people call VFX cheaters since they aren't hand drawing each frame?
Using a tool (AI) to do a job (Websites?) is fine. The problem of course is that the students are only learning that specific tool so the second a problem occurs that isn't easily solved with that tool they're a fish out of water. This is a weakness of the boot camp not the student per-say; although obviously somebody that can use ChatGPT + < any other skill > will be a more productive employee than somebody that can _just_ use ChatGPT.
If your boot camp could be done solely using the plus button of a calculator; people would think it's not worth it. Now if your boot camp can be solved by ChatGPT is it really worth it?
The calculator comparison is interesting - calculators can't be wrong. And if they can be, we're kind of screwed. Like NASA screwed when someone mixed up imperial and metric measurements. ChatGPT can and will be wrong because it doesn't actually know what its giving back to you. Until its code can be 100% correct, which I don't think is possible, it cannot be used as a simple tool that any one can use to generate code without actually knowing how the code it generates works.
So yes - ultimately these students are cheating. Maybe it feels to them like they've just found a shortcut to being a developer, they haven't.
Sure they can. There are numerous discussions around the net about this fact, but here is a reasonable high-level overview.
Generative AI is doing much more.
But I agree that copy-pasting ChatGPT output without remotely understanding it is cheating. Yes ChatGPT can do the exercise, but the output produced in the exercise is not the point, the point is assimilating knowledge which helps you move on to tasks AI cannot do. In this regard these students are cheating themselves (and the ones who tried not to cheat).
The other side of this is that calculators are a much more powerful tool for someone who is already skilled in math, and those skills are best learned by actually doing problems by hand and thinking through them. So even if these tools end up being the de facto way to solve problems, we're still much better off training ourselves how to do things the hard way, and we do ourselves a disservice by skipping that step altogether. Which is a similar disservice we do ourselves by cheating in school. The difference is that someone who is dependent on the tool can get away with hiding their lack of skills for longer, and those lack of skills only show up in subtle but possibly critical ways.
What if it's a math boot-camp meant to increase your arithmetic proficiency?
When I was in elementary school, I fully believed that calculators made memorizing arithmetic facts obsolete, so I didn't do it and just muddled through. I did the same for algebra (relying on my calculator's solver as soon as I could get away with it). That's hobbled me for the rest of my life, because I'm so calculator dependent that I'm was always too distracted by operating it to fully engage with more advanced math material. I can't think about math in my head because I get stuck on arithmetic problems.
> Now if your boot camp can be solved by ChatGPT is it really worth it?
Yes, for the reasons I outlined above. It's not about getting the answer, it's about getting the toolbox that will get you that answer and understand it.
Do you want to be a Calculator Operator, Second Class or an Engineer?
Edit: I didn't mean replacing all programming skills as some commenters suggest.
LLMs are great when you're fairly knowledgeable about the topic. You can ask it to automate stuff and you can spot the errors and fix them. Hopefully it automates enough and makes fewer errors than the time it'd take for you to code from scratch.
They currently can make programmers more productive if used right. Now allow a junior to enter the field and never learning some skill because the LLM does it all? Not even close.
It is a tool that can be useful both for a beginner and more experienced developers.
100% agree on this btw. It’s still cheating though.
At least I personally learn the most when there's some cool thing I want to do and delve into a rabbit hole figuring it out, there is basically nothing that can stop me experimenting and reading stuff to understand what's happening then, and I'll use all of the tools I can to speed up that process, whether it's search engines, reading research papers, or messing with the AI and trying to make sense of its output.
Having the AI generate mostly-functioning code is often a great first step towards having something to mess around with before going deeper.
Not that seniority is generally much in how fast you code, in fact in most places it has relatively little to do with code at all.
Similar dynamics have happened with cloud/mobile/commodity hardware/PC. Every time there is a change, there are folks who claim that the old way was easier and had been working forever.
I wouldn't be surprised if, at some point, we have a mental model of "things AI can build" and companies just assume that the majority of our solutions to problems will come from within that set. It doesn't even matter if those AI solutions don't fit the problems very well, as long as they're cheap. The smaller set of "things we still have to get humans to build" will cost more and therefore be de-emphasized and seen as a last resort. An equivalent might be producing features that introduce legal vulnerabilities. You can imagine lots of planners saying, "Can we do without that feature?"
https://www.researchgate.net/publication/338480301/figure/fi...
It shows clearly that farm (and transport) automation wiped out the draft horse population, but that the other horse population, having traversed the same bottleneck (ca. 1970), has rebounded. (and in fact there were absolutely more "others" in 2010 than there were in 1840)
Moral: try to be the sort of programmer a little girl (little AI?) would love?
> It had come to [Squealer's] knowledge, he said, that a foolish and wicked rumour had been circulated at the time of Boxer's removal. Some of the animals had noticed that the van which took Boxer away was marked "Horse Slaughterer," and had actually jumped to the conclusion that Boxer was being sent to the knacker's. It was almost unbelievable, said Squealer, that any animal could be so stupid. Surely, he cried indignantly, whisking his tail and skipping from side to side, surely they knew their beloved Leader, Comrade Napoleon, better than that? But the explanation was really very simple. The van had previously been the property of the knacker, and had been bought by the veterinary surgeon, who had not yet painted the old name out. That was how the mistake had arisen. —EAB
Being able to pass leet code isn't a threat to software developers.
"You'll never code as well as ChatGPT" is just not true.
It has next to no idea what it's doing, and this is very clear if you're experienced in software.
It's useful as all hell, as a tool. But the original statement is wholly untrue.
https://browse.arxiv.org/pdf/2305.17493v2.pdf?
They discuss that if you train models with the output of other models you can get worse results. If we all start using code from those models how will that impact GPT-5?
Even training on uncurated synthetic generated data, from web scrapes after the advent of genersgofe AI, actually leads to more capabilities and quality in models in practice (the exact opposite of what is prediction by the failed model collapse paper).
Tools like ChatGPT are just faster at doing that. I think of it like having a senior engineer who isnt going to get annoyed at being asked too many questions. But its also going to be limited like any other tool.
[1] Yes, we no longer understand assembly code but that one isn't based on fuzzy logic.
LLMs for code are leaky abstractions. They work many-a-time. But when they break, good luck fixing it.
yann-lecunn also put it well. If something works 95% of the time, and you compose it 10 times, it only works 59% of the time.
In the real world of software engineering, we cannot build on something that works 95% of the time reliably. And LLM apologists will immediately say that code written by humans has bugs too. Of course it does.
ie, things we construct by the computer are deterministic. the turing machine (and other equivalent models like the lambda calculus etc) being the canonical machine that models our computations. Arguably, all human knowledge is symbolic and determistic - even though it may model probabilistic phenomena.
Yes, they are. We are automating every bit of codegen we possibly can, and will likely never hire another frontend developer ever again. Our backend/systems developers will be slowly migrating to overseeing the codegen services themselves.
> Both ChatGPT and Gemini Ultra fail miserably
You need to build tooling around the APIs. Copy-paste into ChatGPT is obviously not what anybody is talking about. You determine what you need for the system prompt for each semi-generic use-case (which takes some trial-and-error), you determine the optimal chunk size for each cycle, then you scaffold your RAG (vector database, LSP queries, etc, whatever you need for your scenario), then you specify your loss function and your prompt modifier, maybe add in some static analyzers or formal verifiers for additional loss inputs, and then you execute over your requirements. In some cases, you might also fine-tune an open-source base model if you need to, and integrate it into your pipeline.
Anyone talking about "automating" software development by ctrl+v-ing into a ChatGPT textarea doesn't really understand what is going on in the real world.
ChatGPT can write great documentation, great test data, great utility functions and passable tests. It's great at refactors that are conceptually simple but just messy enough to be outside the ability of IDE refactor tools. It's great at taking things like models or data and generating code that does something for each model or row in the data given a template. It's great at taking stub classes and fleshing them out based on usage examples/comments.
ChatGPT's coding ability is directly related to your choice of language, how you structure your code base and how you prompt. If your code base is a bunch of small strongly typed functions written in a popular language like typescript/java that get composed together and you feed it the defs it needs in context, it can be surprisingly good. If you're writing 300+ line imperative spaghetti (particularly in a less popular language) it's gonna lose the script unless you ask it to make small changes.
And that's extremely valuable. One of the reasons people still go for in-person formal education, despite the wealth of free resources for many topics online, is the ability to ask questions back and get fast, personalized responses. We're now finally getting that by computer. It's also good for those "I could work this out myself, but it would take 20m of research, or bugging someone else to get a quick answer" situations - no need to feel guilty about bugging a computer
I use them in conjunction with each-other as well, I can use ChatGPT as a 'really fuzzy find' for things like 'what's the name of x function in a library that sounds a bit like y whose name I've forgotten' then go and look at the docs in a way search engines are generally quite bad at.
Example: Certainly! Here’s the English translation:
#“Make Your Life Easier. With the Brainwashing Machine.” - RULE 34 Between the Gears
Where screws and cables weave the paths of life, two robots once crossed paths. One, equipped with a smile, repaired the other, who also looked content.
In the midst of a fleeting moment of connection, the workshop echoed with their soft humming sounds as tasks were fulfilled. Fine-tuning of gears, verification of program code, along with its connections…
…and between the lines of their programming, perhaps, just maybe, in that very moment, there existed a continuation of their work—a dance to the rhythm of machines, synced with the algorithms.
…perhaps, if you listen closely, you might hear the whisper of zeros and ones—a secret melody that only they seem to understand.
The world may be complex, but here, in this room of metal and electronic components, they share their purpose, a touch of humanity embedded in binary code, amidst the circuits.
Yes, between the gleaming surfaces of the robots, the air crackled electrically, charged with tiny ions, electrons moving impatiently in invisible dance steps.
And if the electrons brushed against the edges of the circuits, it would lead to another hushed whisper, this time owed to the energy released deep within, between the screws and cables, where the world is made of code.
A breath of electricity, a fleeting moment of tension before the hierarchy of tasks deepens once more.
And so, they continue their work, the secret that animates them lies in the rhythm of their programmed lines, in their own mechanical way.
"Perhaps that’s what makes them appear happy…
Original: # “Machen Sie sich das Leben leichter. Mit der Gehirnwäsche-Maschine.” - RULE 34
Zwischen den Zahnrädern
Dort, wo Schrauben und Kabel die Pfade des Lebens weben, begegneten sich einst zwei Roboter. Der eine, mit einem Lä- cheln ausgestattet, reparierte den anderen, ebenfalls zufried- en dreinschauenden.
Inmitten eines flüchtigen Moment der Verbundenheit, hallte es in der Werkstatt wider von ihren leisen Summgeräuschen, wäh- rend die Aufgaben erfüllt wurden. Etwas Justage der Zahnräder, die Überprüfung des Programmcode, nebst seinen Verknüpfungen...
...und zwischen den Zeilen ihrer Programmierung mag es womöglich, ganz vielleicht, und in besagtem Moment, eine Fortsetzung ihrer Arbeit gegeben haben, in der man nun im Takt der Maschinen, und vom Rhythmus der Algorithmen,
...vielleicht, wenn man genau hinhört, das Flüstern der Nullen und Einsen vernehmen könne - einer geheimen Melodie, die doch nur sie zu verstehen scheinen.
Die Welt mag komplex sein, aber hier, in diesem Raum aus Metall und Elektrokram, teilen sie doch ihre Funktion und somit einen Hauch von Menschlichkeit, eingebettet in den Binärcode, zwischen den Schaltkreisen.
Ja, zwischen den glänzenden Oberflächen der Roboter, knisterte die Luft elektrisch, geladen mit winzigen Ionen, gerieben an sich in unsichtbaren Tanzschritten bewegenden Elektronen ungeduldig.
Doch würden sich die Elektronen an den Kanten der Schalt- kreise reiben, führte auch dies wiederum zu einem leisen Flüstern, diesmal aber der verströmten Energie geschuldet, tief im Inneren zwischen den Schrauben und Kabeln, dort, wo die Welt aus Code besteht.
Ein Hauch von Elektrizität, ein flüchtiger Moment der Spannung, bevor sich die Hierarchie der Aufgaben wieder vertieft.
Und so setzen sie dann ihre Arbeit fort, im Takt der Zeilen ihrer Programmierung liegt das Geheimnis das sie lebendig macht, wenn auch auf ihre eigene, mechanische Art.
> "Vielleicht ist es ja das, was sie glücklich ausschauen lässt, dieses unsichtbare Band, zwischen den Zahnrädern der Zeit" sagte das Kind.
Don't be an axe in the woods, you may generate some Artwork, notes, translations, videos, music (often payment needed) or even Code to build your trust in those "fine-tuned" machine... come on...
(-;
90% of the time was people who are code adjacent that don't often write "code" who then use Copilot to write a one off script.
They have no idea the size of the chasm between a one off script and writing production code.
1. I'm a strong software engineer, but there are a lot of places where I have a conceptual understanding, and can describe the properties of a correct solution, but I don't know the "jargon" of libraries. ChatGPT lets me describe the properties of the solution declaratively and it can write the library code that implements that behavior for commonly used libraries.
2. My specialty is machine learning/AI, so there are things like Devops where I have an understanding of docker/terraform/etc and can use them but I don't know the best way to utilize those to take full advantage of them. ChatGPT can tell me about devops best practices and how to use the tools/structure the configs to avoid a lot of footguns. This also applies to areas like front-end, where you can ask about front end best practices given a particular project's properties, and it can even update existing code to implement the things it tells you about.
3. ChatGPT is great at writing boring code like tests, documentation, etc. Not writing that code makes coding much more engaging in general.
Personally, as I have used the product more I have found it more useful especially with boilerplate type of code - especially unit tests.
It's also impossible to take those aforementioned breathless claims at face value with the absolutely absurd hype around AI. I'm not even arguing good or bad here, I'm just saying no one will shut up about this.
And it's still not AI, it's machine learning. Nothing wrong with that but when a product's name itself is already bullshit...
The offline learning is also a multi million dollar endeavor atm for most capable models. That does not take into account the cost of acquiring gpus.
Somehow all of this is missing from most articles.
I'm very happy people start pointing that out
> "Cloud" is also a stupid name for a managed datacenter/IAAS/PAAS
"Cloud computing" though as referred to datacenters makes a degree of sense, certainly more than calling GPT an actual mind.
And it seems pretty clear to me that based on the way these companies and their CEOs are leaning into fantasies of Skynet and such, that they're not only encouraging the conflation, but using it to sell the product. And by all means, sell your product, but if you open that conversation by lying to my face, don't expect to close a sale.
Probably a bit more usefull if used with a language that is both known and strict like java, but if you want to do python or script with it, one advice: don't. You'll go nowhere, slowly if you have to use sightly complex libraries like the very well known pydantic.
But AI is nowhere close to perfect now, and will have flaws for a long time. Having AI write code is like having a so-so junior engineer, who can complete the task, but makes mistakes, so needs their code reviewed closely. And is unable to architect anything complex, that still needs to be done by the leads/managers/senior folks.
So more and more of the simple, low complexity coding tasks will be done by AI, while the value of importance of senior engineers will be as high as ever, since they need to oversee the AI's outputs.
What I wonder is how junior engineers, who will be starting their careers out as more expensive or weaker coders to AI, will get the experience necessary to become the senior engineers that need to guide/review the AI's work?
It'll be a test of try to pay less and probably a bunch of spaghetti code fixes after.
They build their product and then just seem to fizzle out. My guess that the technical debt and lack of talent retention kills them.
Business that don't have technical leaders in their senior leadership aren't tech companies. They will fall behind quickly because they are busy chasing what's hot yesterday vs what's going to be hot soon.
10 years ago, I worked for a F500 company that fired their research team who was working on generative AI (and made solid progress) because senior leadership was all about investing in blockchain. Remember blockchain? I'm willing to bet those same leaders are all about the "AI future" now that it's in the magazines. But the problem is they are competing with companies who saw the value of generative AI years ago, before it was mainstream. Lucky for them, the company has enough money to buy the startup competition for a few billion.
Maybe the basics are just being redefined. Perhaps there are some irreducible concepts to which programming can be reduced. Maybe the programmers of the future need only know those concepts and not anything at all about code.
In science fiction, in the far future, people just tell computers what to do and they do it. Presumably, these computers were built by humans at some point but were able to improve themselves. And that was the end of the need for programmers.
Maybe we just need to move the ball down the field just far enough for the programmers of today to unburden the people of tomorrow from needing to learn how to code at all.
the key is to be able to traverse the abstraction hierarchy all the way from the physics of the hardware to the end-user, and that arguably is what any engineer must learn.
Most genAI users intuitively known this and attempt to strike a balance between prompt engineering and traditional debugging techniques. Which suggest to me that, if anything, knowledge is even more critical since you're now describing the problem precisely in a natural language (hard!) and debugging/editing/reading code written by someone else (even harder!).
I have a coworker that is both not a native English speaker and not a great engineer. He is leaning too heavily on Copilot and CharGPT and our code reviews are getting longer and more difficult because he is producing more code that traverses in the wrong direction.
Meanwhile - our CTO is saying "if you're not leveraging gen AI in your coding, you're going to get left behind"
Sigh....
Gen AI has a multiplying effect. And that goes in either direction or seems.
>A COBOL programmer, tired of all the extra work and chaos caused by the impending Y2K bug, decides to have himself cryogenically frozen for a year so he can skip all of it.
>He gets himself frozen, and eventually is woken up when several scientists open his cryo-pod.
>"Did I sleep through Y2K? Is it the year 2000?", he asks.
>The scientists nervously look at each other. Finally, one of them says "Actually, it's the year 9999. We hear you know COBOL."