> AI tools are already automating large parts of the software engineering role
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...
> Are they? I hear a lot of breathless claims about this but no-one I know is automating anything with AI.
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...
Technically ML is the process that is used to create a model/product, which in turn was coined "AI". Not great naming, but are people really still dying on that hill? "Cloud" is also a stupid name for a managed datacenter/IAAS/PAAS, it's a collection of water droplets after all. Yet here we are. What value does it add to lament these naming fails, especially after it's long permeated the public Zeitgeist.
Because AI already was in the public zeitgeist as a term for something that is decidedly not what is being offered by companies like OpenAI, and beyond it's meaning in the zeitgeist, the wording itself, Artificial Intelligence, belies much more than these models actually are, which is generative models. They are not intelligent in any way a layman would call intelligent.
> "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.
Completely agree here. I use it daily both ChatGPT Plus and CoPilot, it’s great as a slightly better google to fire off queries to while I investigate something else. But it does sometimes fail miserably and I wish it was better.
As someone who finds ChatGPT life changing and amazing, here's what you're missing:
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.
Do you have any friends who are in school right now? A friend of mine told me about a web development bootcamp of his where nearly every student relied so heavily on ChatGPT that few of them learned how to do the course material. The article makes the point that generative AI is a pipeline threat, one which heavily affects juniors and students.
I saw an ad recently "You'll never code as well as ChatGPT." I suspect we'll see some changes to both how and why people code, and it's entirely likely that application types which are difficult for AI to code will become scarcer.
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 suspect as much as well. If AI makes it easier to produce certain products, then advertisers will do their damndest to create demand for those products. And if AI makes production cheaper, safer, and faster, then planners will orient their constructions and designs around making use of those efficiencies. Similar to how the widespread adoption of the car changed our cities, so too will AI change what we build, AI's limitations and all.
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?"
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
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?
This paper is a joke in the ML community. Model collapse is not real. This paper made some seriously faulty assumptions in their contrived lab experiment. State of the art models are trained entirely or largely on "synthetic" generated datasets to surpass models trained on purely human data in quality and capability.
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).
I notice the college thing but I don't think it's a threat, as long as they are still able to solve problems well and understand the code that they're writing[1].
[1] Yes, we no longer understand assembly code but that one isn't based on fuzzy logic.
GenAI is pretty much interactive search, cheating with some sort of library/info-system always happens. GenAI is a convenience for this info. You can use Yahoo! answers to get your homework solved, or any socially-networked site...
Before that it was chegg and yahoo answers or paid tutors. Homework is not a good test of ability. Honestly neither is even just doing well alone in school. Many graduate programs expect you to have done some training conducting research under faculty direction now.
Maybe the concept of homework that isn't interesting enough for them to want to solve it on their own should be thrown out then? Trying to force someone to learn something never works.
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.
Cheating has always been a problem. Maybe some of these bootcamp students will skate by, I'm sure some will even land jobs, but they'll get weeded out eventually. In the end they're just hurting themselves. I don't know what kind of idiot cheats their way through curriculum that they will need in order to literally do the job they hope to be paid for.
I struggle to believe that. I've found Copilot / ChatGPT really useful, especially for doing support investigation tasks (chopping and filtering logs mainly). Not once has it just output a perfect answer - it's required me to know what it's trying to do in order to tweak it to my needs. Not having the skills in the first place would leave me with a confused half solution.
I challenge anyone in this forum to create a sizeable production-ready application and maintain it using a language/database/platform they have no idea about by simply asking LLMs to build it. I'm pretty sure anyone will spend enough time banging their heads against a wall trying to fix bugs they have zero understanding about or properly learning the technologies (which they should have done in the first place).
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.
I don't think ascribing cheating to this is the correct term.
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?
They are there to learn the topic at hand, not to delegate it to someone else whether that be chatgpt or a tutor they pay to take the uni exam for them with their student id. If a job is fine with hiring a delegator thats great for both parties but some jobs need domain experts too who can sniff bullshit from the ai output even if they do use it day to day.
That's an over simplification. If students are using chatgpt to generate code that they themselves don't understand, and then submitting that whole cloth as their work, they're cheating - full stop. They're not using chatgpt as a tool in this case, any more than searching stack overflow and copying answers without understanding them is a tool.
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.
They can't be wrong in the way that LLMs can be, which is the exact reason that using them for this comparison falls apart - but yes if we're splitting hairs they can be wrong in the same way that javascript is wrong when you ask it to add two floats together.
Let’s not forget calculators are doing math, the one thing which is binary right/wrong.
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).
To use the calculator analogy, I think the concern is that the calculators sometimes return close but incorrect values, and now everyone learning arithmetic is just using the calculators instead of doing it by hand, and accepting those incorrect results as truth.
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.
> If your boot camp could be done solely using the plus button of a calculator; people would think it's not worth it.
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?
I was in a bootcamp in 2014 and this was still a problem, albeit not with AI, but with the lack of useful material. We were learning very high level concepts about the "flavor of the month framework" rather than any coding fundamentals. I really wouldn't use coding bootcamps as the bar for education pipelines.
That sounds lovely, us folks already in the industry for some time have then nothing to worry about. Our hard earned seniority won't be matched by this approach anytime soon, not even caught up.
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.
Eh. When I was in a bootcamp everyone did the same thing just with stack overflow and any number of other sites. It was harder/slower but most people were doing as much copy paste as they were actually coding. I'd argue that is a lot of what junior engineers do until they learn how to actually code.
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.
are you using chatgpt 4 for that? The free version of chatgpt isn't close to as good as the latest paid version. Even copilot is better than the free version of chatgpt.
I use the enterprise version of copilot, its basically a great google in all cases, a good stackOverflow in some cases, and a fantastic docstring writer.
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.
for simple tasks/code that I already know the answer to but just need a refresher, ChatGPT is great. when I'm dealing with something really mysterious, it starts to break down no matter the prompt, and I'm left with trying to figure it out for myself.
Joel Spolsky had a great article on leaky abstractions.
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.
My use-case for LLMs in writing software is 'documentation I can talk to'. I don't have ChatGPT write my code but it's a much faster and more pleasant alternative to wading knee-deep in spam on forums or grepping through badly-written documentation you need a degree in exegesis to interpret.
Yeah, I've almost never used ChatGPT to generate something for me - neither text nor code - but I find it very useful for answering questions and helping me understand concepts when it would be hard to google my query
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
A rather militant approach to testing for the most part, even if I don't know how to do something off the top of my head I know what I want my code to be doing so in my opinion having decent testing in place limits the risk of a ChatGPT misinterpretation causing harm. I've not done away with documentation wholesale either, if I'm in doubt I'll revert to the usual way of doing things.
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...
They are, and if you're not observing this you're observing programmers so mediocre they don't know to use good tools, or programmers who are so incredible at their micro-niche that there's a good chance they're one of the sources for what ChatGPT would try to spit back at them.
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.
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.
Aligns with my latest thinking as well. Even if an AI can write better stories than a human can, there are futures where human-written stories are even more valuable for all that. The supply and demand for human writers may remain good, if many would-be writers give up or never learn the craft, and there's still a niche demand for "primitive" human written stories. To me it seems like a good idea to bet on craft, albeit craft serving a niche market.
I can imaging a future where human writers will claim they don't use AI to write their stories while they most definitely are using AI. Kind of like the scourge of natural fitness influencers using gear.
What you describe is how the world already works with ghostwriters. Music too. Drake would have his writers living in tents in a basement until the project was done.
I think you have a good point here; there's a reason that deep into the digital age there's still plenty of analogue cameras, valve amplifiers, vinyl records, and all manner of 'obsolete' things like that being made.
There are so many artists that thrift stores are filled with artwork. It was never about having a quantity of art. Provenance is everything. Its why silicon valley execs don’t drink boxed wine, and why ai art isn’t going to change much of the art world.
Copy pasting from stackoverflow has been a meme for almost a decade now. I don't think that destroyed software engineering. Generative AI goes further than that, but fundamentally don't alter software engineering, at least at their current levels of power. You can't give them high level tasks - you have to handhold them. Yes verification is easier than creativity, but I haven't written a sorting algorithm, a Web server, an LRU cache or something similar from scratch in a long time. I reach for a library I know works well. If the LLM helps me write code at a higher level of abstraction than libraries, so what? It's going to be a leaky abstraction just like libraries currently are - the best engineers who can traverse the abstraction hierarchy will still be in demand.
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.
My prediction is that to be competitive, companies will eventually need to rely on AI-produced code to some extent or risk being slower and less efficient than competitors. It would be like not using email or messaging and only using snail mail for all written communication.
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?
There are an unsettling number of NA startups that seem to aggressively hire remote workers or contractors in Asia\Africa and then a couple mid to senior people in NA timezones.
They build their product and then just seem to fizzle out. My guess that the technical debt and lack of talent retention kills them.
Technical people are more valuable than the code they produce. The good ones have domain expertise and can guide product development in a way that takes advantages of emerging tech, long before it becomes mainstream, and positions the company to capitalize on market movements sooner.
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.
> but are we sleepwalking into a future where no one knows the basics?
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.
I think the premise is wrong. ChatGPT has supercharged my understanding of Java by exposing me to so many different parts of the language and development patterns that I didn’t know before because it literally knows ALL of Java. If you look at the code it generates in order to check it for errors and understand what it has given you, you’ll be constantly learning about the language.
But you know enough java to be able to accumulate new knowledge. That is the critical barrier. To know enough in a subject so you are able to learn on your own
I see some of my coworkers going in the wrong direction and pulling others down around them.
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.
TLDR - if you are over 40 now, you will be like the guys nowadays that know FORTRAN and COBOL.
>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."
Writing a prompt with sufficient detail to generate the "correct" code is not a priori easier than just writing the code! There's no logical reason to think it should.
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!).
83 comments
[ 2.6 ms ] story [ 170 ms ] threadAre 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 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.
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.
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).
[1] Yes, we no longer understand assembly code but that one isn't based on fuzzy logic.
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.
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.
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.
https://www.thetechedvocate.org/can-a-calculator-be-wrong/
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?
100% agree on this btw. It’s still cheating though.
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.
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.
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.
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.
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...
(-;
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.
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.
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.
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.
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."
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!).