Forget the Tutorial, Read the Docs.

Continued adventures in learning to code.

James Landry
4 min readDec 15, 2020

Over the past month I’ve been working on a new project for my wife, a home management app that will allow her to schedule appointments and tasks with calendar functionality. She homeschools our three kids, along with managing the majority of the household tasks while I have the much easier job of (usually) working for a corporation. So of course I wanted to use my newfound skills as a programmer to make her life easier. Since she wanted it as a mobile app and I wanted to learn React Native and NodeJS, I counted it as a win win. Of course, learning two new frameworks on the same project might not have been the best idea for getting the app built quickly, so we’ll see how many wins it turns out to be in the end.

But, to the point of my story today, I started out, as I most often do, reading the official documentation of what I was trying to learn. I started with NodeJS and built out my backend and basic data model and tested it before moving on to what I considered the larger task of learning React Native. Now, I want to be fair and say that I didn’t build out my backend with Node solely by reading the documents on their site. I also watched a couple of YouTube videos that were basic overviews of Node. When I got to React Native I did the same thing. But I also had some very specific things I was trying to do, and looked for some pre-built components to see if I could glean some inspiration from them. Specifically, I was looking for calendar components that could be easily customized. I found a few examples, that also had tutorials on how they were built. Walking through those, I also ran into some other often used components in React Native, which lead me to more tutorials.

Before I knew it, I was deep into trying to follow along with several tutorials to implement these components in my app. Don’t get me wrong, I’m not exactly against tutorials. There are often times where what I’m trying to do is specific enough that official documentation just doesn’t really cover it, and sometimes tutorials can have some great inspiration in there to help out with that. But the key thing is, you need to understand the basics before you just follow along with a tutorial. But I’ll get more into that in a moment. Back to my story first.

So as I waded in deep to these tutorials, trying to figure out how I could patch them onto my app, I reached a point where after following along for several steps, I realized the basic app tutorial I was following didn’t actually do what I needed it to do. Great. Was this component that I had spent the better part of an afternoon working on even capable of doing what I wanted, or was I going to have to start over with something else? I realized at this point, I had broken my own rule by not reading the documentation first before implementing something new. I did a quick search of the component I was trying to use, and found that its creator did indeed have a large set of documentation of all of its features.

I started from the beginning, making sure I understood the basics before I searched for the specific portion I was trying to learn. And it turns out, the component did support what I wanted to do, and it was pretty similar to methods I had already learned in bootcamp. Along the way though, I also figured out some key functionality of the component I was using, and discovered my initial assumptions on how it worked based on the tutorial were completely off.

So herein lies the point. As stated above, tutorials can be great for inspiration when official documents don’t exist, or don’t have the specifics you need. But the thing with most tutorials is, they still just walk you along the process, telling you how to do each thing step by step. They most often don’t explain what is actually happening with the feature you’re trying to implement. So in the end, if you followed a tutorial can you recreate what you did on another app that needs you to implement the features in a different way? Probably not. At least, not without a lot of trial and error. And you almost certainly didn’t learn as much as you would have if you had just followed the docs and tried to implement it in your code yourself. From my current perspective, I see knowing to code as recognizing how to use building blocks creatively to make new solutions to problems. And the thing with building blocks is, you need to know what they do in order to implement them properly, otherwise the integrity of your structure is most likely compromised.

--

--