Learning to Code when you’re busy.
Everyone knows that learning anything requires a significant investment of time and effort. The 10,000 hour rule has entered our society’s collective consciousness, and while it has more or less been debunked, the general concept remains… you’re never going to learn anything as complicated as computer programming overnight.
More recent thinking on how someone effectively learns a complex skill suggests that what it takes is not only time, but regular and deliberate practice… and I think most people would accept that. However, I also know that many people that are trying to learn programming for the first time are doing it because they want to change their life. I am a contributor and moderator at The Odin Project, a free online web development curriculum and I meet new learners all the time. Many people are in the same boat I was when I first started: Family with three great kiddos, and a full time job in an unrelated field (High School Teacher for me). How is someone supposed to really do the deep focused work that is required in between cooking dinner, reading The Little Blue Truck and working a full time job?
The answer is surprisingly simple. From my own experience, and from talking to others that have been successful in this endeavor I have become convinced that the most important trait to master is consistency. There are almost definitely other factors (I’ll mention a few other specific techniques at the end) but the simple commitment to work on and write some code every day will get you a long way.
It doesn’t have to be much either. When learning anything you’ll see recommendations for spending at least an hour a day or even more working on the skill, but for many people that’s not really possible, at least not all at once. So the question is: “Can you get anything worthwhile done in less than an hour?” While it’s true (up to a point anyway) that longer chunks of time are more helpful, any amount of time is better than no time. It’s more important in the long run to commit to working every day than it is to worry about how much time you’re actually spending. In many cases you might find that once you begin working on something, even if your intention is to only work for a few minutes, once you’ve gotten started your motivation to continue will increase which in turn will make it easier to get started again when you have another chunk of time later in the day.
It’s easy to feel like you’re too busy… but you probably have more time than you realize, you just choose to do different things with it. It’s easier to lose track of time than you think! This 2013 article details a couple of studies that show reported TV watching time is consistently significantly less than what participants actually watched in a week. In other words, we think we know how much time we’re spending on the things that we’re doing, but we’re often wrong, especially when it’s something that we aren’t specifically scheduling.
My proposal here is that if you only commit to doing a tiny amount of work each day, you’ll likely find yourself motivated and able to do more. Even if this is not the case, it may be possible to get something meaningful done if you will only work consistently long enough. Bill Gates said, “Most people overestimate what they can do in one year and underestimate what they can do in ten years.” Which I interpret to mean this: it might feel like you’re getting nowhere (because you’ve overestimated what you think you should have accomplished in a given time period) but if you will keep on working and putting in your time at some point you might be surprised at how far you have actually come.
I have one further point about the tiny daily commitment before getting into a few specific tactics for making the most of the time that you have. Even if your daily schedule normally keeps you running from the time you wake until the sun sets, you will have days where you end up with more idle time on your hands. For me, I’ll occasionally have a day or two where the kids are at their grandparent’s house and my wife is out with a friend, essentially leaving me with the evening to myself. If you’ve already committed to the goal of learning programming, and you already have a daily habit of working on it every day then it will be much easier for you to actually do some meaningful work on days like this when you have the chance! If you only code on days where you feel like you can squeeze in an hour or two, then you will have a much harder time actually getting started on those days.
Of course it does matter what you do in the few moments that you carve out every day. So this section is going to offer a couple of simple things you can do to optimize your time.
- Don’t get too bogged down with trying to learn and memorize everything all at once. It might seem counter-intuitive to avoid really digging in and internalizing every little detail about what you’re learning but I’ll stand by this advice. Especially when starting out, it is hard to know what things are going to be important down the line and it’s easy to get side tracked and bogged down by things that you really aren’t going to use all that often. My advice then, is to learn everything well enough to use it in a project or assignment and then move on! If the topic in question is actually something important, you will encounter it again and while you may have to google for the syntax or ask for help the second time, each time you encounter it it will stick a little deeper. The result is that the things you’ll know the best are the things that you actually need to use on a daily basis… and all the other stuff is only a google away.
- Ask for help! Probably sooner than you think you need to. Get into the habit of asking for help or advice when you get stuck. If you aren’t understanding something then don’t waste time trying to push through it on your own. There is value in working hard and figuring out things on your own of course, but asking for help doesn’t ruin your problem solving skill. In fact the process of formulating a good question to ask and explaining the issue you’re having is as useful a skill as forcing your way through the problem and in many cases it can lead you to finding the solution to yourself. Related to the last point, often people with more experience will suggest things that you haven’t learned yet, which you should then take a little time to look into. (but not too much!) Either you’ll be more prepared when you finally get around to actually learning that thing, or once that thing has come up enough it’ll start to stick for you anyway.
- Take Notes. Please don’t waste your time writing down every detail of every item you learn about…. but when you come across something new jot it down with a couple of short notes and a link to whatever resource you’ve found for it. As I mentioned before your goal isn’t to learn everything in it’s entirety.. but learn enough to be able to look it up quickly later. Writing things down like this will make the “look up” much quicker and easier. If you need to do more googling that’s great but it can be useful to have a nice starting point.
- Make Stuff! Finally, and maybe most importantly… You have to USE the skills you are developing if you want to have any chance of them sticking. In my first tactic I claimed that you don’t need to work hard on remembering every little thing because the most important skills will naturally stick as you learn. This only works if you are actually using the skills as you learn them. Especially if you are short on time, you should be spending just as much time building things that use whatever you’re learning as you go. This is not too far removed from the concept of spaced repetition which is a technique for internalizing information by systematically periodically reviewing information (typically using flash cards) just before you’re about to forget it. I’m not convinced that flash cards are very useful for learning programming concepts, but you can get a similar effect by regularly creating your own projects or writing code that isn’t specifically prescribed by a tutorial. Not sure what to build? Start by extending whatever you’re already working on! Many tutorials have an “extra credit” section where they give you a handful of features you can add on your own, and of course you can always make up your own. It almost doesn’t matter what you’re doing as long as you’re making a conscious effort to use the things you’ve learned to create something new. (More info here)
In conclusion, I say that even if you’re an impossibly busy parent with a full time job, you’re still able to learn to code. If you want to do it just do it. Make the commitment and get to work… even if it’s just a tiny amount for now.
When I wrote this article a few months ago I had been actively (but unsuccessfully) searching for a job for about 3 months. For various reasons, if I was going to make programming a profession I needed to find a 100% remote position.. which is relatively difficult to obtain for someone with no professional experience. I’m happy to say, however, that I have accomplished this. Just a few days ago I was offered a fantastic 100% remote position, and gladly accepted the offer. I wrote a bit about getting the job in this article.