← Back to context

Comment by qsort

4 days ago

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.

    • To make a limping analogy, writing a novel actually requires the writing process. You can instruct an LLM to write prose, but the result won't be the same. I do a lot of thinking by coding, by looking up existing parts of the code base, library documentation and such, to decide how to best combine things, to determine what edge cases have to be solved and implementation decisions to be made. Once I know how things fit, I'm already halfway done. And it's usually more fun to do the rest myself than to instruct the LLM about all the details of the solution I have in mind. There are cases where using the LLM makes sense for truly tedious parts, of course, but it's not the majority of the work.

      1 reply →

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