I got into programming because it let me turn thought into reality. If I could reason precisely, then a computer could carry out my thoughts unerringly. I could step away from tiring, ambiguous human interaction for a while.
Over time, I warmed up to people. The most fun I've had in my career has been watching my colleagues improve. Handing them projects just outside the range of their abilities, and giving them an environment where they were unafraid to fail.
Today, I consult with several companies on all aspects of building software. Sometimes, that means thinking through product direction and building a team to execute on it. Sometimes, it means designing system architecture and writing code.
I would not be doing my duty to my clients if I wasn't able to guide them on the effective use of LLMs. So I, through gritted teeth, regularly use LLMs for projects.
Some people describe LLMs as the ultimate programming tool. Others describe it as an extra machine teammate. It's a dark parody of both.
LLMs are not fun.
For me, the joy of programming is understanding a problem in full depth, so that when considering a change, I can follow the ripples through the connected components of the system.
The joy of management is seeing my colleagues learn and excel, carving their own paths as they grow. Watching them rise to new challenges. As they grow, I learn from their growth; mentoring benefits the mentor alongside the mentee.
Using LLMs undercuts both.
On the engineering side, using LLMs to write code is as fun as hiring a taskrabbit to solve my jigsaw puzzles. And if you think of LLMs as an extra teammate, there's no fun in managing them either. Nurturing the personal growth of an LLM is an obvious waste of time. Micromanaging them, watching to preempt slop and derailment, is frustrating and rage-inducing.
I can make effective use of LLMs. It merely costs me my care for my craft, and my joy in its practice.