From Notepad to Copilot: What We Forgot Along the Way
Over the years I have gone from a C++ in the early days building mathematical models for industrial processes to C#, Java, Python, briefly PHP and Ruby and even a one-night-stand with Rust. Depending on the stage of my career, I was a purist for the language I was using at the time.
To my surprise, I have become much more language‑agnostic in recent years, choosing tools based on the problem at hand and the team’s strengths. But I have also learned that if you do not regularly exercise your memory, even the syntax you once knew cold will start to slip.
In the mid-2000s, I interviewed at Microsoft before I joined. One of the more memorable parts? Writing C++ live in Notepad. No IDE. No autocomplete. Just me, a blinking cursor, and the hum of my own brain trying to keep up. I survived the process, albeit with a couple of well-earned scars.
C++ wasn’t even my strongest language. But in that moment, I understood every brace I opened and every pointer I declared. I wasn’t just writing code. I was solving a problem. I was thinking. I did forget the difference between new and malloc, but followed up with Matthew Justice soon after to set the record straight. Hint: new calls the constructor, but malloc does not.
Today, that kind of thinking feels increasingly rare.
A quote in an article that Jason Kendall sent me struck a nerve:
“AI tools like Copilot, Cursor, and CodeWhisperer have slowly numbed our fingers. We’re coding faster than ever before but we’re also thinking less. Repeating prompts like rituals. Accepting autocomplete like gospel. Forgetting why the code works and just being glad it does.”
Years ago, I said that, autocomplete is a crutch. If that was a crutch, today’s AI tooling is more like a jetpack with a questionable guidance system. Helpful in some situations, but dangerous when it becomes the default for everyone.
We are gliding past the kind of deliberate thinking that makes us Software Artisans.
To be clear, I am not against these tools. Used intentionally, they can accelerate repetitive work, reduce friction, and even spark learning. I very happily use it to build and debug my Terraform code. However, too often our robot friends become a substitute for understanding. Just like a calculator can keep a student from learning arithmetic, AI tools can keep a developer from deeply understanding the code they commit.
The real risk is not that AI will replace us. The risk is that we will let it hollow us out. The adolescent phase of any technology is awkward and this is no different. We become developers who cannot debug without Claude, cannot design without Gemini, and cannot write a loop without the latest release of GPT.
Craft still matters. Understanding still matters. And yes, sitting down in front of a blank file and thinking deeply still matters. Good software comes from clear thinking in the right direction, not just fast execution.
If you lead a team, reward people who think deeply and ask why. If you are an engineer, step away from autocomplete once in a while. Write something difficult. Build something you have to wrestle with. You might remember why you started doing this work in the first place.