[Image by Flickr user acb and used under the Creative Commons license.]

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.
  • Codecademy: I would hazard a guess that this is probably familiar to our readers. This site is immensely popular. With a Facebook login, you can even show off to your friends the badges you earn as you learn JavaScript, Web Fundamentals, Ruby, or Python. My only problem with these tutorials are my basic issue with other online tutorials: when they give you lots of hints and are moving in such small chunks, it is easy to not commit aspects to memory. Then when I need to do something, I can’t because there are no hints in real life!
  • 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!

 

 

 

 

 

 

 

7 Responses to Learning to Code

  1. Enoch says:

    I realize this is in a slightly different vein than the languages you mentioned above, but for those interested in becoming more familiar with HTML and CSS, Jessica Hische & Russ Maschmeyer have a nice website called Don’t Fear the Internet. They are slowly releasing helpful, fun video tutorials for non-web designers.

  2. Matt Wall says:

    Great post, and a really useful list of resources. I’m firmly of the opinion that learning some programming is the absolute best thing that you can do in grad school (or even at undergrad level); certainly it is in my discipline anyway (neuroscience/psychology).

    One other resource your readers might find useful is Google’s Code University:
    http://code.google.com/edu/

    Lots of good stuff there on quite a few different languages. I recommend the material on Python (a good ‘beginner’s language’) in particular.

  3. tux says:

    I would recommend that you start by moving to linux. Take things step by step, take a peek under the hood, once you’re comfortable, by using the command line. Learn the power of scripts. Just run something from the command line, see what a program does, how it talks to itself. Check out the manuals of all programs to see how simple they are. Once you understand that a program is not its gui, THEN start by writing scripts to simplify your lives.

    My main point is do it gradually, see how you can help yourself, tinker a bit, learn how powerful your computer really is, and how much of that power can belong to you, then learn coding. Otherwise it’s as stupid as saying learn cooking in a week. You’ve got to start making scrambled eggs and stop ordering pizza first!

  4. […] Barbarba Bordalejo addressed the question of how important it is to be a programmer as a digital humanist in the first day of workshops, and the question resurfaced in a session on foundational theories in DH.  While there was no consensus, the most compelling argument was based on a definition of literacy and supported the position that digital humanists need to know how to code: If one is literate in a language or technology, one must be able to create something new. Therefore, to be fully literate in DH, one needs to understand and be able to use the language and structure of the cyber world (Java Script, HTML, CSS, XML, Python, etc.)  For a review of programming tutorials, see Andrea Zellner’s recent Gradhacker article on “Learning to Code.” […]

  5. […] Learning to Code ne of my favorite new topics–coding. As a non-coder, I list how I go about getting a least a little fluency with various programming tasks. […]

  6. Alexandra says:

    I highly recommend skillcrush.com’s skillcrush 101 course for an intro to HTML and CSS – very accessible, even for someone who’s never looked at code before!

  7. […] system, exploring digital research skills and workflows, and learning a programming language (Andrea Zellner agreed with this one in her post, which had some great advice for people who want, need, and/or feel the need to learn […]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

.post-thumb {float: left;}