My goal is to persuade you that, if you write code, you should use AI to help you. Here’s why.
You want to be productive, and AI makes you more productive
Your life as an engineer has two parts.
First, you build software. You want to ship features. Earn money.
Second, you work at getting faster at building software. You want to ship more features. Earn more money.
So, you’ve dedicated at least part of your career to getting faster. You’ve switched to TypeScript. You’ve learned to plan an architecture. You’ve set up IntelliSense. You’ve learned some educational psychology. You’ve read books on software design.
You’ve invested time in getting faster. You’d certainly take advantage of a new way of getting faster.
Especially one that outstrips all the others.
I’ve helped build well-known products. I’ve taught programming. I’ve been a professional programmer for twenty years. A year ago, I started using AI to help me program. My productivity has increased more in the last year than it has in the previous nineteen.
Programming with AI feels good
Building software with AI feels better than building without. Let me tell you about it.
Sculpting with a collaborator
I was adding a new sub-system to an app. This sub-system needed to wrap another system without creating a nest of couplings. I sketched out a few approaches, but each had problems. So I asked Cursor’s chatbot how it would structure things. It gave me a nicely de-coupled solution. I asked it to refine the solution to enforce an invariant. It updated the solution. I implemented the full version and it worked great.
This felt different. First, I wasn’t alone with the problem. I had a partner helping me. Second, I could externalize my thoughts which helped me think them through. Third, if programming can be driving into a wall again and again, this felt more like skiing down a mountain, turning and gliding.
Striding into the unknown
I recently built my first VSCode extension. Extensions can alter many different parts of the VSCode UI. Each thing I implemented required a different function or module. I certainly could have found out which one to use by trawling through the docs or googling around. But, with AI, I could just ask, “How do you add an annotation to a line of code?” It felt like putting out my hand and having the correct tool placed in it.
Other times, I needed to find an idiomatic approach. For example, I asked if I could render markdown in a VSCode sidebar. GPT warned me that this would be difficult and said I could use a WebView, instead. I felt confident in unfamiliar territory. I felt that I wasn’t going to waste a ton of time on the wrong approach.
Conjuring from nothing
I was working on a little arcade game. When the player died, I wanted to render a shower of particles. I knew how to write that code. Writing it would just take time, and would be boring. So I typed into GPT that I wanted a particle system that used a normal update/render lifecycle and I pasted in the code from another source file as an example of that lifecycle. GPT whirred away and gave me some code. I created a new file in my repo, pasted in the code, and it worked first time. In about five minutes, I’d gone from an idea to forty lines of code and a new feature in my game.
Not stepping, bounding
Overall, the feeling is like those videos of Neil Armstrong on the moon. He’s bounding. Programming in the normal way feels like walking. You type out each expression, stepping incrementally toward your goal. When programming with AI, each move is bigger than a step. You lift off the ground. It requires more forethought, but, because you make more progress with each move, it feels like flying.
https://maryrosecook.substack.com/p/good-stuff-faster
your 2021 article seems to be in conversation with this one
Love the analogies in this !