I don’t think LLMs are making you lazy

Here’s a topic that feels like it comes up every single day: someone will ask something like:

Am I forgetting how to code? Are LLMs making me lazy?

Nope!

…At least, with some qualification:

The people that I know that are successful with using LLMs to generate code are the ones that are dictating the patterns for how that code should be generated; the shape and structure of that code. They’re intervening when the LLM inevitably generates code that is functional but takes the wrong shape for their personal taste or organizational goals that were outside of the context of the LLM. They’re refining as they go, baking in these decisions in documentation and golden samples that LLMs can use to generate “better” code in the future (at least, for their idea of better.)

Just because you’re not the one physically writing the code, doesn’t mean you should forget what good code looks like, if you already have strong taste in this area. Taste is like riding a bike: if you took a five year break from programming, I bet you wouldn’t lose the ability to skim code and see things that offend your sensibilities, or at least make you curious and want to dig in more.

I admit that I don’t remember how to reverse a binary tree, but I don’t think that’s because I use LLMs: I’ve only had this memorized approximately twice, and always for a brief amount of time to prepare myself for the ritual of solving leetcode problems to convince other people that they should pay me to write a different type code. The type of work that I do does require command of data structures and algorithms, but I think the vast majority of us are in a position where the work we do is mostly software plumbing, and we’re not solving truly difficult computer science problems, but instead solving difficult user problems by representing process and a good experience with code.

I’m still going to keep doing Advent of Code, but this isn’t what the work I do looks like anymore.

I haven’t forgotten how to use my code editor of choice; these keyboard shortcuts are burned into my memory like the subconscious actions of driving a car. But I now only open my editor when something has gone wrong, which is something to be avoided. I understand that some folks might view the time they spent on the tools that now might, uncharitably, feel obsolete, but I don’t think that’s wasted effort; you learned the skills that you can use to mentor junior engineers and set up the guardrails that will make LLM-generated code closer to the target.

If you personally feel like you’re losing skills because of the way you use LLMs, interrogate that:

  1. Is it because you’re not guiding the LLMs as much as you could be, accepting code when it doesn’t meet your standards for the code you like?
  2. Is it because you’ve stopped talking to people about the things you like about code at all?
  3. Is it because, earlier in your career, you had to do a lot of learning to stay current, and you’re no longer investing that time?

For each of these, are they problems you should solve, or changes you should learn to accept?

Either answer is probably fine. For me, though, I’m going to go out of my way to make sure I’m solving any problems that come up for all three.