Skip to main content
  1. Posts/

How to Measure Your Progress While Learning Programming

Joe Erickson
Author
Joe Erickson
Senior software developer specializing in web development, AI, and helping others learn to code.

Learning programming can often feel like you’re running as fast as you can and getting nowhere fast. The minute you feel like you have something figured out, five more things pop up that you need to learn before you can even do anything useful.

Measuring programming progress is extremely hard to do. It doesn’t come naturally to humans to measure progress of a mental skill. Programming is a very mental skill. It often feels like nothing is happening and–since we move on to new topics every day–that you’re constantly behind everyone else.

Physical skills are much easier to judge. You can see yourself getting better at painting. You can see your woodworking getting better. That pile of wood you are chopping is dwindling while the pile of chopped wood is stacking up. Visible progress!

Sadly, programming doesn’t really have a nice visible way of figuring that out. We could look at projects, but as we all know, half finished projects look more like failures than progress. Lines of code? Lines of code is just a number, not a clear indication of what you learned.

So what does work?

Make it Visible
#

Physical progress feels so rewarding because it is visible. So make your progress learning programming visible as well.

One of the best ways to do this is via todo lists. I would recommend using Trello. It’s the go to tool for many programmers to track progress on projects large and small.

Trello gives us a couple of ways to track progress and using all of them together will help give you a full view of your progress as you continue on your journey.

Create a Board
#

Create a new board and call it ‘Programming Progress’. Then create three lists; ‘Want to Learn’, ‘Learning’ and ‘Learned’. These are your 10,000 foot view of your programming journey. At first, everything may be in the ‘Want to Learn’ list. That’s okay! We all start somewhere.

A Trello Board called Programming Progress with three lists; Want to Learn, Learning, and Learned
Our 10,000 foot view of our progress

Topic Cards
#

Now add a card for each language or library you want to learn. That could be ‘Python’ or ‘React’ or ‘WordPress Development’ or even ‘Algorithms’. The key is that these are major Topics of learning. All of these cards go into the ‘Want to Learn’ list. Don’t go crazy on this yet. You can always add more topics to this in the future and having too many cards here can be more depressing than helpful.

Also remember when filling this list out what order things need to be learned in. You’ll need to learn ‘JavaScript’ before you can learn ‘React’, for instance. Focus on the topics you need now, you can always add more later.

Checklist of Learning
#

Now, go find a good tutorial on that Topic. For Python, maybe you’ll decide to learn via The Python Guru site. I’ll use that example here.

First, take the link to the tutorial and add it as the description for the card. That way–when you come back later after taking a break–you’ll have a link directly to the tutorial you were working on.

Go to the table of contents for that tutorial. Make a new checklist in your Topic card and add an item for every section of the tutorial.

A progress checklist for Python containing the table of contents for a Python tutorial
Our progress in learning Python

We now have a progress tracker! As you complete the sections on the tutorial, check them off the list and the progress meter will advance. When you look at the main board view, you’ll also see how many sections you’ve finished right on the front of the card.

Use this as your main learning dashboard. And feel good as check boxes get checked and cards move from left to right through the list.

Learning programming is hard, but keeping your motivation up by making your progress visual will certainly help you along the way.

Related

Ask Away: Judging Your Skills

I recently got an email from one of my tutoring students about how he had finished setting up an e-commerce site for his Dad’s salsa business, which was a pretty big accomplishment. But there were two things in the email that I took issue with. One was that he thought it was weird that another web dev shop had asked for $3,000 to set up a shopping cart in Spotify and the other was that he felt that using an off the shelf solution (BigCommerce) was a cop out and he should have been able to build it himself. I think everyone’s felt both those things at some point–I know I have–but I sent him this in response:

What to learn when you want to learn web development

·1067 words·6 mins
I’ve seen a lot of posts on /r/learnprogramming and other places wondering how to get started with web programming. I’ve been doing this for about 15 years now and I’m here to give you some good news. Everything that I’ve done, from bill pay sites for Fortune 100 companies to lead tracking applications for small businesses, is essentially based on one simple concept and that’s CRUD.

Java: Unstrung

·452 words·3 mins
So Strings are built for optimisation, but are you using it in an optimised way? If you understand interning and immutability, you can start looking at ways to use those features to your advantage.

Java: The Unchangeable String

·526 words·3 mins
One of the fundamental data types in Java is the String. In fact, it’s used so often that most people don’t even think much about what a String is or how it works. But a String Object works like no other object in Java in two important ways; immutability and internment.

Thread Safety Dance

·611 words·3 mins
Another blast from the past. If you’re working with Servlets or in a Threaded environment, you need to be thinking about thread safety. Thread Bare # Java has built in support for multiple threads in all its objects. The way it handles this, is each thread can get a handle on the object and run its methods at the same time which, for something like a servlet, cuts down on the amount of memory needed to load the servlets and the amount of time needed to instantiate multiple objects. This can be a huge improvement in performance for web-based applications.