Comment by voidUpdate
4 days ago
Why do people enjoy going to the gym? Those weights have already been lifted a thousand times.
I enjoy writing code because of the satisfaction that comes from solving a problem, from being able to create a working thing out of my own head, and to hopefully see myself getting better at programming. I could augment my programming abilities with an LLM in the same way you could augment your gym experience with a forklift. I like to do it because I'm doing it. If I could go "give me a working compiler for this language", I wouldn't enjoy it anymore, because I've not gained anything from it. Obviously I don't re-implement a dictionary every time I need one, because its part of the "standard library" of basically everything I code in. And if it isn't, part of the fun is the challenge of either working out another way to do it, or reimplementing it.
We are talking past each other here.
Once I solved an Advent of Code problem, I felt like the problem wasn't general enough, so I solved the more general version as well. I like programming to the point of doing imaginary homework, then writing myself some extra credit and doing that as well. Way too much for my own good.
The point is that solving a new problem is interesting. Solving a problem you already know exactly how to solve isn't interesting and isn't even intellectual exercise. I would gain approximately zero from writing a new hash table from scratch whenever I needed one instead of just using std::map.
Problem solving absolutely is a muscle and it's use it or lose it, but you don't train problem solving by solving the same problem over and over.
> Solving a problem you already know exactly how to solve isn't interesting and isn't even intellectual exercise.
That isn't typically what my programming tasks at work consist of. A large part of the work is coming up with what exactly needs to be done, given the existing code and constraints imposed by technical and domain circumstances, and iterating over that. Meaning, this intellectual work isn't detached from the existing code, or from constraints imposed by the language, libraries and tooling. Hence an important part of the intellectual challenges are tied to actually developing and integrating the code yourself. Maybe you don't find those interesting, but they aren't problems one "already knows exactly how to solve". The solution, instead, is the result of a discovery and exploration process.
Yeah but this is exactly why using LLMs doesn't actually preclude problem solving. You still have to do all these things. You just don't have to physically type out as much code.
2 replies →
If I'm having the same problem over and over, I'll usually copy the solution from somewhere I've already solved it, whether that be my own code, or a place online where I know the solution is
Yeah. LLMs make this a lot easier, is the thing.
I think this is a good analogy! But I draw a different conclusion from it.
You're right that you wouldn't want to use a forklift to lift the weights at a gym. But then why do forklifts exist? Well, because gyms aren't the only place where people lift heavy things. People also lift and move around big pallets of heavy stuff at their jobs. And even if those people are gym rats, they don't forgo the forklift when they're at work, because it's more efficient, and exercising isn't the goal, at work.
In much the same way, it's would be silly to have an LLM write the solutions while working through the exercises in a book or advent of code or whatever. Those are exercises that are akin to going to the gym.
But it would also be silly to refuse to use the available tools to more efficiently solve problems at work. That would be like refusing to use a forklift.
Different strokes for different folks. I have written crud apps and other simple implementations thousands of times it feels like. My satisfaction is derived from building something useful not just the sale of building.
> Why do people enjoy going to the gym?
Do they? I would assume that the overwhelming majority of people would be very happy to be able to get 50% of the results for twice the membership cost if they could avoid going.
If you pay twice the membership, they provide you a forklift so you can lift twice the weight. I prefer to lift the weight myself and only spend half as much
Obviously I was referring to a hypothetical option where it's still your body that get stronger. Sticking with this metaphor - I don't care about the weights going up, but rather about my muscles getting stronger, and if there were an easier and less accident-prone way to do that without the weights, then I would take it in a heartbeat.
And going back to programming, while I sometimes enjoy the occasional problem-solving challenge, in the vast majority of time I just want the problem solved. Whenever I can delegate it to someone else capable, I do so, rather than taking it on as a personal challenge. And whenever I have sufficiently clear goals and sufficiently good tests, I delegate to AI.
I suspect you are in the vast minority. Most folks are moving weights around for the result feedback, the fitness. Similarly, a lot of engineers are writing code to get to the end result, the useable product. Not writing code to be writing code.
OK. Be honest. If you had to write an argument parser once a week, would you enjoy it?
Or extracting input from a config file?
Or setting up a logger?
Complex argument parsing is something that I'd only generally be doing in python, which is handled by the argparse library. If I was doing it in another language, I'd google if there was a library for it, otherwise write it once and then copy it to use in other projects. Same with loggers.
Depends on how I'm extracting input from a config file, what kind of config file, etc. One of my favourite things to do in programming is parsing file formats I'm not familiar with, especially in a white-box situation. I did some NASA files without looking up docs, and that was great fun. I had to use the documentation for doom WAD files, shapefiles and SVGs though. I've requested that my work give me more of those kinds of jobs if possible, since I enjoy them so much
> Complex argument parsing is something that I'd only generally be doing in python, which is handled by the argparse library.
Yes, I'm referring to argparse. If you had to write a new script every few days, each using argparse, would you enjoy it?
argparse was awesome the first few times I used it. After that, it just sucks. I have to look up the docs each time, particularly because I'm fussy about how well the parsing should work.
> otherwise write it once and then copy it to use in other projects. Same with loggers.
That was me, pre-LLM. And you know what, the first time I wrote a (throwaway) script with an LLM, and told it to add logging, I was sold. It's way nicer than copying. Particularly with argument parsing, even when you copy, it's often that you need to customize behavior. So copying just gets me a loose template. I still need to modify the parsing code.
More to the point, asking an LLM to do it is much less friction than copying. Even a simple task like "Let's find a previous script where I always do this" seems silly now. Why should I? The LLM will do it right over 95% of the time (I've actually never had it fail for logging/argument parsing).
It is just awesome having great logging and argument parsing for everything I write. Even scripts I'll use only once.
> Depends on how I'm extracting input from a config file, what kind of config file, etc. One of my favourite things to do in programming is parsing file formats I'm not familiar with, especially in a white-box situation.
JSON, YAML, INI files. All have libraries. Yet for me it's still a chore to use them. With an LLM, I paste in a sample JSON file, and say "Write code to extract this value".
Getting to your gym analogy: There are exercises people enjoy and those they don't. I don't know anyone who regularly goes to the gym and enjoys every exercise under the sun. One of the pearls of wisdom for working out is "Find an exercise regimen you enjoy."
That's a luxury they have. In the gym. What about physical activity that's part of real life? I don't know a single guy who goes to the gym and likes changing fence posts (which is physically taxing). Most do it once, and if they can afford it, just pay someone else to do it thereafter.
And so it is with programming. The beauty with LLMs is it lets me focus on writing code that is fun for me. I can delegate the boring stuff to it.
1 reply →
These are the kinds of things I tend to write a library for over time, that takes care of the details that remain the same between use cases. Designing those is one interesting and fulfilling part of the work.
That's all fine and good, but there is always boilerplate that you can't design away.
Even the most succinct cli command definition and argument parsing library you could devise is going to require a bunch of option name definition.
It's just a fool's errand to think you can stamp out everything that is tedious. It's great that we now have tools that can generate arbitrary code to bridge that gap.
2 replies →