Having been in web development for over 15 years, I’ve had to learn a lot of new technologies. When I started, JavaScript was something you avoided and no one had heard of CSS. Now, you’re nothing it you don’t know both of those like the back of your hand. Things change fast on the internet and you better be able to learn programming quickly. Most of that was on the job training and that means picking things up enough to be productive now.

Over the years, I’ve found it easier and easier to pick up new technology. A lot of this is just due to the fact that I’ve been so involved in this for so long and many of the lessons I’ve learned can be applied across the different technologies, but another part is just understanding at what stage I’m at in learning something new.

Sticking to Your Level

I’m a big believer in the Dreyfus model of learning new skills. Understanding where you lie in the different skill levels can take you a long way in understanding how to learn and, from my point of view, how to teach. One thing that many other programmers and teachers get wrong is not understanding that Novice level students can’t grasp the concepts behind a technology and that more advanced students don’t need so much step-by-step hand holding. Knowing when to make that switch will accelerate your learning ability.

Most of us will start out anything new as a Novice. When you’re a novice, it’s very important that you get help defining every little step you need to take. Not why you’re doing something or the endless different ways you can do it, but just the simplest and most straight forward way of getting something done. When I’m teaching a new concept to a student, my first goal is to give them a step-by-step, repeatable process that will actually get them a usable result. If I’m teaching Ruby on Rails, Laravel or any other web framework, it’s a checklist of commands and code to write to get a simple, but full featured application up and running. If I’m teaching CSS, we start with an unstyled page and then layer the styles on one by one until we’re done. The key at this stage is checklists. Get a repeatable checklist that covers the major concepts and then use it. Don’t study the whole API or learn what all those concepts are, just see how it works and do it over and over again with slight variations.

Be a Novice

At this point, it’s not about memorizing, it’s about doing. We’re not ready to understand every little nuance at first, but it’s important to be productive from the first minute. You can look up anything, so memorizing is useless, but the learning is in the doing and the questions that the doing raises in your mind. The “But what if I want to do this instead?” or “If I do this, what will happen?” questions are the first sign that you’re moving into Advanced Beginner stage. Only then should you really start to dive into the documentation at a deeper level. If we stretch ourselves out too early, we can really slow ourselves down through frustration and doubt. Not until we run through this checklist a couple of times are we ready to start looking outside of that simple view and into how we can begin to really bend it to fit our needs.

Most tutorials and documentation online get this all wrong. Many novice users are trying to piece together lots of random blog posts or anemic tutorials to try to understand how to be effective in a new technology. You can learn that way, but the amount of time it takes will be way higher than if you can play to the skill level you’re at.

My Approach

When I do one on one tutoring and plan my books, I try and keep this in mind. I keep all of the “Why?”s out of the discussion until the actual checklist and process has been internalized first. This is also why my examples are simple and to the point. Instead of trying to make an existing web page into a theme in the book, I just lay out the basics as a checklist that should get you to a working theme very quickly. Applying it to your theme is that next step that the Advanced Beginner needs to take to truly internalize the lesson.

Don’t get frustrated by simple tutorials. Understand that it’s part of the process and will help you learn things a lot faster if you stick with it.