Learning to Code: Taking the First Steps
If you’re interested in learning to code, there are a lot of resources out there to help you get started. With so many books, MOOCs, and online tutorials available at the click of a button, it can get almost overwhelming just figuring out where to start. So, in this post, I want to share some of the steps I’ve taken to get moving. Although there are definitely a vast number of ways to begin, hopefully my experiences can be of use to those who find themselves stuck at the starting gate.
Step 1: Take the Plunge
When I was getting started, choosing how to invest my time felt like a pressing concern. With so many options available, it seemed important to pick the correct one so that I could get off on the right foot.
There’s nothing wrong with doing your due diligence and trying to find the entry point that’s best for you, but what I learned is that choosing which step to take first is far less important than simply choosing to take the first step. Getting the ball rolling builds momentum for future progress better than anything else.
I ended up starting out by completing the Intro to Ruby tutorial at Codecademy. I zipped through it a little fast, and probably didn’t retain everything as well as I would have liked to, but simply diving in and working with code helped me get moving. I found myself better motivated and prepared as I began to tackle new and different challenges down the line.
Step 2: Figure Out How You Learn
Speaking of that first step, I quickly figured out that I can zoom through an online tutorial pretty fast. Tackling chapter after chapter came easy and felt like demonstrable progress, but I recognized a problem: I wasn’t properly retaining what I had learned.
This experience helped me to figure out that I benefit a lot from applying what I’m learning. Just reading about particular features of a language or completing mini-exercises didn’t quite do the trick; I needed to be putting what I’d learned to use.
Poking around for other resources better suited to my learning style led me to The Odin Project. I really benefited from their curriculum that combines information with relatively open-ended challenges. Instead of writing a line of code to move on to the next challenge in my tutorial, I was writing programs.
Step 3: Make a Calendar
One of the things I like about coding is that it’s fun. I totally enjoy heading over to Codewars and completing a few challenges just as if I were playing a game. And don’t get me wrong – that site is awesome for practice.
But I figured out early on that indulging in the fun side of coding can strip the learning process of structure. While doing the stuff you enjoy helps build experience and motivation, it’s also good to set benchmarks and goals.
For me, making a calendar that outlines what I want to achieve and by when has really helped to keep me on track. Now if I’m ahead of schedule, maybe I’ll indulge in more of the fun stuff. But if I’m slipping, I know I need to double down on the task at hand.
Step 4: Get Help
One of the beliefs I had about learning to code early on is that it was going to come down to self-discipline and self-teaching. And, for sure, those things are invaluable. But, in retrospect, I think I was underestimating how many resources are out there to engage others and grow through interaction.
For example, I had never really heard of a “meetup” before. Now, I attend meetups almost every week. They’re a great way to meet like-minded individuals and hear about what’s going on in the world of professional software development. And, they even sometimes offer opportunities to do some pair programming.
I’ve found that talking through what I’m learning and seeing how others think helps me to learn in ways I can’t quite explain. Opportunities to interact with others and share perspectives have helped me to grow in ways I never could have gotten out of solitary study.
Step 5: Learn the Tools of the Trade
In my haste to get started, I was initially reluctant to learn things that I sensed would become important down the line. Github? Who needs that when I can save my code and run it in the command line? Vim? That seems much more difficult to use than SublimeText. TDD? I don’t want to write a bunch of specifications before I get down to writing code!
Wrong!
Every time I’ve come back to learn something I initially put off, it’s paid dividends. Getting over the hump between strangeness and familiarity might seem daunting, but it yields greater productivity in the long run.
And getting comfortable with the best tools earlier pays off more, because it means you’re helping to develop familiarity with each subsequent time you practice. Putting that off just means you miss out on lots of practice you could have already accrued.
Final Thoughts
As has been pointed out many times before by brighter minds than myself, learning to code is a long journey. I’m sure that if I were to revisit this post a year from now I’d have new and different suggestions, but that’s the nature of the activity. One way or another, the most important things seem to be simply getting started and developing good habits. To get on track, I’ve found taking the plunge, figuring out how I learn, working on a schedule, getting help, and developing familiarity with the tools of the trade to be really important.