The kind of things that LLMs can make without tremendous amounts of hand holding... Are they the kind of projects that you like to write code for?
I became a programmer because I want to explore the edge of what's possible. I'm finding it still satisfying when I'm doing it via LLM. They're only good at spitting out entire projects when those projects resemble many that already exist.
Beautifully put. I'm about as excited for LLMs as an artist would be for a robot that can paint. I know a lot of people out there can't imagine actually enjoying programming though.
One does not have to be a carpenter to have furniture, and one does not have to become a software engineer to get computers to do things.
Unless you are into it, you’ll realize that it’s quite a grind and your time is much better spent getting somebody who is into it (and thanks to that became an expert to it) get computer to do what you want faster and better.
There’s nothing wrong with trying it, if anything to find out whether you are into it or not in the first place. If you stick to it, chances are you are into it—just like you don’t become a carpetner simply because you want to have furniture: perhaps that’s one of your initial impulses, but you are also mentally compatible with the process and tick some other boxes.
On that note, what does it mean to be “into it” when it comes to programming? What is a “good” reason to become a software engineer? To me, it’s about the inclination to tinker, the eventual payoff of the dopamine rush from seeing puzzle pieces fall together, and the desire to own the process, do things by yourself even as you stand on the shoulders of giants.
Between these things, LLM-driven development strikes me as somewhat weak on tinkering (there may be some, but less, and much less precise and deterministic), and very weak on the desire to do things by yourself. Of course, that shouldn’t invalidate anyone’s personal experience.
For me it is both. I love certain kinds of programming, and don't enjoy other kinds. I'm naturally very good at some kinds, and not good at other kinds, despite putting in enormous effort.
I guess ideally I'd get a job that is perfectly aligned with this profile (a work in progress!), but AI allows me to deal with the reality I have now in a much more pleasant and productive way.
Careful with the productivity claims, there's plenty of research showing that perspective is usually a distortion of some kind. Which makes sense, you have someone at your shoulder constantly reassuring you and bubbling ideas; I can see how it feels productive. Many report feeling more stressed, because the spaces where they used to think are no longer there.
For what it's worth, collecting new problems to solve is actually the main fuel for improving the AIs, so if GenAI becomes good at creating problems, which it can iterate on tackling, then there's a flywheel going.
I'm at the tail end of a lifetime career of software development, and the way I've come to understand it is that I largely enjoy it because it lets you conjure dreams into reality - really a kind of superpower given how abstract and arbitrary those dreams can be. I used to think that "We are the gods of the digital age" would be a cool business card logo, although I doubt it would go down too well!
The other part of the job/hobby that I've always found enjoyable is in striving for "perfectly" minimal/clean designs where the code reads more like functional requirements than messy implementation detail. You look at the code and it is obvious that nothing can be taken out, and no more minimal implementation is conceivable. A bit like an impressionist painting perhaps, where every brush stroke counts, and all you are left with is the essence of the thing being captured. I would proudly consider myself to be a hardcore geek, but there is no doubt an aesthetic/artistic component to software done right, a goal you know has been achieved when at the end of a project you re-read the code and gloat over how beautiful and minimal it is!
This part of the satisfaction of software development will sadly be disappearing as the role of coding is taken over by AI, but perhaps there will still be some satisfaction in minimal design, if not in minimal implementation.
I became a computer programmer because I was frustrated “the computer” (i.e. other people’s programs) didn’t do things exactly as I wanted them. That could mean current solutions didn’t do it efficiently, or correctly, or maybe it was just different from what I wanted. In other words, I did it for the same reason as you: to get the computer to do things.
But I, on the other hand, do not find LLMs “incredibly exciting”. Maybe I’m the odd one here, but one of my requisites for getting the computer to do things is for it to do them correctly and efficiently. It needs to do the thing I want, and do it right. But it should also not waste my time and other worldly finite resources doing it. LLMs fail at both, and as such (for me) they don’t make it easier to make the computer do things, they make it more frustrating.
Worse is that now I have to deal with the increasing torrent of shit code that’s being put out by people with zero care or understanding for what they do. Meaning that now I’m being bitten even more frequently, and it’s just a matter of time before I’m affected by an unnecessary, incompetent, and wholly avoidable error. Not to mention the increased spread of misinformation, lies, surveillance, spam, and phishing, all while wasting earthly resources we do not have the luxury of spending right now.
I started on computers because I wanted to do stuff (photo manipulation and 3d modelling) and then I was fascinated by how to get the computers to do stuff (games and scripts). But just like you, I want things to be done correctly and efficiently.
Coding for me is more reading than typing, because any time I'm not exactly clear on the code I want to write, it's because there's some aspects of the problem or the tools to solve it that I do not grasp well. So, I usually have a lot of documentations around me for the stuff I'm working on. And that means I don't like LLM for that, because there's no clear signal for wrongness.
And when I'm clear on the code to write and I find it tedious, that usually means that it's time to abstract away the tediousness. LLMs won't help with that, because it's more of a perspective shift than a clear methodology.
LLMs, in its current forms of offering, is like asking a random stranger in a bar. They may know the answer or not. They may give you an incoherent answer even if they know or fabricate stuff when they don't know. But there's still a plus, is that you may still get "I don't know" or silence instead of a wrong answer. Like getting an empty list when making a web search. Which is a good signal by itself.
Neither LLMs nor popular search engines return "I don't know" often enough. They will waste your time with bad approximations to an answer instead. But as you say, "the thing you're asking for might not exist" is useful information, and lets you make faster progress with your guessing, so this compulsion to always supply an answer just slows down the process of getting to a good one.
I use my history as mich as I use a search engine at this point. For work stuff, I just bookmark docs. I also use specialized sites for some search sessions (reddit, hn, npmjs, oreilly,…)
This is how I feel about it too. I got into programming because I liked making software that did interesting things for me. I enjoyed learning new languages and techniques to improve my programming skills to make software better, larger, faster, but after having been doing this in some capacity for 30 years, I find I'm often doing the same things to create these solutions, so I'm not necessarily learning new things all the time. The typing out the code part becomes something that just has to be done to get to the solution, but doesn't necessarily make me better or bring me joy.
Using AI has been exciting because I can now just focus on designing the user experience and architecture at a high level and do less of the typing out stuff by hand. I still have to steer it in the right direction, though, because it does make mistakes but it does beat just typing it out by hand.
Why are you not using a snippet manager? It is significantly faster than an LLM, it’s local, consumes far fewer resources, and actually returns a correct version of what you want based on your knowledge.
But there's no screenshots or example usages, and it's not obvious to me how it works.
Is it like a local search engine you install? Is it an LSP? An LSP that's lighter than rust-analyzer could be useful for this kind of thing.
Edit: I searched for "What is a snippet manager" and DDG search returned a bunch of useless-looking listicles, but their AI actually told me and linked to an article explaining it: https://www.codiga.io/blog/code-snippet-definition/
Edit 2: I guess it's meant to be used as a VS Code extension. It might work as a standalone app but it would be a little unwieldy. I don't think my favorite text editor has a web view built in, so I couldn't install massCode in there
> I guess it's meant to be used as a VS Code extension. It might work as a standalone app but it would be a little unwieldy.
I prefer it as a standalone app. I don’t use VSCode nor would I want integration with my text editor. Snippet managers generally have ways of being invoked from anywhere, or you can type a few characters and have them replace the text, or you can search them from launchers like Alfred.
Thanks for the suggestion. I don't use LLMs for everything and do still copy-paste a lot from existing projects where I have an established pattern.
LLMs can be a lot faster if you're tossing together an initial prototype with a lot of UI. I could type it all out or copy-paste bits and pieces, but just giving a few sentences of what I want and letting it go build is much faster.
You don’t need to copy and paste manually. Snippet managers allow you to search for what you want and paste directly, or even type a few characters and have the text automatically replaced.
There is no LLM which could ever be faster than a well-configured snippet manager for stuff you’ve done before. Not to mention you won‘t get random bad text thrown at you.
So you’re just a user. You don’t have to be a computer programmer to make computers do things and computer science isn’t even about doing things.
Some will go into computer science to push the limits of what is possible. That takes a rigorous understanding of the science, not just throwing stuff into an AI.
I’m not a programmer because I wanted to program.
Thus AI is incredibly exciting to me because it makes it easier to make computers do things.