Andrea Zellner is a PhD student in the Ed Psych/Ed Tech Program at Michigan State University and a permanent author at GradHacker. You can follow her on twitter at @AndreaZellner.
So it's come to your attention that, *gulp*, you are going to have to learn to code something. This is happening more and more across disciplines: be it the explosion of interest in digital humanities, robust software or support data analysis, more and more graduate students are finding themselves moving beyond the WSYIWYG toolbars and menu items. It's akin to driving a car; you can hop in, turn the thing on, and be on the road in a few minutes. But to truly be experts in our fields, we are finding the need to peek under the hood. To tinker. Or at least learn how to change a tire. So grab your wrench and throw on your dungarees: today we are getting our hands dirty.
[Full disclosure: I am not a programmer. I am fortunate that we had a Commodore 64 as a kid that I learned BASIC on and that in 8th grade I typed fast enough to be allowed to learn a little bit more. I took one semester of computer science my freshman year, missed spring, and decided on another major where I got to see the sun (this was 1996--we were only allowed to code on the machines in the basement of the library). I regularly use HTML and play with enough CSS to regularly break my WordPress. Still, I'm not afraid to try, and I enjoy learning. ]
So where to begin? Luckily, there is no shortage of options for those who are looking to get started. Of course it all depends on your motivations for learning a particular language, so there isn't one way to learn. Many people advocate learning by doing: look at the code or syntax of others and start to emulate it. Others advocate for learning it more like a language, including the nuances, grammar, and structure. I am not weighing in on that debate here today, but here is Jeff Atwood imploring you, "Please don't learn to code." I love this article and I think it's worth considering before you begin.
- Mozilla's Webmaker Tools: I am a big fan of these tools, especially in terms of their possible uses with kids. Mozilla's tools are fun and interactive, and focus on web coding. This means largely HTML and CSS. Even if you know how to code, it's too much fun to play with the X-ray goggles and remix websites for fun. I like putting myself on the front page of the New York Times.
- Programr: While I haven't tried Programr, it looks promising. Anyone want to tell us about your experience in the comments?
- P2PU: I personally like P2PU's approach. The focus on community and often real-world projects address my learning style and avoid the pitfalls I mentioned in Codecademy. A user signs up for various courses, and the language you need may or may not be available all the time. I've found there are almost always courses running to jump in with, and my overall experience has been positive.
- Udacity and Coursera MOOCs: Massively-Open Online Courses are all the range, and both Udacity and Coursera have recently offered computer science and intro programming courses.
- Stackexchange:I like to lurk on StackExchange, especially in CrossValidated: the community for statistics. This is because I really want to learn R, an open-source "project for statistical computing," and I can read up on issues folks have and even track down syntax. There are different communities for all types of disciplines, and while this isn't a place to learn, it is a place to get questions answered.
In addition to these courses and forums, it's also good to set up groups to learn to code. Having someone nearby to help you learn the MATLAB or SPSS syntax or set up a group of friends to be newbies together, it's a nice way to get started. Of course, there are always books to be borrowed from the library, too. However you begin, my wish for all the budding coders out there is to have fun, be brave, and don't worry if you break it.
Have advice for those learning to code? We'd love to hear your suggestions and experience in the comments!