Yes, you can talk to Claude, ChatGPT, Gemini, or whatever other tool you like and build an app that mostly works and represents your idea enough to go to market. I’m not going to talk about the normal complaints about needing more reviews, the cost of tokens, or how it’s slop. Or even about the skill atrophy or cognitive surrender that’s going on when you stop writing and thoroughly understanding code.
I want to talk about why writing code is more than just writing code. If you want to learn ten thousand things, learn one well. In this context, learning to code is the thing to learn well and I’ll show you how it connects to the ten thousand things that AI can’t fully grasp, connect, or get the appreciation for.
Actively learning opens other paths
When you learn how to write code in any language, you start with the basic syntax and logic. Then you start making little widgets. From there you keep adding layers. Eventually, you’ll run into the underlying infrastructure you deploy on and you start learning about that. Or someone will be out and you need to work in a different part of the stack.
This could also take you to lower-level code and hardware, writing and teaching other devs, product management, sales, marketing, and everything else that the code you write impacts. It goes as deep or as board as you want to go and it never stops.
You can start on one path of mastery and easily find yourself somewhere else, but you will always find yourself connected to the original thing somehow.
The breakthroughs come through the struggles
Many of the best breakthroughs come through some kind of struggle. When you learn the quirks of your programming language and what to expect through trial and error, the lessons stick harder. It’s just something that using AI can’t quite replicate.
Through struggling with problems, you learn what you didn’t know you didn’t know and it helps you grow. That’s where the ten thousand things come from, making connections by finding them when you get stuck.
All of the most transformative times in my career, and life, have come from some kind of breaking through a struggle. I think this happens because you’re forced to find new approaches to what you’ve run into.
It teaches a different type of discipline
Mental stamina is an important part of life that often gets neglected. It’s not a new thing, it’s been a problem forever. We get so focused on physical stamina and we talk about doing our cardio, but ignore how the mind needs a type of cardio too.
Everytime you encounter a concept you haven’t seen before, it takes grit to stick with it through all the feelings. It takes time to figure out there were more things you didn’t know and make the connections to what you do know. During the your development of understanding the concept, you make a commitment to follow through.
Now that could be because your sprint is almost over and you know you should have done this already, BUT. Sometimes the extra pressure is what you needed to really push through the hardest part. Once you understand this new concept, you realize that you’ve built more mental endurance to tackle the next hard thing.
Approaching all of your learnings with this kind of discipline will get you closer to the purest form of coding you can reach.
It’s still beautiful
I had a Calc 3 professor in college that made us watch a video on the beauty of math and that stays with me because he was right. I’ll admit, you do have to be a certain kind of person to find the beauty in reading code. Not necessarily in the functionality or what it actually does for anyone, but for the code itself.
There’s something that’s just nice about cleanly written, easy to understand, easy to expand on code. After you’ve had a long battle with product requirements, getting past technical issues, and collecting feedback, it’s wonderful to be able to sigh some relief because you know the code is set up in a way it writes itself.
You can find the patterns and see how the code and the developers behind it have grown over time. Code isn’t something you write and leave. It’s almost like a living thing that changes shape and becomes something completely different from its origin point. Looking through Git commits is like reading the history of a specific organisms life where you can jump in at any point and see who was there and what they did.
With all of the angles you can appreciate code from, you can find beauty in some aspect of it. You get to see “the thing itself” inside of the code and that connects to everything else you decide to learn.
I’m trying to find a way to really express how deeply I respect the craft of writing code without absolutely bashing AI. It’s… hard right now.