Okay, this is going to be a bit of a rant. Oh boy do I have a bone to pick with this. Of course it's realistic to work without AI. Why wouldn't it be? If your workflow has comprised of acting as a...
Exemplary
Okay, this is going to be a bit of a rant.
I’m not suggesting anything radical like going AI-free completely—that’s unrealistic.
Oh boy do I have a bone to pick with this. Of course it's realistic to work without AI. Why wouldn't it be? If your workflow has comprised of acting as a feedback mechanism for Cursor for the last year, of course you're gonna be rusty on, like, actually writing code. Or reading documentation. Or reading code. Or even thinking about how to solve problems, maybe. But you've done it before, and you can do it again. I mostly worry about the people who started programming in this environment, and may never reach the lofty goal of "being able to write code independently" as a programmer. The people who are learning how to code now and have sworn off LLMs are the people I want to hire.
I'm eternally salty about this subject because I've already felt for a long time that a lot of people I've worked with had a sort of vague relationship with correct code. Well before AI coding, I worked with software engineers who would routinely produce code that only roughly approximated their actual goal. Then coding LLMs came on the scene and turned this trickle into a flood. Great.
First, I stopped reading documentation. Why bother when AI could explain things instantly?
This one sends me. I've worked with several codebases where
The docs say X on this page
The docs say Y in their machine-readable spec (e.g. JSON schema)
The actual API does Z
Adding an AI to this mix only makes things worse. It will either give you an incorrect answer from the docs, or make up a whole new thing. And when the docs are better, and correct, why not just... read them? Before running them through a summarizer that MAY introduce incorrectness and WILL reduce detail?
I used to write docs for internal enterprise software, and still do a fair bit of technical writing. And refining it is summarizing! The goal is always to give the reader exactly the information they need, no more and no less, and the idea of readers just wood-chipping it through an AI feels insulting. Not all docs are examples of good technical writing, certainly, but at least use AI for situations like "these docs are really dense, and I just have a couple high level questions", instead of "I can't be bothered, what do you think Claude?"
If the docs are good I’ll use them 100% of the time over an LLM. Unfortunately it’s pretty routine for newer docs for iOS and Android (SwiftUI/Jetpack Compose plus a handful of newer UIKit and...
If the docs are good I’ll use them 100% of the time over an LLM. Unfortunately it’s pretty routine for newer docs for iOS and Android (SwiftUI/Jetpack Compose plus a handful of newer UIKit and Android Framework APIs) to be little more than an index of classes, functions, and properties with nothing explaining any of it and/or no examples.
So at minimum I’ll have to seek out a third party source like blog posts or an SO post in those situations, and when those don’t pan out that’s when I turn to an LLM and ask it to synthesize an example.
Yep, I run into that a lot with Go packages and pkg.go.dev. They can be great, especially when you can get some information about a field or method inline with autocomplete. But you gotta have...
Yep, I run into that a lot with Go packages and pkg.go.dev. They can be great, especially when you can get some information about a field or method inline with autocomplete. But you gotta have some sort of "orientation" at the package level, and ideally some examples. Without some context, and common entry points, it can be really hard to figure out where to start; I wouldn't begrudge someone for using AI for that.
The counterpoint is, code has only been "good enough" since around C++. 99% of use cases and industries do not need tight, perfect, well reasoned, well maintained code. Much like "making a program...
The counterpoint is, code has only been "good enough" since around C++.
99% of use cases and industries do not need tight, perfect, well reasoned, well maintained code. Much like "making a program that always works" became "making a program that can quickly be killed and restarted to work" has become the new norm, I think coding is feeling the exact same pressure.
I honestly wonder if at some point we're going to hit a wall where "fuck it, do it over" will be faster than "figure out what in the ever loving fuck anyone on this project ever thought", and that was BEFORE AI hit the scene.
The simple fact is there's a very large need for coding, and there's always been a tremendous need for bridging the gap between coders and their tools. Most coding should be dead easy, and yet the ZILLIONS of API's, protocols, gotcha's, whoopsies, tech debt, new patterns, old patterns, styles, frameworks, gremlins, grey beard standards, hot new toys, I'll do it tomorrows, and god knows what else have made a mess.
Something like "hey, you know how you click and drag to move a file, well here's how you can do that in code" is a shockingly large learning leap even for someone who's a tech enthusiast (think of every gamer out there who can build their own pc, hunt google searches for days for dead threads to test their GPU, but doesn't know how to maintain a basic script).
AI, much like the GUI, is abstracting a lot of that out. I realize that for business level "no really this shit needs to work" code, that's going to be a fucking nightmare, and I'm in a roughly similar situation, but for so much more of it it's going to hit the same standards we've always had, which is "good enough".
Coders especially seem to put themselves on this pedestal of artisanal problem solvers, but honestly the vast majority of coders I've met working at major companies are just bashing out garbage and calling it a day. The good ones spend more of their time documenting and STOPPING people from writing code than they ever do actually writing.
This captures my exact feelings around AI and coding. I completely agree that AI is nowhere close to replacing a good software developer. I don't think most companies want or need good software...
This captures my exact feelings around AI and coding. I completely agree that AI is nowhere close to replacing a good software developer. I don't think most companies want or need good software developers. I'm an academic, but I constantly hear about the tradeoff between writing "good code" and actually making progress in your job in an industry setting. Things like "refactors are a waste of time", or "great documentation slows down a feature release schedule" or, like you said, "what we have is good enough".
Many coders do complain that these paradigms are harmful in the long-term, but that has never stopped Wall Street and business-types before.
for so much more of it it's going to hit the same standards we've always had, which is "good enough".
AI doesn't need to be a great software engineer. The code AI needs to write needs to be good enough, which is actually a lower bar than an engineer's "good enough", since AI is cheaper and faster than an engineer.
Still, I actually don't think any software engineers that want to keep their job should be using LLMs as a crutch; the only ones who will survive the AIpocalypse will be those who can do something that LLMs can't.
Sometimes I’m reading some beautifully elegant leap of logic in a codebase written by a grad student a decade younger than me, trying to really understand the fundamentals that got them there, and...
Sometimes I’m reading some beautifully elegant leap of logic in a codebase written by a grad student a decade younger than me, trying to really understand the fundamentals that got them there, and I get a pang of imposter syndrome wondering if I ever would’ve figured it out on my own.
Lines like
I’m not suggesting anything radical like going AI-free completely—that’s unrealistic.
are a nice reassurance that in the larger scheme of things, I’m probably doing alright after all.
Remember the joke that if Stackoverflow died, most programmers wouldn't be able to fix their code? Now LLMs are building an even greater dependence while also killing forums so you have fewer...
Remember the joke that if Stackoverflow died, most programmers wouldn't be able to fix their code? Now LLMs are building an even greater dependence while also killing forums so you have fewer places to go when it's offline.
Humans are inherently lazy, and thinking is hard. LLMs allow you to trade mental effort for a paid service.
Our world relies on people with deep knowledge, but their numbers are small which makes their institutions fragile. We should be building deep knowledge wherever we can.
I’ve been wondering about this lately. Imagine if SO disappears tomorrow and then next week some amazing new language that the LLMs have never heard of is released. My kneejerk reaction is that...
I’ve been wondering about this lately. Imagine if SO disappears tomorrow and then next week some amazing new language that the LLMs have never heard of is released. My kneejerk reaction is that LLMs will remain useless for anything in that language, in the absence of such a large volume of training data.
But I’m not so sure if that’s the case. Assuming the language is released with comprehensive docs, maybe that would be enough? If it’s OSS, could the source code also be used for training? I wonder if we have enough foundation laid already, for general comp-sci and programming principles, that a reasoning model could connect the dots itself. I think we’re past the point of needing to feed them a firehouse of code samples.
I could be totally wrong about that, but I’m generally impressed with the new models’ ability to synthesize contextual, semantic meaning that wasn’t explicitly pre-baked into the training corpus.
Yup. We're rapidly approaching the time when IT experts are as commonplace as wizards. I've already started referring to Oracle documentation as "tomes."
Yup. We're rapidly approaching the time when IT experts are as commonplace as wizards.
I've already started referring to Oracle documentation as "tomes."
I don't think so. I find it hard to learn a programming language from the documentation, I instead use tutorials. Sometimes those are included with the documentation, sometimes not. Frameworks...
I don't think so. I find it hard to learn a programming language from the documentation, I instead use tutorials. Sometimes those are included with the documentation, sometimes not. Frameworks especially can be hard to use until you understand how the pieces fit together, looking at them in isolation means you may not know where to look for the next step.
If there are still people creating programming languages, there will still be people creating tutorials and blog posts. There will still be people asking questions somewhere, and other people answering. LLM's will pick up that information and incorporate it, same as they do now. Before stack overflow there was expertsexchange, before that there were mailing lists and usenet.
Anyway, sometime soon someone is going to have an LLM come up with its own new language if that hasn't already happened.
People dunk on how Discord is closed and non-searchable compared to forums, and I'm occasionally one of them. I think that's a bad direction to go in, but one of the reasons to go in that...
There will still be people asking questions somewhere, and other people answering. LLM's will pick up that information and incorporate it, same as they do now.
People dunk on how Discord is closed and non-searchable compared to forums, and I'm occasionally one of them. I think that's a bad direction to go in, but one of the reasons to go in that direction is that your conversations aren't sucked into the LLM machine.
There is no guarantee the next LLM will have access to the open internet, nor will the open internet necessarily be as large as it currently is.
Well that's more job security for me and my legacy skillset! I kid, I kid. I imagine there will always be devs talking to each other in various ways. Colleagues chatting at work, influencers...
Well that's more job security for me and my legacy skillset! I kid, I kid.
I imagine there will always be devs talking to each other in various ways. Colleagues chatting at work, influencers hyping up the new hotness on their streams, etc. And the LLMs themselves may be able to recommend even a brand new language for relevant projects, assuming they have some understanding of it.
I'm skeptical that the source code of a language could be used for training on that language. It's not like an LLM would actually understand the functionality of the compiler/tooling source code...
I'm skeptical that the source code of a language could be used for training on that language. It's not like an LLM would actually understand the functionality of the compiler/tooling source code it's reading and be able to translate that into how to construct code in the new language that could be compiled. The exception to that might be if the compiler and tooling for the new language was itself written using the new language, but in that case the source code would just be used to create its text prediction weights. I'm not familiar enough with LLM training to know how much source code input for a new programming language would be required to build a model that could reliably spit out syntactically correct code in that language, but I suspect it's probably a lot more than a typical compiler and project tooling alone would consist of.
Their current architecture requires lots of examples to train well, not just the source code/documentation. They need to scrape/steal from Github and StackOverflow to be good. It's why these...
Their current architecture requires lots of examples to train well, not just the source code/documentation. They need to scrape/steal from Github and StackOverflow to be good.
It's why these models are great for popular languages like Python, Rust, C++ and probably not so good at things like COBOL and FORTRAN.
Maybe there will be some change in training methods which allows them to be trained on less data, but AFAIK that's not the case right now
synthesize contextual, semantic meaning that wasn’t explicitly pre-baked into the training corpus.
I'm curious how you know this? I wasn't aware of any company making their training data public?
No, that's true, I've done a lot of poking and prodding to figure out where the edges of its knowledge are but nothing rigorous. Anecdotally, I can choose two wildly random and disparate concepts...
I'm curious how you know this? I wasn't aware of any company making their training data public?
No, that's true, I've done a lot of poking and prodding to figure out where the edges of its knowledge are but nothing rigorous. Anecdotally, I can choose two wildly random and disparate concepts that are (presumably) not explicitly connected anywhere on the web, and prompt it to find commonalities, and an LLM will find relationships that (again, presumably) have never been written about before.
Bit of a tangent in here, but I explain my understanding of how LLMs work and how that ties into my "meaning synthesis" thought... feel free to skip if you're already on the same page, or share any notes of your own if you think I'm off-base.
It's not a perfect analogy but I think of LLMs like a mind map or graphical thesaurus: a complex tangle of concepts and their relationships to one another. I imagine a 3D cloud rather than a 2D diagram because it helps me visualize the complexity better, but actual LLMs have not two or three, but billions of dimensions. No way to wrap my feeble mind around that, so the 3D cloud is the best shorthand I've got. Anyway, I picture my prompt being used to determine the starting position and direction of the response within that cloud, then nodes start lighting up rapidly as the chain of thought bounces around from one concept to another. Untouched concept nodes in proximity to the activated ones still affect the trajectory of that chain as if they have their own gravitational pull.
Many different nodes from completely distant parts of the cloud will light up in the course of the response generation, but the vast majority of nodes in the model won't be touched all. If you could map only the active, lit-up ones you'd get a picture of what the prompt+response are "about."
So I think a trick is to prompt with a couple unrelated concepts that are not "about" each other at all, whose nodes occupy disparate corners of the cloud. And the LLM will find a mathematical midpoint between them, adjusted in various ways by the gravitational pulls of the nodes it passes in its thought process. And that's how you end up in new places that were never explicitly spelled out in the training data. By drawing new connections between ideas, LLM inference allows for the synthesis of new meaning.
The models usually build off each other (one generates synthetic data for the other). For example, DeepSeek RL-1: https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1...
synthesize contextual, semantic meaning
The models usually build off each other (one generates synthetic data for the other). For example, DeepSeek RL-1:
I stopped going to SO years ago, but I've got some experience and know how to look and read (dry) documentation. Navigating the GitHub issues of a project always brought me better answers than...
I stopped going to SO years ago, but I've got some experience and know how to look and read (dry) documentation.
Navigating the GitHub issues of a project always brought me better answers than what I'd find on SO.
SO became useless for me after about year 2 of my career as a software engineer. If you're working on anything remotely interesting, the problems you encounter are too complex and niche for SO to...
SO became useless for me after about year 2 of my career as a software engineer. If you're working on anything remotely interesting, the problems you encounter are too complex and niche for SO to help. So far my limited experience with "AI" is that it's largely the same. Even vastly simplified questions are too nuanced for it to provide useful answers.
The advantage of SO in this regard compared to AI is that if an answer is wrong or even controversial, you'll almost definitely be able to tell from the comments. The disadvantage is that you can...
The advantage of SO in this regard compared to AI is that if an answer is wrong or even controversial, you'll almost definitely be able to tell from the comments. The disadvantage is that you can still find quite old answers, which can be a pain if the language you're working in has been around for quite a while.
I noticed something, from the first few sentences: The author's problem goes beyond being dependent on LLMs. They're dependent on OpenAI's service specifically, which is even more insidious, and...
I noticed something, from the first few sentences:
A couple of days ago, Cursor went down during the ChatGPT outage.
I stared at my terminal facing those red error messages that I hate to see. An AWS error glared back at me. I didn’t want to figure it out without AI’s help.
The author's problem goes beyond being dependent on LLMs. They're dependent on OpenAI's service specifically, which is even more insidious, and the reason why I refuse on principle to subscribe to one of these online AI services, opting to only consider locally-run generative AI. Even if I ended up finding a usecase compelling enough to start relying on it (so far, I haven't), those, at least, would be running on my own hardware, and not become inaccessible because some random server fell over or the company I sold my soul for generation tokens decided it wasn't earning enough money and made the service worse/more expensive. The rest of the article is still relevant, but that's something I wanted to point out that the article itself didn't.
Also, at the risk of sounding flippant, becoming "dependent on AI" is a self inflicted problem. If using this technology made you take an unwise mental shortcut and you realize you lack the competence to address a problem that you should be able to handle without, you can just... go back to what you don't understand and make use of the existing learning resources to catch back up. Those didn't magically disappear when ChatGPT showed up. Either it didn't matter, or you can fix the problem yourself. There's a lot I can blame the advent of generative AI on, but "robbing you of your ability to learn" isn't on the list.
I would say that "robbing you of your ability to learn" is absolutely on the list. If you're used to asking a question and getting an answer without any fuss, you may not have the mental library...
I would say that "robbing you of your ability to learn" is absolutely on the list. If you're used to asking a question and getting an answer without any fuss, you may not have the mental library of other resources to fall back on. And then you're finding yourself in the position of trusting a Google search to turn up something useful.
I'm self respecting enough to not ever learn the nooks and crannies of proprietary platform's quirks and states - I mean AWS - to not consider this exact situation a learning experience. After...
I'm self respecting enough to not ever learn the nooks and crannies of proprietary platform's quirks and states - I mean AWS - to not consider this exact situation a learning experience. After becoming efficient user of oracle database years ago, I promised myself to never repeat this mistake and never master another proprietary technology with so many nontransferable skill requirements.
Anyway, that was just a sidenote, what I wanted to say is that there is a middle ground between self-hosting an LLM on a local hardware and becoming dependent on a proprietary solution hidden behind a paywall and an API: you can have someone to host an Open, replacable LLM for you as a service. There are many options like this on the whole spectrum starting at GPU rental to dedicated coding-assistant services running on open models. These can allow you to go above what you can - and have energy to - run on strictly local hardware.
Yeah, there is definitely nuance to this without falling into the "buying a subscription to access OpenAI/Anthropic/whoever else's models and server farms and becoming dependent on them" issue....
Yeah, there is definitely nuance to this without falling into the "buying a subscription to access OpenAI/Anthropic/whoever else's models and server farms and becoming dependent on them" issue. For example, pooling a sufficient budget to build a computer with enough GPU resources to leverage the bigger models while keeping it affordable for the individual people involved then setting it up so that each contributor can access it would be a credible option that someone likely couldn't afford on their own.
I'm starting to wonder if it would be realistic to host my own private AI server on my home network. It's not practical to have these beefy models running on my primary machine but a dedicated box...
I'm starting to wonder if it would be realistic to host my own private AI server on my home network. It's not practical to have these beefy models running on my primary machine but a dedicated box running in the closet might not be awful.
Of course, once I cross that rubicon I'll inevitably be tinkering with it 24/7.
Apple Silicon is a great price for what you get in terms of efficiency for these large models right now. It might be around the same price for electricity alone to have a twice as capable laptop...
Apple Silicon is a great price for what you get in terms of efficiency for these large models right now. It might be around the same price for electricity alone to have a twice as capable laptop vs another machine + dGPU running 24/7.
I'm saying this as an anti-Apple person. There just aren't a lot of other options for consumer large-model hardware right now
Self-hosted LLMs are a situation where cloud compute can work out really nicely: you still have all the advantages of picking your own open source model, fine tuning it if you like, keeping your...
Self-hosted LLMs are a situation where cloud compute can work out really nicely: you still have all the advantages of picking your own open source model, fine tuning it if you like, keeping your conversations private rather than sending them off into the giant data aggregation vortex, all that good stuff - but you also get to grab just the few seconds of GPU time you need for a given request rather than having expensive hardware sitting mostly idle (or cheap hardware sitting mostly idle but limiting you to much more basic models when you do need to use them).
That’s a great point. Renting cloud hardware would certainly be cheaper than buying my own rig. I’ve been paying for a personal DigitalOcean VPS for years but I’m not sure what their current GPU...
That’s a great point. Renting cloud hardware would certainly be cheaper than buying my own rig. I’ve been paying for a personal DigitalOcean VPS for years but I’m not sure what their current GPU offerings are. Might be worth a look. Hopefully there’s something there, I’d rather not switch to AWS, Google, or Azure.
I'd suggest taking a look at Runpod as well, they're my go to for ad hoc GPU stuff nowadays. They tend to be cheapest (especially "community cloud" instances, which is them soaking up excess...
I'd suggest taking a look at Runpod as well, they're my go to for ad hoc GPU stuff nowadays. They tend to be cheapest (especially "community cloud" instances, which is them soaking up excess capacity from other organisations that own hardware but aren't using 100% of it at that moment) and there's a lot less enterprise-y cruft to deal with than the big three - pretty much just choose or upload a container and hit go.
I haven't tried their serverless product specifically (I tend to use them for burst capacity on larger training runs rather than quick inference calls), but it's pretty much what I was thinking of above: your machine image floats in the aether until you make a call, and then grabs a GPU just for the duration.
Oh that sounds like just what I need! I peeked at DO’s pricing earlier and there’s probably some nuance or optimization I’m missing but this looks like it’s intended for production use with...
Oh that sounds like just what I need! I peeked at DO’s pricing earlier and there’s probably some nuance or optimization I’m missing but this looks like it’s intended for production use with minimal downtime. Way out of my budget. Something more a la carte is what I need for my negligible household usage. The main thing is I want some flexibility with models. DO has a handful of 1-click solutions for llama or sonnet. But I’d like to run deepseek and stable diffusion, which aren’t offered pre-configured.
Almost exactly 4 years ago here on Tildes, I was saying this about bookkeeping. As automation advances, the amount of training it takes a person to compete with an automated system continues to...
Almost exactly 4 years ago here on Tildes, I was saying this about bookkeeping. As automation advances, the amount of training it takes a person to compete with an automated system continues to rise, until there's not enough useful lifespan for a worker to recoup the cost of the required education. Less than a decade ago, people were still saying to switch to being a programmer to have a good life, and now that's fading as an opportunity too. What hope do people have of making long term plans when everything is changing so quickly?
I think there will continue to be opportunity for a decent life in programming, but the bar is raising. The positions impacted most will be those that do things like hack on existing React...
I think there will continue to be opportunity for a decent life in programming, but the bar is raising. The positions impacted most will be those that do things like hack on existing React projects, at most building small widgets but never anything bigger or more complex.
The capabilities of LLMs rapidly degrade beyond that point. While you can technically build a functional app using one, the result is likely to be filled with spaghetti and that will only get worse as poorly built LLM-generated components get bolted on and will be increasingly difficult to extend or maintain.
As noted elsewhere in the thread, LLMs are only “good” at the most common languages and frameworks. Ask it about developing drivers and firmware for example and it’ll stumble around a great deal more than it will if you’d asked about a React app.
So for now, I’d say that anybody who’s not an entry level web dev is ok. That means it can be difficult to break into the industry, but that’s been true since at least 2017 or 2018 anyway… even before LLMs demand for newbie web devs had bottomed out simply because supply had become so high.
Four years ago, the bookkeeping tools were only good at the simplest problems. They're better now. Whether the same timeframe will apply to software development or not, the general arc is the...
Four years ago, the bookkeeping tools were only good at the simplest problems. They're better now. Whether the same timeframe will apply to software development or not, the general arc is the same. The fundamentals of training a skilled populace haven't failed... yet.
This discourse always reminds me of Socrates’ thoughts on the potential harms of writing. He wasn’t exactly wrong either, look at how certain religious texts have been twisted and used to control...
This discourse always reminds me of Socrates’ thoughts on the potential harms of writing.
In the Phaedrus, Plato quotes Socrates as follows: "If men learn this [writing], it will implant forgetfulness in their souls; they will cease to exercise memory because they rely on that which is written, calling things to remembrance no longer from within themselves, but by means of external marks." Books, "by telling them of many things without teaching them" will make students "seem to know much, while for the most part they know nothing, and as men filled, not with wisdom, but with the conceit of wisdom, they will be a burden to their fellows. Then anyone who leaves behind him a written manual, and likewise anyone who takes it over from him, on the supposition that such writing will provide something reliable and permanent, must be exceedingly simple-minded."
He wasn’t exactly wrong either, look at how certain religious texts have been twisted and used to control the “simple-minded”. But just because his fears were correct in some ways, doesn’t mean it’s all downside or even that the downside you can see will be worse than the potential upside.
So I don’t really disagree that some people will become overly reliant on AI, but I don’t think that tells the whole story of what the future will be.
I've been thinking about that and the timeline of big changes I remember throughout my career. Larry Wall, 1999 (creator of the Perl programming language) I remember folks saying that IDE's were...
I've been thinking about that and the timeline of big changes I remember throughout my career.
Three great virtues of programming are laziness, impatience, and hubris.
I remember folks saying that IDE's were ruining programmers, they couldn't work without them. My first programming teacher in college had us use Notepad to write Java so we couldn't "cheat" by having the IDE do the work for us. It's true that I would find it incredibly difficult to use Spring without automated imports, which even VIM can do now.
Stack Overflow was the next thing I heard was going to ruin programmers, as others have mentioned.
This may or may not be the beginning of another of those shifts. I haven't been impressed enough by anything I've used to be sure of that. The main new thing is that you can declare what you want and get a snippet of what works generated, then you can fix it, then customize it. That may save time or it might be a frustrating waste of time, depending on the quality of what it gives you and how well you know what to do for customization.
In my experience this isn't really a message that the majority of developers want to hear, even though it seems trivially obvious if you think about it even a little bit. I think the arguments...
In my experience this isn't really a message that the majority of developers want to hear, even though it seems trivially obvious if you think about it even a little bit. I think the arguments seem to boil down to a couple points (hopefully I'm not straw-manning here, it's based on feedback I got on a similar article I wrote a while ago):
It doesn't matter, because AIs will become so good at programming that it will just become the "new normal," kind of like how we don't need blacksmiths or horse-and-buggy drivers anymore, we won't need human programmers anymore.
It's a tool no different from a better IDE or syntax highlighting or autocomplete--it will actually make us better programmers because we can more easily churn out the trivial stuff and just focus on the actual problems that need solving.
The first one just makes me a little sad. I think it's extremely optimistic and unrealistic to expect that LLMs will 100% replace software engineers, but instead it's going to transform software engineering into a different (worse IMO) job where instead of writing code you'll just be reviewing it--spending all your time testing, debugging, and tweaking LLM output.
The second one was the most popular response. I can understand where they're coming from, but I think LLMs are fundamentally different from the other tools and assists we've gotten to this point in that it can completely remove the need for beginner programmers to write or understand code at all. Part of the thing that makes a good programmer is becoming familiar with fundamental concepts when you're first starting out, but if you leap frog over that step by having an LLM do that stuff for you, you're never going to get a grasp on those fundamentals, which eliminates (or at least severely hurts) your chance of ever advancing your skill.
My work let us use Copilot so I used it for a month or two last year and it honestly didn't do anything that snippets + an LSP server can't do already, which is what makes this so weird to me. I...
It's a tool no different from a better IDE or syntax highlighting or autocomplete
My work let us use Copilot so I used it for a month or two last year and it honestly didn't do anything that snippets + an LSP server can't do already, which is what makes this so weird to me. I mean, yeah, it can autogenerate boilerplate but we already have tools for that. Anything more complex than that didn't really work and, even if it did, I'd have to double check the entire thing anyways because it's AI-generated.
Do you work with web technologies? It's far better than a snippet library when setting up a React page. I really like how it solves the "blank page problem".
Do you work with web technologies? It's far better than a snippet library when setting up a React page. I really like how it solves the "blank page problem".
I do not. I almost exclusively write C code for the dataplane of enterprise IPS appliances. I suppose it could actually be useful when working on our Python test suites, but I haven't written...
I do not. I almost exclusively write C code for the dataplane of enterprise IPS appliances. I suppose it could actually be useful when working on our Python test suites, but I haven't written anything for those in a while.
It isn't just programmers that will end up illiterate, apparently kids from middle school and on are using it whole sale to do their homework and write their essays. I don't know what the future...
It isn't just programmers that will end up illiterate, apparently kids from middle school and on are using it whole sale to do their homework and write their essays. I don't know what the future holds, but I don't have high hopes.
I’ve always felt that homework is a bandaid solution for having too many students per teacher anyway. If your teacher is excellent and has enough time to work one on one with students to identify...
I’ve always felt that homework is a bandaid solution for having too many students per teacher anyway. If your teacher is excellent and has enough time to work one on one with students to identify where they’re falling short, homework just seems to be a waste of everyone’s time to run drills of what’s already being learned.
I mean, practice takes time. A teacher doesn't possibly have enough time with the student for them to get all the practice they need to master skills. Maybe you could say graded homework is a...
I mean, practice takes time. A teacher doesn't possibly have enough time with the student for them to get all the practice they need to master skills.
Maybe you could say graded homework is a waste of time, but the reality is that many students aren't so intrinsically motivated.
Agreed; that’s a good callout. One of my favorite classes in HS (AP writing & composition) was one where the teacher weighted homework extremely low - it was still graded, but it was something...
Agreed; that’s a good callout. One of my favorite classes in HS (AP writing & composition) was one where the teacher weighted homework extremely low - it was still graded, but it was something like 10% of the final semester grade. The in-class discussions and final projects were worth a lot more. But our teacher’s logic was that if we knew the material, she’d rather we didn’t spend a ton of time drilling something arbitrarily and should instead focus on other classes, or specific areas of weakness. The low weighting meant that kids could skip it without fear of their grade absolutely tanking, but if they didn’t understand the material (or needed a small grade boost), they could do the homework.
The approach paid off, IMO. I only ever did homework in that class that I felt would truly help me, and finished that class with a C+, but I got a 5 on the AP exam and it saved me the cost of that college enrollment. Plus, it meant much more time for classes that DID put a lot of weight on homework (and/or classes that I simply needed to spend more time drilling).
While I partly agree with you, I think this is overly pessimistic. I remember being taught how to use the card catalog and various reference works as methods of finding other material on a topic....
While I partly agree with you, I think this is overly pessimistic.
I remember being taught how to use the card catalog and various reference works as methods of finding other material on a topic. Now you just google that shit (or JSTOR or whatever) and you have more sources and resources than you can even read.
People used to say similar things about Wikipedia, but it remains a pretty good (and importantly free) source for much of human knowledge.
My mom will make much out of the difficulties of writing papers on a typewriter, of doing corrections and footnotes, of retyping drafts. A whole skill set that is (thankfully) obviated by word processors.
All of these technologies fundamentally change the way research is done. I think AI will be similar. Right now, we are in the chaos of disruption, but we (as a society) will settle to a "new normal" that finds ways to take advantage of the strengths of technology and mitigate its weaknesses.
It's not a solution, I suppose, but it would be helpful if educators made more of an effort to communicate to their students the actual purpose of the various exercises they are assigned. A lot of...
It's not a solution, I suppose, but it would be helpful if educators made more of an effort to communicate to their students the actual purpose of the various exercises they are assigned. A lot of kids have spent their entire academic careers effectively being told that the point is to get an A, rather than, for instance, to learn how to research a topic and write a document laying out their findings.
There have always been gaps in people's knowledge and maybe more of that now that you could get away with not knowing in more situations. But I don't see how programmers who don't know what...
There have always been gaps in people's knowledge and maybe more of that now that you could get away with not knowing in more situations. But I don't see how programmers who don't know what they're doing would get past typical coding interviews without knowing something about programming?
More generally, I don't think there's much consensus on what programmers need to know versus look up as needed.
Depends on the interview, but the common FAANG “code golf”/“parlor trick” style interview is so far diverged from doing actual programming work that I could absolutely see someone drilling that...
But I don't see how programmers who don't know what they're doing would get past typical coding interviews without knowing something about programming?
Depends on the interview, but the common FAANG “code golf”/“parlor trick” style interview is so far diverged from doing actual programming work that I could absolutely see someone drilling that style of question long enough to get good at them, be able to pass the interview and get hired, and then not be capable of the job.
“When a measure becomes a target, it ceases to be a good target” Those parlour trick coding questions may have been a good measure initially, until they became famous (infamous?) and people could...
“When a measure becomes a target, it ceases to be a good target”
Those parlour trick coding questions may have been a good measure initially, until they became famous (infamous?) and people could practice for explicitly that style of question.
I count myself insanely lucky to have gone through the education system right before all this kicked off. I've recently started picking up coding for the first time, and I've banned myself from...
I count myself insanely lucky to have gone through the education system right before all this kicked off. I've recently started picking up coding for the first time, and I've banned myself from any LLMs. I can't say I would have done the same when I was younger. I remember the temptation of cheating or finding any assistive ease on homework and tests, and I cannot imagine a bigger temptation than current AI for students today. I've experienced the giant 6-pack that grows on your brain when you force yourself to learn as I've gotten older... which really isn't something you can impactfully relay to students without just sounding like you're cutting in on their convenience.
Personally I think that LLMs can still play a useful role here. But, in order to play that role, you do need a lot of self-discipline in how you use them. I do use them on a semiregular basis in...
I've recently started picking up coding for the first time, and I've banned myself from any LLMs. I can't say I would have done the same when I was younger.
Personally I think that LLMs can still play a useful role here. But, in order to play that role, you do need a lot of self-discipline in how you use them. I do use them on a semiregular basis in the process of getting started on subjects I am not too familiar with. In that process they are just a tool and not even the main tool at that, as I always tend to start with documentation, guides, and some searching for myself. I keep the LLMs on hand as tutors to explain details I might get stuck on, or to clarify something that isn't obvious from the documentation.
Basically I ask it questions aimed at making me understand what I am doing better. I rarely ask LLMs to outright generate code for me and expect it to work.
For example "I am working on X, I am encountering example Y. Is my understanding correct that Y interacts with Z through this method? If so, then why I am seeing Q here?". Then when I get an answer I'll go and look at the documentation to see if the answer helps me make it understand better.
LLMs make great rubber ducks. I’ve found that rubber-ducking for a while before asking it to write code can yield better results, since you’re adding valuable considerations and planning details...
LLMs make great rubber ducks. I’ve found that rubber-ducking for a while before asking it to write code can yield better results, since you’re adding valuable considerations and planning details to the context window up front.
In software engineering, rubber duck debugging (or rubberducking) is a method of debugging code by articulating a problem in spoken or written natural language. The name is a reference to a story in the book The Pragmatic Programmer in which a programmer would carry around a rubber duck and debug their code by forcing themselves to explain it, line by line, to the duck. Many other terms exist for this technique, often involving different (usually) inanimate objects, or pets such as a dog or a cat. Teddy bears are also widely used.
The difference here is that the LLM can respond whereas a rubber duck of course cannot.
Often when you explain an issue you will come to new insights as through explaining you think about the issue itself. That explanation can also be aimed at an inanimate object like a rubber duck
Often when you explain an issue you will come to new insights as through explaining you think about the issue itself. That explanation can also be aimed at an inanimate object like a rubber duck
Among programmers, there was an trend of people wanting to talk in order to talk through a problem they had, but by the time they had laid out the problem clearly enough to get useful feedback...
Among programmers, there was an trend of people wanting to talk in order to talk through a problem they had, but by the time they had laid out the problem clearly enough to get useful feedback from someone who didn't know anything about it they had solved the problem themselves. At about the same time, having various stylized rubber ducks around your cubicle was an amusing thing, and so "rubber ducking" was the process of using the rubber duck as the person you explain it to prior to roping in another living person who may not actually be necessary once you've properly defined the situation.
Modern rubber ducking: Writing up a forum post and then figuring out the answer right before hitting Submit. Happened just this week looking into a question I had with Debian and...
Modern rubber ducking: Writing up a forum post and then figuring out the answer right before hitting Submit.
Happened just this week looking into a question I had with Debian and unattended-upgrades configuration. Debian's unattended upgrades wiki page didn't have the exact answer, nor did web searches, so I was about to post a question to ~comp. Before posting, decided to dig a little more and flesh out my question, so I looked at the systemd apt-daily.service which led me to the well-documented /usr/lib/apt/apt.systemd.daily and found the answer I needed in the script itself.
I have a little teddy bear I was given as a kid that fills the same role. When I was working with my mother, she would often interrupt my tasks to talk through problems that she could have solved...
I have a little teddy bear I was given as a kid that fills the same role. When I was working with my mother, she would often interrupt my tasks to talk through problems that she could have solved herself through rubber ducking. So I made a little sign that says "ask the bear" and stitched it to its paws. It sat on her desk for a number of years, helping her work through problems and also letting me get my work done. It's been my most steadfast coworker.
Colleagues make excellent rubber duckies! Often enough I have started explaining an issue to one, realized the issue half way through and thanked them for being that day's rubber duck :)
Colleagues make excellent rubber duckies! Often enough I have started explaining an issue to one, realized the issue half way through and thanked them for being that day's rubber duck :)
To be honest, I just don't get tools like cursor, co-pilot or one of the many other tools that write code directly for you. Every time I try them, no matter the language or how big the code base...
To be honest, I just don't get tools like cursor, co-pilot or one of the many other tools that write code directly for you. Every time I try them, no matter the language or how big the code base is, they annoy me more than they are helpful.
Maybe it is because I notice the garbage suggestions they often give for auto-completion? But, to me, they certainly aren't productivity boosters.
I still use LLMs, on a regular basis, but more as rubber duckies that can talk back. This comment I wrote a while ago goes into detail more. I still encounter some of what the author is writing about if I am not careful. But also there I early on have corrected myself to double-check answers against documentation if it is for subjects I am not too familiar with.
I also tend to ask questions framed around explaining things to me rather than asking LLMs to do things for me. The latter is what I feel like the author has been doing, which is intellectually lazy and just asking for trouble down the line. It certainly makes me want to avoid their code as I can't imagine it is any good.
As a side note, this is also why I avoid Open WebUI and have settled on a different LLM chat interface. While Open WebUI is feature rich it also smells of frantic hurried development without much care for the fundamental basics. I've encountered several things when playing around with it that made me hesitant to host it anywhere public facing. Not to mention just basic issues in the UI like rendering HTML escape characters like < in code blocks.
LLMs at best are good tools in the hands of people who know their subject matter. Or people who recognize they are still learning something and both know to ask LLMs to explain things rather than do things for them. But whenever I follow some discussions online, see the tooling people develop it seems like there are hordes of people just blindly following the output of these things which does make me worried about the future.
For similar reasons I've settled on letting these tools sit as chat interfaces, but I turn off AI auto complete. In my experience the standard tab completion, which is usually trying to finish the...
For similar reasons I've settled on letting these tools sit as chat interfaces, but I turn off AI auto complete. In my experience the standard tab completion, which is usually trying to finish the word I'm typing with an appropriate token for that space in the language (ex. showing variable names in places variables can be used), is just way faster for me so AI completion just gets in the way.
Trying to use AI to write code has always felt like pair programming with a junior that kind of half understands the problem and now I'm going to spend more time fixing mistakes than just writing from scratch. At least with a real junior it's time well spent on teaching.
Maybe my "problem" is that I already knew what code I wanted written before I started typing but the AI can't know what's in my head. I suppose I could go beyond describing what I want solved to include how I want it solved, but that's just what code is.
Okay, this is going to be a bit of a rant.
Oh boy do I have a bone to pick with this. Of course it's realistic to work without AI. Why wouldn't it be? If your workflow has comprised of acting as a feedback mechanism for Cursor for the last year, of course you're gonna be rusty on, like, actually writing code. Or reading documentation. Or reading code. Or even thinking about how to solve problems, maybe. But you've done it before, and you can do it again. I mostly worry about the people who started programming in this environment, and may never reach the lofty goal of "being able to write code independently" as a programmer. The people who are learning how to code now and have sworn off LLMs are the people I want to hire.
I'm eternally salty about this subject because I've already felt for a long time that a lot of people I've worked with had a sort of vague relationship with correct code. Well before AI coding, I worked with software engineers who would routinely produce code that only roughly approximated their actual goal. Then coding LLMs came on the scene and turned this trickle into a flood. Great.
This one sends me. I've worked with several codebases where
Adding an AI to this mix only makes things worse. It will either give you an incorrect answer from the docs, or make up a whole new thing. And when the docs are better, and correct, why not just... read them? Before running them through a summarizer that MAY introduce incorrectness and WILL reduce detail?
I used to write docs for internal enterprise software, and still do a fair bit of technical writing. And refining it is summarizing! The goal is always to give the reader exactly the information they need, no more and no less, and the idea of readers just wood-chipping it through an AI feels insulting. Not all docs are examples of good technical writing, certainly, but at least use AI for situations like "these docs are really dense, and I just have a couple high level questions", instead of "I can't be bothered, what do you think Claude?"
Robot, experience this tragic irony for me!
If the docs are good I’ll use them 100% of the time over an LLM. Unfortunately it’s pretty routine for newer docs for iOS and Android (SwiftUI/Jetpack Compose plus a handful of newer UIKit and Android Framework APIs) to be little more than an index of classes, functions, and properties with nothing explaining any of it and/or no examples.
So at minimum I’ll have to seek out a third party source like blog posts or an SO post in those situations, and when those don’t pan out that’s when I turn to an LLM and ask it to synthesize an example.
Yep, I run into that a lot with Go packages and pkg.go.dev. They can be great, especially when you can get some information about a field or method inline with autocomplete. But you gotta have some sort of "orientation" at the package level, and ideally some examples. Without some context, and common entry points, it can be really hard to figure out where to start; I wouldn't begrudge someone for using AI for that.
The counterpoint is, code has only been "good enough" since around C++.
99% of use cases and industries do not need tight, perfect, well reasoned, well maintained code. Much like "making a program that always works" became "making a program that can quickly be killed and restarted to work" has become the new norm, I think coding is feeling the exact same pressure.
I honestly wonder if at some point we're going to hit a wall where "fuck it, do it over" will be faster than "figure out what in the ever loving fuck anyone on this project ever thought", and that was BEFORE AI hit the scene.
The simple fact is there's a very large need for coding, and there's always been a tremendous need for bridging the gap between coders and their tools. Most coding should be dead easy, and yet the ZILLIONS of API's, protocols, gotcha's, whoopsies, tech debt, new patterns, old patterns, styles, frameworks, gremlins, grey beard standards, hot new toys, I'll do it tomorrows, and god knows what else have made a mess.
Something like "hey, you know how you click and drag to move a file, well here's how you can do that in code" is a shockingly large learning leap even for someone who's a tech enthusiast (think of every gamer out there who can build their own pc, hunt google searches for days for dead threads to test their GPU, but doesn't know how to maintain a basic script).
AI, much like the GUI, is abstracting a lot of that out. I realize that for business level "no really this shit needs to work" code, that's going to be a fucking nightmare, and I'm in a roughly similar situation, but for so much more of it it's going to hit the same standards we've always had, which is "good enough".
Coders especially seem to put themselves on this pedestal of artisanal problem solvers, but honestly the vast majority of coders I've met working at major companies are just bashing out garbage and calling it a day. The good ones spend more of their time documenting and STOPPING people from writing code than they ever do actually writing.
This captures my exact feelings around AI and coding. I completely agree that AI is nowhere close to replacing a good software developer. I don't think most companies want or need good software developers. I'm an academic, but I constantly hear about the tradeoff between writing "good code" and actually making progress in your job in an industry setting. Things like "refactors are a waste of time", or "great documentation slows down a feature release schedule" or, like you said, "what we have is good enough".
Many coders do complain that these paradigms are harmful in the long-term, but that has never stopped Wall Street and business-types before.
AI doesn't need to be a great software engineer. The code AI needs to write needs to be good enough, which is actually a lower bar than an engineer's "good enough", since AI is cheaper and faster than an engineer.
Still, I actually don't think any software engineers that want to keep their job should be using LLMs as a crutch; the only ones who will survive the AIpocalypse will be those who can do something that LLMs can't.
Sometimes I’m reading some beautifully elegant leap of logic in a codebase written by a grad student a decade younger than me, trying to really understand the fundamentals that got them there, and I get a pang of imposter syndrome wondering if I ever would’ve figured it out on my own.
Lines like
are a nice reassurance that in the larger scheme of things, I’m probably doing alright after all.
Bring on the Butlerian Jihad
I keep making this joke as well, but it keeps ringing true.
Remember the joke that if Stackoverflow died, most programmers wouldn't be able to fix their code? Now LLMs are building an even greater dependence while also killing forums so you have fewer places to go when it's offline.
Humans are inherently lazy, and thinking is hard. LLMs allow you to trade mental effort for a paid service.
Our world relies on people with deep knowledge, but their numbers are small which makes their institutions fragile. We should be building deep knowledge wherever we can.
I’ve been wondering about this lately. Imagine if SO disappears tomorrow and then next week some amazing new language that the LLMs have never heard of is released. My kneejerk reaction is that LLMs will remain useless for anything in that language, in the absence of such a large volume of training data.
But I’m not so sure if that’s the case. Assuming the language is released with comprehensive docs, maybe that would be enough? If it’s OSS, could the source code also be used for training? I wonder if we have enough foundation laid already, for general comp-sci and programming principles, that a reasoning model could connect the dots itself. I think we’re past the point of needing to feed them a firehouse of code samples.
I could be totally wrong about that, but I’m generally impressed with the new models’ ability to synthesize contextual, semantic meaning that wasn’t explicitly pre-baked into the training corpus.
I just assume the new language wouldn't take off because the legions relying heavily on the AI tools wouldn't be able to learn it.
Wouldn't this mean that no new programming language will ever see widespread usage again, literally ever?
Yup. We're rapidly approaching the time when IT experts are as commonplace as wizards.
I've already started referring to Oracle documentation as "tomes."
I don't think so. I find it hard to learn a programming language from the documentation, I instead use tutorials. Sometimes those are included with the documentation, sometimes not. Frameworks especially can be hard to use until you understand how the pieces fit together, looking at them in isolation means you may not know where to look for the next step.
If there are still people creating programming languages, there will still be people creating tutorials and blog posts. There will still be people asking questions somewhere, and other people answering. LLM's will pick up that information and incorporate it, same as they do now. Before stack overflow there was expertsexchange, before that there were mailing lists and usenet.
Anyway, sometime soon someone is going to have an LLM come up with its own new language if that hasn't already happened.
People dunk on how Discord is closed and non-searchable compared to forums, and I'm occasionally one of them. I think that's a bad direction to go in, but one of the reasons to go in that direction is that your conversations aren't sucked into the LLM machine.
There is no guarantee the next LLM will have access to the open internet, nor will the open internet necessarily be as large as it currently is.
Well that's more job security for me and my legacy skillset! I kid, I kid.
I imagine there will always be devs talking to each other in various ways. Colleagues chatting at work, influencers hyping up the new hotness on their streams, etc. And the LLMs themselves may be able to recommend even a brand new language for relevant projects, assuming they have some understanding of it.
I'm skeptical that the source code of a language could be used for training on that language. It's not like an LLM would actually understand the functionality of the compiler/tooling source code it's reading and be able to translate that into how to construct code in the new language that could be compiled. The exception to that might be if the compiler and tooling for the new language was itself written using the new language, but in that case the source code would just be used to create its text prediction weights. I'm not familiar enough with LLM training to know how much source code input for a new programming language would be required to build a model that could reliably spit out syntactically correct code in that language, but I suspect it's probably a lot more than a typical compiler and project tooling alone would consist of.
Their current architecture requires lots of examples to train well, not just the source code/documentation. They need to scrape/steal from Github and StackOverflow to be good.
It's why these models are great for popular languages like Python, Rust, C++ and probably not so good at things like COBOL and FORTRAN.
Maybe there will be some change in training methods which allows them to be trained on less data, but AFAIK that's not the case right now
I'm curious how you know this? I wasn't aware of any company making their training data public?
No, that's true, I've done a lot of poking and prodding to figure out where the edges of its knowledge are but nothing rigorous. Anecdotally, I can choose two wildly random and disparate concepts that are (presumably) not explicitly connected anywhere on the web, and prompt it to find commonalities, and an LLM will find relationships that (again, presumably) have never been written about before.
Bit of a tangent in here, but I explain my understanding of how LLMs work and how that ties into my "meaning synthesis" thought... feel free to skip if you're already on the same page, or share any notes of your own if you think I'm off-base.
It's not a perfect analogy but I think of LLMs like a mind map or graphical thesaurus: a complex tangle of concepts and their relationships to one another. I imagine a 3D cloud rather than a 2D diagram because it helps me visualize the complexity better, but actual LLMs have not two or three, but billions of dimensions. No way to wrap my feeble mind around that, so the 3D cloud is the best shorthand I've got. Anyway, I picture my prompt being used to determine the starting position and direction of the response within that cloud, then nodes start lighting up rapidly as the chain of thought bounces around from one concept to another. Untouched concept nodes in proximity to the activated ones still affect the trajectory of that chain as if they have their own gravitational pull.
Many different nodes from completely distant parts of the cloud will light up in the course of the response generation, but the vast majority of nodes in the model won't be touched all. If you could map only the active, lit-up ones you'd get a picture of what the prompt+response are "about."
So I think a trick is to prompt with a couple unrelated concepts that are not "about" each other at all, whose nodes occupy disparate corners of the cloud. And the LLM will find a mathematical midpoint between them, adjusted in various ways by the gravitational pulls of the nodes it passes in its thought process. And that's how you end up in new places that were never explicitly spelled out in the training data. By drawing new connections between ideas, LLM inference allows for the synthesis of new meaning.
The models usually build off each other (one generates synthetic data for the other). For example, DeepSeek RL-1:
I stopped going to SO years ago, but I've got some experience and know how to look and read (dry) documentation.
Navigating the GitHub issues of a project always brought me better answers than what I'd find on SO.
SO became useless for me after about year 2 of my career as a software engineer. If you're working on anything remotely interesting, the problems you encounter are too complex and niche for SO to help. So far my limited experience with "AI" is that it's largely the same. Even vastly simplified questions are too nuanced for it to provide useful answers.
Both of them help immensly when you are switching the toolchain - frameworks, languages, other tools - even much later in the career.
The advantage of SO in this regard compared to AI is that if an answer is wrong or even controversial, you'll almost definitely be able to tell from the comments. The disadvantage is that you can still find quite old answers, which can be a pain if the language you're working in has been around for quite a while.
I noticed something, from the first few sentences:
The author's problem goes beyond being dependent on LLMs. They're dependent on OpenAI's service specifically, which is even more insidious, and the reason why I refuse on principle to subscribe to one of these online AI services, opting to only consider locally-run generative AI. Even if I ended up finding a usecase compelling enough to start relying on it (so far, I haven't), those, at least, would be running on my own hardware, and not become inaccessible because some random server fell over or the company I sold my soul for generation tokens decided it wasn't earning enough money and made the service worse/more expensive. The rest of the article is still relevant, but that's something I wanted to point out that the article itself didn't.
Also, at the risk of sounding flippant, becoming "dependent on AI" is a self inflicted problem. If using this technology made you take an unwise mental shortcut and you realize you lack the competence to address a problem that you should be able to handle without, you can just... go back to what you don't understand and make use of the existing learning resources to catch back up. Those didn't magically disappear when ChatGPT showed up. Either it didn't matter, or you can fix the problem yourself. There's a lot I can blame the advent of generative AI on, but "robbing you of your ability to learn" isn't on the list.
I would say that "robbing you of your ability to learn" is absolutely on the list. If you're used to asking a question and getting an answer without any fuss, you may not have the mental library of other resources to fall back on. And then you're finding yourself in the position of trusting a Google search to turn up something useful.
I'm self respecting enough to not ever learn the nooks and crannies of proprietary platform's quirks and states - I mean AWS - to not consider this exact situation a learning experience. After becoming efficient user of oracle database years ago, I promised myself to never repeat this mistake and never master another proprietary technology with so many nontransferable skill requirements.
Anyway, that was just a sidenote, what I wanted to say is that there is a middle ground between self-hosting an LLM on a local hardware and becoming dependent on a proprietary solution hidden behind a paywall and an API: you can have someone to host an Open, replacable LLM for you as a service. There are many options like this on the whole spectrum starting at GPU rental to dedicated coding-assistant services running on open models. These can allow you to go above what you can - and have energy to - run on strictly local hardware.
Yeah, there is definitely nuance to this without falling into the "buying a subscription to access OpenAI/Anthropic/whoever else's models and server farms and becoming dependent on them" issue. For example, pooling a sufficient budget to build a computer with enough GPU resources to leverage the bigger models while keeping it affordable for the individual people involved then setting it up so that each contributor can access it would be a credible option that someone likely couldn't afford on their own.
I'm starting to wonder if it would be realistic to host my own private AI server on my home network. It's not practical to have these beefy models running on my primary machine but a dedicated box running in the closet might not be awful.
Of course, once I cross that rubicon I'll inevitably be tinkering with it 24/7.
Apple Silicon is a great price for what you get in terms of efficiency for these large models right now. It might be around the same price for electricity alone to have a twice as capable laptop vs another machine + dGPU running 24/7.
I'm saying this as an anti-Apple person. There just aren't a lot of other options for consumer large-model hardware right now
Self-hosted LLMs are a situation where cloud compute can work out really nicely: you still have all the advantages of picking your own open source model, fine tuning it if you like, keeping your conversations private rather than sending them off into the giant data aggregation vortex, all that good stuff - but you also get to grab just the few seconds of GPU time you need for a given request rather than having expensive hardware sitting mostly idle (or cheap hardware sitting mostly idle but limiting you to much more basic models when you do need to use them).
That’s a great point. Renting cloud hardware would certainly be cheaper than buying my own rig. I’ve been paying for a personal DigitalOcean VPS for years but I’m not sure what their current GPU offerings are. Might be worth a look. Hopefully there’s something there, I’d rather not switch to AWS, Google, or Azure.
I'd suggest taking a look at Runpod as well, they're my go to for ad hoc GPU stuff nowadays. They tend to be cheapest (especially "community cloud" instances, which is them soaking up excess capacity from other organisations that own hardware but aren't using 100% of it at that moment) and there's a lot less enterprise-y cruft to deal with than the big three - pretty much just choose or upload a container and hit go.
I haven't tried their serverless product specifically (I tend to use them for burst capacity on larger training runs rather than quick inference calls), but it's pretty much what I was thinking of above: your machine image floats in the aether until you make a call, and then grabs a GPU just for the duration.
Oh that sounds like just what I need! I peeked at DO’s pricing earlier and there’s probably some nuance or optimization I’m missing but this looks like it’s intended for production use with minimal downtime. Way out of my budget. Something more a la carte is what I need for my negligible household usage. The main thing is I want some flexibility with models. DO has a handful of 1-click solutions for llama or sonnet. But I’d like to run deepseek and stable diffusion, which aren’t offered pre-configured.
Almost exactly 4 years ago here on Tildes, I was saying this about bookkeeping. As automation advances, the amount of training it takes a person to compete with an automated system continues to rise, until there's not enough useful lifespan for a worker to recoup the cost of the required education. Less than a decade ago, people were still saying to switch to being a programmer to have a good life, and now that's fading as an opportunity too. What hope do people have of making long term plans when everything is changing so quickly?
I think there will continue to be opportunity for a decent life in programming, but the bar is raising. The positions impacted most will be those that do things like hack on existing React projects, at most building small widgets but never anything bigger or more complex.
The capabilities of LLMs rapidly degrade beyond that point. While you can technically build a functional app using one, the result is likely to be filled with spaghetti and that will only get worse as poorly built LLM-generated components get bolted on and will be increasingly difficult to extend or maintain.
As noted elsewhere in the thread, LLMs are only “good” at the most common languages and frameworks. Ask it about developing drivers and firmware for example and it’ll stumble around a great deal more than it will if you’d asked about a React app.
So for now, I’d say that anybody who’s not an entry level web dev is ok. That means it can be difficult to break into the industry, but that’s been true since at least 2017 or 2018 anyway… even before LLMs demand for newbie web devs had bottomed out simply because supply had become so high.
Four years ago, the bookkeeping tools were only good at the simplest problems. They're better now. Whether the same timeframe will apply to software development or not, the general arc is the same. The fundamentals of training a skilled populace haven't failed... yet.
This discourse always reminds me of Socrates’ thoughts on the potential harms of writing.
He wasn’t exactly wrong either, look at how certain religious texts have been twisted and used to control the “simple-minded”. But just because his fears were correct in some ways, doesn’t mean it’s all downside or even that the downside you can see will be worse than the potential upside.
So I don’t really disagree that some people will become overly reliant on AI, but I don’t think that tells the whole story of what the future will be.
I've been thinking about that and the timeline of big changes I remember throughout my career.
Larry Wall, 1999 (creator of the Perl programming language)
I remember folks saying that IDE's were ruining programmers, they couldn't work without them. My first programming teacher in college had us use Notepad to write Java so we couldn't "cheat" by having the IDE do the work for us. It's true that I would find it incredibly difficult to use Spring without automated imports, which even VIM can do now.
Stack Overflow was the next thing I heard was going to ruin programmers, as others have mentioned.
This may or may not be the beginning of another of those shifts. I haven't been impressed enough by anything I've used to be sure of that. The main new thing is that you can declare what you want and get a snippet of what works generated, then you can fix it, then customize it. That may save time or it might be a frustrating waste of time, depending on the quality of what it gives you and how well you know what to do for customization.
In my experience this isn't really a message that the majority of developers want to hear, even though it seems trivially obvious if you think about it even a little bit. I think the arguments seem to boil down to a couple points (hopefully I'm not straw-manning here, it's based on feedback I got on a similar article I wrote a while ago):
It doesn't matter, because AIs will become so good at programming that it will just become the "new normal," kind of like how we don't need blacksmiths or horse-and-buggy drivers anymore, we won't need human programmers anymore.
It's a tool no different from a better IDE or syntax highlighting or autocomplete--it will actually make us better programmers because we can more easily churn out the trivial stuff and just focus on the actual problems that need solving.
The first one just makes me a little sad. I think it's extremely optimistic and unrealistic to expect that LLMs will 100% replace software engineers, but instead it's going to transform software engineering into a different (worse IMO) job where instead of writing code you'll just be reviewing it--spending all your time testing, debugging, and tweaking LLM output.
The second one was the most popular response. I can understand where they're coming from, but I think LLMs are fundamentally different from the other tools and assists we've gotten to this point in that it can completely remove the need for beginner programmers to write or understand code at all. Part of the thing that makes a good programmer is becoming familiar with fundamental concepts when you're first starting out, but if you leap frog over that step by having an LLM do that stuff for you, you're never going to get a grasp on those fundamentals, which eliminates (or at least severely hurts) your chance of ever advancing your skill.
My work let us use Copilot so I used it for a month or two last year and it honestly didn't do anything that snippets + an LSP server can't do already, which is what makes this so weird to me. I mean, yeah, it can autogenerate boilerplate but we already have tools for that. Anything more complex than that didn't really work and, even if it did, I'd have to double check the entire thing anyways because it's AI-generated.
Do you work with web technologies? It's far better than a snippet library when setting up a React page. I really like how it solves the "blank page problem".
I do not. I almost exclusively write C code for the dataplane of enterprise IPS appliances. I suppose it could actually be useful when working on our Python test suites, but I haven't written anything for those in a while.
It isn't just programmers that will end up illiterate, apparently kids from middle school and on are using it whole sale to do their homework and write their essays. I don't know what the future holds, but I don't have high hopes.
I’ve always felt that homework is a bandaid solution for having too many students per teacher anyway. If your teacher is excellent and has enough time to work one on one with students to identify where they’re falling short, homework just seems to be a waste of everyone’s time to run drills of what’s already being learned.
I mean, practice takes time. A teacher doesn't possibly have enough time with the student for them to get all the practice they need to master skills.
Maybe you could say graded homework is a waste of time, but the reality is that many students aren't so intrinsically motivated.
Agreed; that’s a good callout. One of my favorite classes in HS (AP writing & composition) was one where the teacher weighted homework extremely low - it was still graded, but it was something like 10% of the final semester grade. The in-class discussions and final projects were worth a lot more. But our teacher’s logic was that if we knew the material, she’d rather we didn’t spend a ton of time drilling something arbitrarily and should instead focus on other classes, or specific areas of weakness. The low weighting meant that kids could skip it without fear of their grade absolutely tanking, but if they didn’t understand the material (or needed a small grade boost), they could do the homework.
The approach paid off, IMO. I only ever did homework in that class that I felt would truly help me, and finished that class with a C+, but I got a 5 on the AP exam and it saved me the cost of that college enrollment. Plus, it meant much more time for classes that DID put a lot of weight on homework (and/or classes that I simply needed to spend more time drilling).
I agree with that for everything that doesn't build math skills. Drilling history dates is not the same as drilling calculus.
While I partly agree with you, I think this is overly pessimistic.
I remember being taught how to use the card catalog and various reference works as methods of finding other material on a topic. Now you just google that shit (or JSTOR or whatever) and you have more sources and resources than you can even read.
People used to say similar things about Wikipedia, but it remains a pretty good (and importantly free) source for much of human knowledge.
My mom will make much out of the difficulties of writing papers on a typewriter, of doing corrections and footnotes, of retyping drafts. A whole skill set that is (thankfully) obviated by word processors.
All of these technologies fundamentally change the way research is done. I think AI will be similar. Right now, we are in the chaos of disruption, but we (as a society) will settle to a "new normal" that finds ways to take advantage of the strengths of technology and mitigate its weaknesses.
I don't know about highschool but at least some university instructors are switching to oral presentations and in person hand written examinations
It's not a solution, I suppose, but it would be helpful if educators made more of an effort to communicate to their students the actual purpose of the various exercises they are assigned. A lot of kids have spent their entire academic careers effectively being told that the point is to get an A, rather than, for instance, to learn how to research a topic and write a document laying out their findings.
There have always been gaps in people's knowledge and maybe more of that now that you could get away with not knowing in more situations. But I don't see how programmers who don't know what they're doing would get past typical coding interviews without knowing something about programming?
More generally, I don't think there's much consensus on what programmers need to know versus look up as needed.
Depends on the interview, but the common FAANG “code golf”/“parlor trick” style interview is so far diverged from doing actual programming work that I could absolutely see someone drilling that style of question long enough to get good at them, be able to pass the interview and get hired, and then not be capable of the job.
“When a measure becomes a target, it ceases to be a good target”
Those parlour trick coding questions may have been a good measure initially, until they became famous (infamous?) and people could practice for explicitly that style of question.
I count myself insanely lucky to have gone through the education system right before all this kicked off. I've recently started picking up coding for the first time, and I've banned myself from any LLMs. I can't say I would have done the same when I was younger. I remember the temptation of cheating or finding any assistive ease on homework and tests, and I cannot imagine a bigger temptation than current AI for students today. I've experienced the giant 6-pack that grows on your brain when you force yourself to learn as I've gotten older... which really isn't something you can impactfully relay to students without just sounding like you're cutting in on their convenience.
Personally I think that LLMs can still play a useful role here. But, in order to play that role, you do need a lot of self-discipline in how you use them. I do use them on a semiregular basis in the process of getting started on subjects I am not too familiar with. In that process they are just a tool and not even the main tool at that, as I always tend to start with documentation, guides, and some searching for myself. I keep the LLMs on hand as tutors to explain details I might get stuck on, or to clarify something that isn't obvious from the documentation.
Basically I ask it questions aimed at making me understand what I am doing better. I rarely ask LLMs to outright generate code for me and expect it to work.
For example "I am working on X, I am encountering example Y. Is my understanding correct that Y interacts with Z through this method? If so, then why I am seeing Q here?". Then when I get an answer I'll go and look at the documentation to see if the answer helps me make it understand better.
LLMs make great rubber ducks. I’ve found that rubber-ducking for a while before asking it to write code can yield better results, since you’re adding valuable considerations and planning details to the context window up front.
This Wikipedia entry explains it pretty well.
The difference here is that the LLM can respond whereas a rubber duck of course cannot.
Often when you explain an issue you will come to new insights as through explaining you think about the issue itself. That explanation can also be aimed at an inanimate object like a rubber duck
Among programmers, there was an trend of people wanting to talk in order to talk through a problem they had, but by the time they had laid out the problem clearly enough to get useful feedback from someone who didn't know anything about it they had solved the problem themselves. At about the same time, having various stylized rubber ducks around your cubicle was an amusing thing, and so "rubber ducking" was the process of using the rubber duck as the person you explain it to prior to roping in another living person who may not actually be necessary once you've properly defined the situation.
Modern rubber ducking: Writing up a forum post and then figuring out the answer right before hitting Submit.
Happened just this week looking into a question I had with Debian and unattended-upgrades configuration. Debian's unattended upgrades wiki page didn't have the exact answer, nor did web searches, so I was about to post a question to ~comp. Before posting, decided to dig a little more and flesh out my question, so I looked at the systemd
apt-daily.service
which led me to the well-documented/usr/lib/apt/apt.systemd.daily
and found the answer I needed in the script itself.I have a little teddy bear I was given as a kid that fills the same role. When I was working with my mother, she would often interrupt my tasks to talk through problems that she could have solved herself through rubber ducking. So I made a little sign that says "ask the bear" and stitched it to its paws. It sat on her desk for a number of years, helping her work through problems and also letting me get my work done. It's been my most steadfast coworker.
Colleagues make excellent rubber duckies! Often enough I have started explaining an issue to one, realized the issue half way through and thanked them for being that day's rubber duck :)
To be honest, I just don't get tools like cursor, co-pilot or one of the many other tools that write code directly for you. Every time I try them, no matter the language or how big the code base is, they annoy me more than they are helpful.
Maybe it is because I notice the garbage suggestions they often give for auto-completion? But, to me, they certainly aren't productivity boosters.
I still use LLMs, on a regular basis, but more as rubber duckies that can talk back. This comment I wrote a while ago goes into detail more. I still encounter some of what the author is writing about if I am not careful. But also there I early on have corrected myself to double-check answers against documentation if it is for subjects I am not too familiar with.
I also tend to ask questions framed around explaining things to me rather than asking LLMs to do things for me. The latter is what I feel like the author has been doing, which is intellectually lazy and just asking for trouble down the line. It certainly makes me want to avoid their code as I can't imagine it is any good.
As a side note, this is also why I avoid Open WebUI and have settled on a different LLM chat interface. While Open WebUI is feature rich it also smells of frantic hurried development without much care for the fundamental basics. I've encountered several things when playing around with it that made me hesitant to host it anywhere public facing. Not to mention just basic issues in the UI like rendering HTML escape characters like
<
in code blocks.LLMs at best are good tools in the hands of people who know their subject matter. Or people who recognize they are still learning something and both know to ask LLMs to explain things rather than do things for them. But whenever I follow some discussions online, see the tooling people develop it seems like there are hordes of people just blindly following the output of these things which does make me worried about the future.
For similar reasons I've settled on letting these tools sit as chat interfaces, but I turn off AI auto complete. In my experience the standard tab completion, which is usually trying to finish the word I'm typing with an appropriate token for that space in the language (ex. showing variable names in places variables can be used), is just way faster for me so AI completion just gets in the way.
Trying to use AI to write code has always felt like pair programming with a junior that kind of half understands the problem and now I'm going to spend more time fixing mistakes than just writing from scratch. At least with a real junior it's time well spent on teaching.
Maybe my "problem" is that I already knew what code I wanted written before I started typing but the AI can't know what's in my head. I suppose I could go beyond describing what I want solved to include how I want it solved, but that's just what code is.