The learning journey in the web development world can be chaotic at times. If you think about the fact that there are too many topics to learn, too much to remember, and the incommensurable amount of rabbit holes, it's easy to lose motivation or to feel lost.
The problem with programming being intangible
Learning web development is not like actually building something with our hands. Programming is abstract, and we can't actually "touch" our program, which gives us a sense of not having accomplished something. By contrast, a carpenter can start working on building a chair, and after a while, the carpenter can point to the chair, even touch it, and say "I've built that!". As programming, and much of the knowledge work, is intangible, we need a way to improve the feedback on our effort. Using progress indicators is a great way of doing so.
The key to succeeding in your study process (and for building projects) is to stick to a good habit of learning and building every day. According to James Clear, the best way to stick to a habit is to make it satisfying. This is where visual measures come into play.
Habit trackers
Visual measures can be presented in many different ways, such as journaling, progress bars, and page numbers in a book. They are useful because they add immediate feedback and satisfaction after performing a habit, making habit trackers one of the best ways to measure our progress.
The way in which we track our progress needs to be attractive and satisfying, thus making it enjoyable, something we aspire to do after finishing a habit.
Habit trackers and other visual forms of measurement can make your habits satisfying by providing clear evidence of your progress.
- Clear, James. Atomic Habits (p. 204). Penguin Publishing Group.
Implementing habit trackers
We should be mindful of tracking things that are under our control, such as how many hours we invest in programming a project, and avoid tracking things outside our control, such as how many people star our project on GitHub or how many followers we have on Tech Twitter.
The activities we can track can be broadly divided into two categories depending on:
- how much effort we invest, and
- how much progress we have made.
Tracking effort
Effort can depend on time (how many hours do we clock in) or on repetition (how many projects we have built).
In order to track time, I usually use a time-tracker app. My favourite is Clockify.
I use time tracking like this:
- ๐ First, define how much time I will invest in the activity. For example, if the activity is "studying JavaScript", I will say "I will invest 1 hour a day, 5 days a week, on studying JavaScript". This is the minimum, and I'll do my best effort to invest at least this amount of time in the activity.
- ๐ Second, define this activity as a project in the time tracking app. By doing so, I can get detailed information on the app regarding how much time I invested over the days.
- ๐ Third, start tracking time on the app.
- ๐ Fourth, periodically analyse how this activity is going by taking a look at the time tracking report.
For example, as shown in the picture above, during the months of June, July and August, I spent 205 hours studying JavaScript.
By doing this, I can go from "I studied some JavaScript during 2021" to "I spent 205 hours focusing on JavaScript during June, July and August of 2021". I have a number, a real measurement that I can use to get a better feeling of the progress I'm making on JavaScript.
If what we want is to track repetition, we can just decide, for example, on how many projects we want to build for a specific goal. We can say that we want 3 projects on our portfolio, so we will track how many projects we are building, and this will give us a sense of advancing towards our goal.
I usually use Notion for this, but you can use any app, or just pen and paper.
Tracking progress
Tracking progress is ideal for activities that take a long time, and that have a beginning and an end. A course or book on JavaScript is the ideal subject to track this way.
What I do in this case is to divide the activity into smaller chunks. If I want to study a book, I will use the book's chapters as steps to measure the progress. If I want to measure a Udemy course, I will use each separate class (video) as a step to measure my progress.
For example, as of December 2021, the Eloquent JavaScript book has 21 chapters plus the introduction, so I will divide my progress on the book into 22 steps. Each time I finish a chapter, I will mark one of those steps as done by increasing the Commpleted counter on the tracking app/system.
A similar methodology will be used on Udemy courses or on the freeCodeCamp syllabus.
My preferred tool for measuring this is, again, Notion.
Closing thoughts
Tracking our progress can help us to get a feeling of how much have we accomplished towards a goal, and can also contribute to sticking with difficult habits, such as studying web development every day or building projects. I encourage you to try some of these techniques and see for yourself if they are useful to you.
I would love to hear if you have implemented habit tracking before, or if you have a different method to track your progress, so feel free to post it in the comments section.
๐๏ธ NEWSLETTER - If you want to hear about my latest articles and interesting software development content, subscribe to my newsletter.
๐ฆ TWITTER - Follow me on Twitter.
Top comments (5)
ana 2shokrak ya sa7byyy
Such a great post, Damian. ๐ฅ๐ ๐
It is very helpful. I also want to track my progress as a web developer. I always think that I should track but somehow I got problems of how to manage different things.
Love to see if you make post on how to manage things/time and become productive as a web developer.
Also I am learning JavaScript. My question is
What should be the process of learning JS?
How should I learn? I mean, from where to read theory ? And theory first and then projects ?? or theory in parellel with making little things along with big projects?? And what projects should I make?
And how to practice JavaScript for frontend??
And what is your process of learning??
How you learn new things and how you create content and what is your process of creating content ??
I will be very grateful to you, if you can help.
Thanks. ๐๐
Thanks for your kind words, Rohit!
Ideally, the learning process will consist of:
The way you learn is unique to you. Some people find it best to learn from books, some from videos, some from online courses (such as freeCodeCamp). In my case, I learned HTML and CSS from a book. Then I switched to JavaScript, but learning from a book was too slow for me, so I took an Udemy course. After that, I stuck to Udemy courses and freeCodeCamp. Once I felt comfortable with the basics, I went for the official documentation (especially for React).
I have written an article about how to become a web developer in 2022 where I describe in more detail this topic, so you should check it out.
Before building a project, you need to know how to build it. So, I think learning theory first and building the project after, is the best approach.
Regarding small vs big projects, I built many small projects along the way of reading books and taking courses (if you take a Udemy course, for example, is most likely that the instructor will give you projects to build), and after having learned what I thought was a big chunk of knowledge, I started building bigger projects. If I had to do everything again, I would focus on creating small projects (landing pages, forms, login systems, etc.) instead of big ones (full-blown web applications). Once I feel comfortable building small projects I would switch to bigger ones, especially to add them to my portfolio.
Speaking of big projects, you should build something that implements API interconnections, databases, and the CRUD concept (create, read, update, and delete). Some examples of these types of projects are:
You build projects, and you practice JavaScript along the way. You can also use some online practice websites, such as Code Wars: codewars.com/?language=javascript
I usually learn as part of a course or tutorial. Now that Iโm working as a web developer, I tend to learn things as I need them (like Ruby on Rails, for example). I usually follow a Udemy course or go to the official documentation. I read (a lot) and try to build something to solidify the knowledge. Iโm now doing my first hackathon, so there is a lot I need to learn in order to finish the project that the hackathon asks for.
I think the best way to learn something is to have a use for it. For example, I need to learn MongoDB to finish a hackathon project. If it werenโt for the hackathon, I wouldnโt have a strong reason to learn MongoDB. Maybe you want to build a reactive web app, so you focus on learning React because you want to build something.
Creating content is also part of learning. I wrote an article about how a team was using GitHub and whilst I was writing the article I was learning things about GitHub that I didnโt know.
I think being a developer is a never-ending learning process. Whatever you do, you will be learning something. The important thing is to do stuff.
To conclude, remember that this is just my opinion based on my experience. Different people may have different approaches, so donโt take my words as absolute truth. Do some research, draw your own conclusions, and reflect on what works best for you.
I hope I could be of help โบ๏ธ
Excellent piece of advice but sometimes the best of best is good old EXCEL SHEET. It can track progress with charts and bars and the data can be formatted, saved in any way you like.
I love working with Excel! The good thing about time tracking apps is that they usually allow data to be exported in CSV format, so you can further analyze it on Excel.