What I’ll discuss here will be very theoretic about setting up your journey to learning some new skills. It could apply to other fields than programming, but since the theme of this blog is specifically to discuss the learning of programming skills, I will use it for examples. But whatever field you’re wanting to learn, you’ll have to start somewhere that’s for sure. So, enough chatter, let’s jump right in the subject.
Initialize your journey
Maybe you’ve already started to learn that skill of your dreams, or maybe you’re wondering when will be the good time to start. In this case, what about now?
You may be waiting for the perfect conditions, like having some vacations or finishing important work that is sucking your time at the moment, which seems to be a good reason to not engage in other activities at the same time. But there’s a big probability you will just have an almost as important task or busy schedule after that point, even if you did not plan it at the moment. Meanwhile, you’re just loosing occasions to learn those skills you really care about.
There’s no need for an enormous amount of time to get started. According to the author and speaker Josh Kaufman, in his talk The First 20 hours – How to learn anything fast, you are going to get from to zero to a decent level in the desired skill in just about … 20 hours. This is ain’t even two full months of a daily 30 minutes sessions, can’t you really spare that time?
There’s no magic involved here, the sooner you start, the more advanced you’ll be in two months, or the next year. Even if you can spend only 10 min a day, you’re still going to make some progress, slight progress that will add up over time.
Set up your plan
Let’s pretend my awkward babble convinced you to start learning right now (or you might have this idea in mind since the beginning). That’s great, but how do we do that? You may as well jump in the action right now, and that’s still be a more profitable move than delaying it. But it would be better that you don’t tire out your early motivation too quickly, by following an inefficient process, so you need a plan. You have to trust me for this, I have wasted so much time going back and forth in my developer’s journey because of the lack of a plan and I can’t emphasize enough about how crucial it is.
But how do we proceed? If you’re aiming at learning “web development” or “system administration” as a whole, the task would seem daunting, and it is! Both of them shouldn’t be considered as task you can complete and be done with once and for all. They should rather be looked as ongoing processes, because these fields are so wide that you could dedicate your life learning one of them, and their constant evolution will force you to question what you know on a regular basis.
An idea I really like in Kathy Sierra’s talk, Making Badass Developers, is to divide these skills in a subset of smaller related skills, which will be faster to learn. Once you completed some, you will know exactly where you are in your journey and the possible next steps you can move to. The good thing is, dividing a task into subtasks is the most basic skill you’ll need to learn if you want to touch anything related to programming. So congratulations, you just completed your first lesson here!
If you’re a total beginner, it would seem difficult to assess correctly what you need to learn and in which order. Thankfully, whatever you want to learn, there’s a big chance that you’re not the first to attempt to it, and you will probably find some interesting resources on the web, or in your local library. If you want to learn web development, then you’re golden! There is aplenty of resources online and lots of them are free. For example, if you follow the Free Code Camp web development program, you will have a series of lessons and exercises in increasing order of difficulty, so you won’t loose time scratching your head about what you’ll need to learn next.
The goal here is not to review the different online resources and books (don’t forget there are lots of programming books, both e-books and printed!), because I obviously didn’t try it all. Just pick one, try it, see if it works for you. If it doesn’t, don’t worry, not everyone react similarly to the same methods. Try another approach and find the one that suits you!
Commit to your plan
When you’ll put your freshly acquired skill into use, the results won’t probably be really impressive, if not even good at all, don’t focus on these results! You are not supposed to nail a new domain on your first try, and it’s even better if you spend extra time for fixing the basics in your brain, by retrying the exercises you failed or reading again a lesson that you feel is not very clear for you. Don’t hesitate to try a different source of information, as different wording can be more or less clear to different people.
In her talk Learning how to learn, Barbara Oakley, who teach at Oakland University, points out that our brain stores new data relatively to how frequently we put this data into use. This means you can’t just read a book from start to finish and expect to be able to recite it without any mistake (well, there might be a very few people able to do it, but books are not written only for those people). So you have to practice, the new stuff you’ll learn as well as some things you have learned on previous lessons. The skills you use daily in your job, because you can’t allow to default on them, as much as the skills that you will have to use occasionally, because you won’t be able to remember it otherwise… Get this motto written into your mind: practice make permanent.
You will need to have a schedule, so you will keep practicing regularly. Practicing daily would be a very good training, has you will probably have your last lesson well in mind, it should help you moving to the new stuff more quickly and without leaving gaps in your knowledge hopefully. But it can be hard to maintain that rhythm, as we always have so much to do in our daily lives. Setting a session every two days seems a nice compromise. What you don’t want however, is choosing a training really hard, then allowing yourself to skip your training often. The more time you allow yourself to skip a learning session, the more it will feel natural for you to skip and it will snowball badly. As you cannot command your brain to not let go the things you don’t practice, choose a schedule you believe you can maintain, then be consistent about it. Consistency will beat quantity, any time!
Lead by example
I’ve been trying to bolster you for a long post by now, and it’s only fair that you ask if I ever had a taste of my own medicine. Well I don’t really… Please just don’t click away now! What I meant is that I didn’t made up all these advices from some perspicuous assumptions, but the more I listen to youtube talks and the more I google those subjects, the more these pieces of evidence tend to pop in front of my eyes. And I didn’t really followed those up most of the time, which really screwed me up, which is why I beg you not to ignore the really good advices from more experienced people.
There was, for example, no way for a lazy geek like me to go as far as publishing my own blog, even if I can recognize the benefits of it. But I enlisted in a program, an e-mail course that you can find on the blog Simple Programmer. I’ve listened for a fair amount of time to it’s founder, John Sonmez, who also has a youtube channel on personal development, and he delivers these kinds of advice about consistency… consistently! Sometimes, even knowing that something is good for you isn’t enough to motivate you to act, but with this e-mail course I’ve been driven to finally start my blog. I’m very unsure about its worth (my blog, not the course!), but by receiving e-mails every Mondays and Thursdays, it indeed set up some consistency. And it wasn’t just about reading, as each of these e-mails came with an assignment, which forced me to take action instead of just “saving it for later”.
So it made me choose a schedule of publishing every Monday, which I have to follow from now. And now if you look at the date of my last blog post, you’ll realize that … I screwed up again. That’s right, I’m kind of a scam here, telling you what to do and not applying it myself. But I will take the bull by the horns, I promise! That means for you that you’ll have a blog post about learning, or programming, or learning programming every Monday (crossed fingers).
By the way, if you’re interested in starting your blog to, I’ll recommend the free blogging lesson from simple programmer discussed earlier, which you can find here: https://simpleprogrammer.com/blog-course
Until next Monday then … no kidding!