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.