Learning To Code: Part Two
27 Jul 2014In Part One we went over some considerations and candidates for which programming language(s) makes a good first choice to learn. In talking to people who express that they want to learn how to program, a common theme is that they have no idea where to start. In this post, we’ll take a look at some places that could be good places to start.
Traditional Coursework
Perhaps the most traditional way to learn how to program is to take courses that require you to learn in school. This most likely means college level computer science or engineering coursework, but could also be part of other disciplines like finance, business, math, or a hard science.
This is a perfectly legitimate way to get started programming, but far from the only way. The upside to the school-based approach is that you usually have a knowledgeable instructor or teaching assistant along with other classmates to help you through the initial pain points of setting everything up and getting going. A textbook or learning materials are chosen for you and you have a class and homework schedule that you need to stick to, making it more likely that you’ll see it through.
In my opinion, there are two downsides to the school-based approach. The first is the cost. Community colleges offer a great value in terms of learning to cost ratio, but they’re still not cheap. Universities are usually more expensive and are hit or miss when it comes to convenient class times for non full time students. The second downside can be the overly-theoretical academic approach. Not all courses are like this, but some courses spend too much time studying the theory of programming without enough focus on the practice. There’s a place for both, to be sure, but if your goal is to be productive as soon as possible, then the traditional school approach might be overkill in terms of programming theory.
A final note about school and programming. Some people seem to think that if they didn’t major in computer science as an undergraduate or grow up programming, that they’ve missed the boat and there’s no chance for them to learn. This couldn’t be further from the truth. Ask anyone working as a software developer, the things that they use most often in their day to day work most likely were not learned in school.
MOOCs
MOOCs, or massive online open courses, are a relative newcomer to the education scene. Offering courses in a wide range of disciplines, computer science and programming topics are among the courses offered. The most well known is probably Coursera, but Udacity, Saylor, and edX are among a few of the others.
Personally, I love the idea and potential of MOOCs. Often taught by top professors from top universities, they offer access to very high quality education to anyone with a computer and internet connection. Although the quality probably varies, I can say that I have used some of the course material to supplement the traditional course material used in my computer science graduate program, and it’s every bit as rigorous and complete. I especially like that the material is broken down into bite-sized chunks of video lectures instead of the traditional hour-to-several-hours long lectures in a traditional school. Add to that the forums where students can ask questions and get help from other students, and for the right person MOOCs are a fantastic and low cost option to learn computer science and programming techniques.
There are, of course, some things to beware of with MOOCs. The completion rates are abysmally low. It can be difficult to get help with fundamental topics that students are assumed to have mastered. In a traditional school, students would have to have taken certain prerequisites for some courses, but anyone can sign up for a MOOC. Another consideration is that the employment market has not decided how to view MOOCs, so if you go the MOOC route, know that you’re doing it for the knowledge and not for a credential that comes with it, at least for now.
Books
Books are one of the best and easiest way to pick up programming skills, whether it’s to learn a language or learn more advanced topics about programming. Manning and O’Reilly both make different series of high-quality books about a variety of topics. Tip: sign up for the deal of the day alerts for half-off deals. Better Tip: get to know your local library.
Look for a future post for more detail on how to read technical books, but in the mean time if you use books as a means to learn programming, don’t stop at just reading them. You have to work through the examples and experience the pain of getting them to work, because that’s where the real learning takes place.
Code Bootcamps
Recently, there have been a number of coding bootcamps that have popped up. They’re all different, but the general paradigm is that you pay some tuition fee to attend full time for several weeks or months, and then get help for some period of time finding a job. I have no firsthand experience with the bootcamp approach, nor do I know anyone who has, but it seems to me that given good instructors, several weeks of full-time coding could be a viable way to produce someone who’s ready to program professionally.
Conclusion
Hopefully this post gave you some ideas and resources you can use to learn to program. Of course, there are plenty more. Please drop me a comment if you’d like to see something added.