The real trouble with learning to code is that you often find yourself completely alone.
It’s especially easy to get lost when you’re balancing your love of programming with real-world challenges like holding a day job, caring for your family, or just trying to see sunshine once in awhile.
Whether you’re coding 100 hours per week with an IV drip of Red Bull in each arm, or you’re fighting for every single hour you can find - stealing time on the subway, sneaking a few hours on the weekends, pulling out your laptop while your kids are at the park - one thing is true...
The less time you have, the more your method matters and impacts your progress.
When it comes to learning to code, people are glad to tell you what to learn. Today, we’ll show you how to learn to code in your spare time.
How to Know if You’re Struggling
No one likes to push a boulder uphill all week just to see it roll back down on Monday. A key characteristic of a study system that is not working for you is that you often end up re-learning the same material. Feeling the need to start over is a good warning indicator that your system could use a tune-up.
Symptoms to look out for are: 1. You never seem to progress beyond beginner-level 2. You can’t seem to finish projects 3. You feel like you’ve put in the time, but you’re not getting closer to your goal 4. You’re certain that you love programming, but somehow… you don’t anymore….
If you think any of those symptoms apply to you, don’t blame yourself. This does not mean you’re unable to learn programming, that you lack what it takes, or that some other insurmountable obstacle is blocking your path.
You'll probably find a fix among The Four Essentials of Learning that we use with our own Viking Immersive students.
When you create a learning plan that incorporates best practices in all four of those areas, your probability of success improves dramatically.
#1 - Getting on the Right Path
Getting on the right path means avoiding mirages in the desert in favor of clear goals.
One way to improve your path immediately is to swear off multiple sources of information. If you’re jumping from a Harvard MOOC to Udacity to Udemy to YouTube and back, the likelihood that those patchwork sources will overlap in a productive way decreases substantially.
One, Single Path
First and foremost, ensure that you are following a single path of information that leads to your goal.
Build Cool Things
Make sure your learning path includes opportunities to actually build software. Book learning, rote memorization or copy-paste coding will not be enough to get you through.
Be Honest With Yourself
Check in with yourself along the way and confirm that you are enjoying the journey. Grit and perseverance are important, but if you’re having fun, you’re more likely to continue.
Finally, make sure you have the support you need along the way. Even if you’re working on a tight budget and in your spare time, having a community and access to mentorship makes your process more efficient, more pleasant, and, ultimately, more affordable.
#2 - Focus: Stop Getting Distracted
Writing code is like carving an elaborate sand castle on the beach. The moment you get distracted, an ocean wave rolls in and washes away all your hard work. When the water clears away and you sit down to focus again, all you’re left with are formless mounds in the wet sand that you need to sort out, to start again.
Coding takes uninterrupted stretches of time and, when you’re in that time, it’s your job to do whatever it takes to get yourself into the zone. Practice sinking down into deep focus as quickly and effectively as you can. Being in the zone means tuning out all your distractions:
- Silence your phone notifications (better: put it in airplane mode)
- Turn off Facebook
- Shut down your email
Coding is endlessly interesting, which gives the bottomless well of tech news and learning info-tainment a strange and seductive pull. You start with an innocent-looking Hacker News article and, before you know it, you’re 20 Google searches deep and three hours have gone by.
Avoid rabbit holes at all costs.
Treat Hacker News, Twitter, and blog posts as empty calories. Any piece of information that is not directly on your path and immediately in front of you is wasted attention. Focus on long-term gains.
As a developer, you’ll be constantly solving problems and optimizing systems. That consistent search for improvement starts with yourself. Ask yourself what works for you or, when you catch yourself distracted, check yourself and find out why. Treat yourself as an experiment: test your diet, your environment, your sleep schedule, and the time of day that you work.
Once you discover what works, be rigorous about creating the conditions that optimize your performance.
#3 - This Stuff Takes Time
One comment we’ve heard repeatedly from students is that they felt liberated once they dismissed the idea that they would conquer coding in a weekend or in a month. Once they committed to the lifelong journey of learning to code, they were more comfortable and content to check off the milestones as they came along.
Different Goals Take Different Time
One of the most common questions asked about learning to code is, “How long will it take?”
No one ever answers, because it’s almost impossible to give a realistic and accurate answer. That's not really fair, so let's shoot for some high level benchmarks:
If you’re interested in building “toy apps” -- small software applications that are useful for you, alone -- gaining that level of skill might take you about 100 hours.
If you want to build useful applications -- something with versatility and flexibility -- learning how will take you several hundred hours.
If you want to become a casual freelancer -- capable of drumming up your own business on the side -- that level of understanding will take many hundred hours.
If you want to employed as a software developer -- ready to pass the hiring screen, join an engineering team, and create useful, tested, working business applications -- that level of experience will require more than a thousand hours of learning and focused practice.
Cadence is Important
The more rigid your schedule is, the easier your life becomes. Treat your schedule like a heartbeat and make its rhythm clear.
If coding is important to you, build a fence around it. Line out chunks of your schedule and fight to keep those commitments to yourself. Grow a habit around your coding and cultivate it over time.
Stop Struggling Alone
Every one of us has worked late into the night, stayed up much later than you should, storming the castle towers of a bug that would not surrender. You probably have more than one story of smashing yourself against those walls again and again, only to show the problem to someone else the next day and have them find your solution within minutes.
Learn this lesson early and save yourself pain: Software development is not a solitary activity.
There is value in struggle, but recognize that there’s a time to ask for help. If you can shrink a four-hour bug into ten minutes, then getting help was worthwhile. Make sure you know where to go when you need a helping hand to get over a speed bump.
#4 - Stay Motivated
In Good to Great, Jim Collins wrote about the BHAG: Big, Hairy, Audacious Goal. It’s an over-the-rainbow, long-term aspiration for what you really want to accomplish. Having that far-off target helps you to push through the pain and suffering of short-term difficulty.
The flip-side of the BHAG is that you also need smaller, bite-sized achievable objectives along the way. Give yourself small wins that you can feel good about, and reward yourself when you reach them.
As a developer, get those wins by building software toys and projects with the new skills that you’ve learned. Create apps that excite you, that you want to play with, and take pleasure in creating something new for yourself. They don't need to be big, just fun.
There is no substitute for the level of support you can find in a community. Some people prefer Slack channels, some people like meet-ups, some people seek out forums.
Based on our experience at Viking, there is no replacement for one-on-one connection and support. What you need is a connection with one other person who will care -- who will actually care -- about how well you are doing, about whether you fail or succeed. Seek out that level of connection from somewhere, because that is also where you find your accountability.
To support you and help you move faster on your learning path, we’ve produced a 5-part email course where we share our favorite lifehacks for getting more from coding practice in your spare time.
Check it out below….