You are improving if you debug faster than you used to, if you reach for documentation instead of only tutorials, if you start thinking about systems rather than just syntax, if you can explain a concept to someone else, and if you can build small things without following a step-by-step guide. The signs that feel like progress but are not include completing certificates, finishing tutorials, accumulating lines of code, and knowing vocabulary without being able to use it. Real progress is measured by what you can build independently, not by what you have consumed.
When you learn to play guitar, progress is audible. Week one, you cannot play a chord cleanly. Week eight, you can play a song. The evidence is unmistakable, both to you and to everyone within earshot.
Coding progress is not like that. You study for weeks and your screen looks the same. You cannot hear improvement. You cannot see it in a mirror. The projects you build as a beginner look like the projects everyone else builds as a beginner, so even the output does not feel like evidence of growth. And the more you learn, the more you realise how much you do not know, which makes you feel like you are going backward even when you are moving forward.
This invisibility creates a specific kind of anxiety: progress anxiety. "Am I actually getting better, or am I just going through the motions? Am I wasting my time? If I am improving, where is the evidence?"
The evidence exists. You are just looking for it in the wrong places.
These are the signs that indicate genuine improvement, even if they do not feel dramatic in the moment:
1. You debug faster than you used to. Three months ago, an error message sent you into a panic. Now you read it, identify the line number, and have a rough idea of where to look. You might still not fix it immediately, but the process of finding the problem has gone from "flailing randomly" to "investigating systematically." That shift is one of the clearest signals of real growth.
2. You reach for documentation instead of only tutorials. Early on, the only way to learn something new was to find a YouTube video where someone walked you through it step by step. Now you occasionally open the official documentation for a library or API and can follow along well enough to use it. Docs are written for developers. If you can read them, even slowly, you are becoming a developer.
3. You think in systems, not just syntax. When you started, coding was about getting individual lines to work. Now you think about how pieces connect. "If the user clicks this button, it calls this function, which sends data to this API, which stores it in this database." You are seeing the architecture, not just the bricks. This transition is invisible to outsiders but represents a fundamental shift in how your brain processes code.
4. You can explain a concept to someone else. If you can explain what an API is, what a loop does, or why a variable is undefined, in plain language that a non-coder can understand, then you have moved from surface recognition to genuine comprehension. You cannot explain what you do not understand. Being able to teach, even informally, is proof of real knowledge.
5. You can build without following along. This is the big one. When you can take a simple idea ("I want a webpage that shows today's weather") and build even a rough version without copying from a tutorial step by step, you have crossed the line from consumer to creator. The result might be messy and incomplete. That does not matter. The fact that you went from idea to working code without hand-holding is the milestone.
6. You recognise bad code, including your own. You look at something you wrote a month ago and wince. "Why did I do it that way? That is terrible." That reaction feels negative, but it is the opposite. You can only see that old code is bad because you now know better. Cringing at past code is literally what improvement looks like.
7. You know what you do not know. At the very beginning, you did not even know what you did not know. Now you can say "I understand HTML and CSS but I am weak on JavaScript async patterns" or "I can build a front end but I have not touched databases yet." That specificity about your own gaps is a sign of a more mature understanding. You have mapped enough of the territory to know where the blank spots are.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
These things feel like progress but do not reliably indicate that you can build things independently. They are not worthless, but they should not be your primary measure of growth:
Certificates. Completing a course and getting a certificate feels like an achievement. And it is, in the sense that you finished something. But a certificate proves you consumed content, not that you can apply it. We have seen learners with multiple certificates who cannot build a basic webpage from scratch. The certificate measured attendance, not ability.
Tutorial completion counts. "I have completed 47 tutorials." Okay, but what can you build without one? If the answer is "not much," then the tutorials were not building the skill you think they were building. They were building recognition memory (you can follow along when shown) rather than recall and application (you can do it yourself).
Lines of code written. Code quantity says nothing about code quality or understanding. A beginner might write 200 lines of repetitive code to do something that a slightly more experienced developer does in 20. Writing less code to solve the same problem is often a better sign of progress than writing more.
Technical vocabulary. You can say "REST API," "asynchronous," "object-oriented programming," and "state management" in conversation. But can you explain what each means in practical terms? Can you use them? Knowing the words is useful. Mistaking vocabulary for competence is a trap.
Time spent studying. "I have been learning for 6 months." Time invested matters, but only if it was spent actively building and problem-solving, not just passively watching. Six months of daily practice building projects teaches more than six months of watching tutorials every other weekend.
At McTaba, we do not measure progress by quiz scores, certificates, or hours logged. We measure it by one question: can you build something real and deploy it so other people can use it?
A deployed project is the only honest measure of ability because it requires everything: understanding the problem, writing the code, debugging it, styling it, connecting the pieces, and getting it live on the internet. You cannot fake a deployed project. It either works or it does not. Anyone can visit the URL and see the result.
This is why every path through McTaba ends with shipped work, not a certificate ceremony. The evidence of your ability is live on the internet, not hanging on your wall.
And here is the thing: the first deployed project does not need to be impressive. Your first project will be simple and probably a little rough. That is fine. The point is not the project itself. The point is proving to yourself that you can go from "I want to build X" to "here is X, running on a URL." Once you have done that once, you know you can do it again, bigger and better. That knowledge is worth more than any certificate.
Since coding progress is invisible by default, you need to make it visible intentionally. Here is a system that works:
Monthly "build from scratch" test. Once a month, give yourself a small challenge and build it from scratch without any tutorial. A simple calculator. A personal bio page. A form that saves data. Time yourself and note how far you get. Three months later, repeat the same challenge. The difference will be obvious, and you will have concrete evidence of growth that no feeling of self-doubt can erase.
Keep a coding journal. Two to three sentences at the end of each study session. What did you work on? What confused you? What clicked? After a month, read back through it. You will see concepts that confused you early on that you now understand without thinking. That trajectory is your progress, made visible.
Save your old code. Do not clean it up. Do not delete early projects. In three months, open the first thing you ever built and look at it with fresh eyes. The cringe you feel is not embarrassment. It is evidence that you have grown past that level.
Track your debugging process. When you encounter a bug, briefly note how you solved it and how long it took. Over time, you will notice that bugs that would have taken you hours now take minutes. Your debugging strategies become more systematic. That is one of the most reliable indicators of genuine skill development.
Ship regularly. Deploy something small every two to four weeks. Each deployed project becomes a permanent record of your ability at that point in time. Line them up chronologically and the progression becomes undeniable.
If you read through the real signals of progress and recognised yourself in several of them, then you are improving even if it does not feel like it. Trust the evidence over the feeling. Keep going.
If you read through them and realised you have been relying on fake signals (certificates, tutorial counts, time spent), that is not a failure. It is a course correction. Shift your focus from consuming to building. The next time you finish a lesson, close the tutorial and try to build something with what you just learned before moving on. That single habit change will transform your rate of genuine progress.
If you want a structured environment designed around real signals of progress, Tech Foundations (KES 2,999) gives you a path from zero to your first real understanding of how code works, with the McTaba community behind you. It is self-paced, meaning you move at your own speed. The trade-off is that self-paced requires self-assessment: you are the one deciding whether you have truly understood something before moving on. The McTaba Developer Marathon adds a mentor who does that assessment for you, plus a cohort and career support. But Tech Foundations is the right starting point if you want to find out whether you can do this.
If you are improving but the imposter syndrome is making it hard to believe, read imposter syndrome when learning to code next. If you are wondering what to put in a portfolio to show employers, what your portfolio should have to get hired translates your progress into something hiring managers care about.
KES 2,999
Not sure where to begin? This beginner-friendly course covers how computers work, the internet, Git, and your first lines of code — everything you need before picking a stack. 10 modules, 89 lessons.
Start Tech Foundations