I started learning code back around 2009 or 2010.
Back then, things were different. You didn’t have AI sitting beside you ready to explain every error, generate every method, or build half your project in a few seconds. You had YouTube, books, online forums, documentation, old blog posts, and a whole lot of trial and error.
You had to actually dig.
You had to search for answers, read through confusing explanations, download example projects, break them, fix them, and slowly figure out what was going on. Half the time, the answer you needed was buried in some forum post from years earlier, written by someone who assumed you already knew what you were doing.
But that was part of the process.
That struggle built something in you. It taught you patience. It taught you how to problem-solve. It taught you how to sit with an error message long enough to understand it. It taught you that coding was not just about making something appear on the screen. It was about understanding why it worked, why it broke, and how to make it better.
And that is the part I think gets lost sometimes now.
AI has changed everything. Tools like ChatGPT and Claude can generate code, explain concepts, build interfaces, fix bugs, and help people move faster than ever before. I use AI myself, and I am not against it. In fact, I think AI is one of the most powerful tools a developer can have.
But there is a difference between using AI to help you code and using AI as a replacement for actually learning.
Someone can prompt an AI and produce code.
That does not automatically mean they can develop software.
A real developer still needs to understand what is being built. They need to know why the code works, how to fix it when it breaks, how to structure it properly, how to secure it, how to maintain it, and how to make decisions when the AI gives them something wrong.
Because AI does get things wrong.
It can misunderstand the project. It can give code that does not fit your structure. It can suggest console logic for a GUI application. It can skip important error handling. It can create something that looks good on the surface but falls apart once the project grows.
That is where experience matters.
If you have never wrestled with code yourself, you will eventually hit a wall. The project will get messy. Two pieces will not connect. A client will ask for a change. A dependency will break. A deployment will fail. Something will work on your machine but not anywhere else. The AI will give you five different answers, and you will still need to know which one actually makes sense.
That is the difference.
AI can hand someone a hammer. It does not instantly make them a carpenter.
The people who learned the hard way built something deeper than syntax knowledge. They built instinct. They built patience. They built the ability to troubleshoot. They learned how to think like developers, not just how to produce code.
That does not mean new developers are fake. Everyone starts somewhere, and AI can be an incredible teacher when used the right way. But there needs to be honesty about the difference between generating code and understanding software.
For someone who already has the foundation, AI is like a power tool. It speeds things up. It helps you move faster. It fills gaps. It explains things. It can save hours of searching and frustration.
But for someone who has no foundation at all, AI can become a crutch. It can create the illusion of skill before the skill is actually there.
And that is what bothers me.
Not that people are using AI. They should. We all should. The problem is when people skip the learning, skip the struggle, skip the understanding, and immediately call themselves developers because a chatbot built something for them.
Code is not just output.
Development is problem-solving. It is structure. It is debugging. It is decision-making. It is knowing when something is wrong even if it technically runs. It is being able to maintain what you built after the excitement wears off.
AI is changing software development forever, and I think that is a good thing. But the title “developer” should still mean something.
Because a prompt can generate code.
But it cannot fake years of getting humbled by broken code at 2 AM.