by Linea Brink Andersen
Ode to the tutorial — or, how I regained my motivation
The internet is full of well-meaning advice for people learning to code. There are tons of blog-posts with recipes for success.
One piece of advice I have seen a lot lately is: “Build something.” It often comes together with a warning: “Don’t get stuck with tutorials.” The essence seems to be: Building, good. Tutorials, bad!
I had internalized this advice. I was living by it myself, and passing it on to others. I started building “real” things, not “just” things from tutorials. And it was awesome. You can read about the open source project I recently started. But building stuff was not all smooth sailing.
For the last couple of weeks, I have been working on a silly little project that generates random band names following certain patterns. I wanted it to be a web-app, and I had a very particular idea about how it was supposed to look. I have little to no experience with front-end and web development. The name generator required both, so I figured that building it would be a good way to learn.
However, my focus on building was causing me not to build anything at all. With my pre-existing skills, a lot of googling, and a touch of stubbornness, I was getting pretty far with the name generator. But not far enough. I kept running into walls. Most of the time, I could get myself across the wall with a lot of work. But before I knew it, I was facing yet another wall.
Suddenly, I wasn’t coding anymore. I had to take a few days away from code because I was busy with midterms. But when midterms were over, and I had time on my hands again, I still wasn’t coding. I was making all sorts of excuses for why I would start tomorrow.
Tomorrow became the next day, and the next day, and the next day, and a week had passed, and I was still not coding. Just a few weeks prior you could barely pull me away from the screen. I had been spending all my free time coding. And now — I was avoiding it.
Back to the source
That’s when I realized — constantly running into walls was demotivating me. I had to do something different. My obsession with building was keeping me from progressing. Sure, when I ran into a problem, I could work to get myself unstuck. But I was solving small isolated problems. I needed to understand how all the individual pieces I was working on were going to fit together. I needed a bigger picture.
I found this tutorial online. It is a solid introduction to web development using Flask. The tutorial walked me through building a microblog. It was pretty interesting in itself, but I also saw many ways that I could use what I learned in my name generator, when I return to it.
To get started, I had to shut out that voice inside my head that said: “You’ll learn so much more from building your own project, instead of passively following a tutorial.” In the end, for me, it wasn’t true — I wasn’t really learning anything from building, because I was doing all I could to avoid having to try. I needed to get my motivation back, and the tutorial was helping me do just that.
Balance is key
I still believe that building my own projects is an important part of becoming a better programmer. But for me, building works best as a way to crystalize knowledge I already have. Sometimes I will learn something new in that process, but it is not the main focus. It is very satisfying to see how well I have understood something after studying it and then explore all the things I can do with my new skills. But when I need to learn something new, I prefer getting an overview.
By working through tutorials, I gain a surface understanding and an overview of the new skills I am trying to learn, and I see examples of how other people are applying them.
There are many ups and downs when learning to code. Next time a lack of motivation hits (I am sure it will happen again), I will use it as an opportunity to step back and reflect. Do I need to change something? Is there a reason why I keep getting stuck? Is there some gap in my skills, and how can I best fill it?
Shifting between the two different approaches, building and working through tutorials, I hope I can stay motivated and keep getting better and better. Building is not better or more important.
Sure, doing tutorials might be passive learning, but it is also about gearing up and learning new skills I can apply later when building. It is all part of the process.