For roughly the last six to nine months, LLMs and coding agents have been terrifyingly useful, and it's clear that the joy of old-school programming is getting squeezed out. I still find enjoyment in my work through the challenges of architectural decisions, mentoring, and figuring out what is important to build. A part of me misses the rewarding feeling of typing out the code to solve a problem, though. In some ways, coding agents are motivating because it feels easier to build more ambitious things, but they also have lessened my motivation to do fun, old-school, AI-free programming. So how do we reframe the situation to restore that motivation?

Programming to build understanding

The most obvious argument to restore motivation is to say that human-first programming is the only way to build an understanding of the software system you are working on. Therefore, we must return to old-school programming before our codebases turn into unmaintainable disasters. I think there is a kernel of truth in this argument, but it's not strong enough to move professional software engineering back to old-school programming. It's true that writing the code by hand will give you a deeper understanding of the system than using coding agents, but that understanding can be forgotten, and
LLMs are powerful explanatory tools that can help you build enough understanding to be able to continue working on a system. Based on my experience leading a small team in the last 6 months, software engineering can productively continue when engineers have less understanding of the codebase than the theoretical maximum. Codebase understanding is critically important, but trading some of it off for development velocity is sometimes worthwhile. Isn't trading understanding of details for speed one definition of working at a higher level of abstraction anyway?

This argument alone is not powerful enough to fully restore my motivation to do AI-free programming.

Programming as art

A common refrain is that hand-coding has become an artistic endeavor akin to woodworking or blacksmithing. The things produced by those activities can now be made in a factory or on an assembly line, so most people participating in those activities don't make a living from them. The term "Software Factory" seems to be based on this analogy. If we grant that most economically valuable code will be output by LLMs going forward, and professional software engineering stabilizes around the workflow of orchestrating coding agents, then a motivation to express oneself could survive as a reason to do old-school programming.

For me personally, a need for artistic expression doesn't drive me to do hand-programming outside of work.

Programming as chess

Computers are way better at chess than the best human players, but chess still thrives, and humans continue to play. Being the best human player still matters, and studying the way machines play has yielded interesting insights into the game. There's a decent argument that we're entering a similar era for programming, at least for writing programs to solve well-specified problems. Will AI-free competitive programming survive? Time will tell, but the broader lesson might be something like: being a good human programmer still matters because it allows you to study and learn from what machines do and translate it into human-understandable concepts. This is similar to what the role of human mathematicians might become.

This argument hits me harder than the previous two, but it's still not enough to fully restore my motivation to do AI-free programming.

Programming for the joy of learning

I program not for the resulting software, but for the reward of learning new ideas during the process of building it. For me, this is the good stuff. This is what is motivating me to do hand-coding again. Earlier in my life, this joy of learning while programming showed up naturally while doing my job. I consider myself lucky to have had almost a decade of doing old-school programming in my career, but my job is considerably different now. And that's okay. But the joy of programming to learn for learning’s sake is still possible, and that's what is motivating me to come back.