Learning to Program for Journalists: The Epic HOWTO

  1. Is it stupid for me to even consider learning to code?  Won’t I have to spend years at it? Won’t I be a lot worse at it than a “real” computer programmer?
  2. Why bother?
  3. You’ve convinced me. How can I get started?
  4. What should my goals be?  What kind of projects should I consider?
  6. Where can I find your source code?  

Is it stupid for me to even consider learning to code?  Won’t I have to spend years at it? Won’t I be a lot worse at it than a “real” computer programmer?

Part of the reason I learned to code was that I kept running into journalists who had great ideas but were waiting around for a techie to rescue them.  But I didn’t recommend that they learn to program because, frankly, I wondered if that was the advice a jerk would give — was it really practical for a busy person with a day job to learn to program?  Or was it so time-consuming and expensive that it was like saying “let them eat cake”?  Well, my summer project was designed to take on that very question: how long does it take a busy person with a day job (and in my case a young family) to learn to code, using only their spare time?  

In my case, I was able to learn to code in 12 weeks, and at the end of those 8 weeks I was able to make simple but useful web apps.   My goal was to try to spend one hour each weekday practicing.  

Why bother?

I can’t tell you why *you* should bother, but I can tell you why *I* bother.  

  1. I don’t want anything to come between me and my ideas.  If I have an idea, I don’t want to wheedle some programmer into doing it, or persuade a funder to give me money to pay a programmer to do it.  I JUST WANT TO DO IT. 
  2. I want to learn to program because a lot of things piss me off
  3. I believe that we’ve reached a point where the journalism we have isn’t the journalism that we need to address serious problems we have not only as a country but as a species.  Our era doesn’t just call for computational journalism: it demands it.  
  4. It’s where the cool kids are. 
  5. It’s fun. 
  6. Because my hour of coding is the best hour of my workday.  Total zen. 
  7. Because the ability to teach ourselves New Things is one of the cardinal virtues that makes us human.  Making choices to control what we learn is one of the primary ways we become an Autonomous Human Badass. 
  8. It’s a full-employment act. 

You’ve convinced me. How can I get started?

  1. Find a group to learn with. Don’t do it alone.  While you don’t need to spend cash on college courses (and I don’t really recommend it), I don’t recommend trying to learn exclusively on your own from websites or books.  The problem is this: you’re going to get stuck.  (No, really: you’re going to get stuck).  In that case, you need someone more experienced than you to help you get past the block.  
  2. Choose a programming language or framework to start with.  When you’re trying to find one of the groups above, you won’t find any named “We want to teach journalists to make awesome stuff on the web!”  Groups are organized around specific programming languages and technologies.  Choose a language or framework that A) is popular enough to have a user’s group nearly everywhere and B) is widely used on the web.   Good places to start: Python, and the web framework that goes with it, Django; Ruby, and the web framework that goes with it (Rails) or the language I started in, PHP (which is the grand old man of web scripting languages and has many frameworks to choose from).  Ruby and Python are the cool kids’ languages; PHP is not.  Choosing one will let you start looking for a group to join — you’re looking for [mycityname][programming language name] User’s Group.  Some groups have events or “let’s all read along through this book and do the exercises” programs.  Those are gold! I found the group that taught me, BostonPHP, via Meetup.com.
  3. Commit to giving it an hour a day, weekdays, for the first eight weeks. Try to practice every day at the beginning and don’t take long breaks.  Breaks of a week or more mean you’ll forget things and need to start again at an earlier level.  
  4. Set up a “development environment” on your computer.  See here for instructions.  You can do this in an hour and have all the tools you need to get started Making Ze Stuffs.
  5. Get an account on Github.  Github is a site where you can upload your code and keep track of other coders and projects.  Do it even before you have something to upload. 

What should my goals be?  What kind of projects should I consider?

Look for the simplest possible project that you can do that is still useful, beautiful, or funny.   The limited skills you will have at first, along with your limited time, are a serious constraint.  Learning to do something beautiful and useful within those constraints is no less an art form than learning to write a sonnet, or jazz, both of which operate within constraints to create something beautiful. 

Look out for what I call “one trick pony” websites.  My favorites:  


  • There used to be a short list here, but that’s been replaced by the much, much better and more comprehensive Life and Code Learn To Program Resource Guide, which combines links all the tools you will need to begin web programming, tutorials, and much, much more.    

Where can I find your source code?  

You can find my source code (including the source code for Journalism Conference Bingo) at github.com/lisawilliams/.

blog comments powered by Disqus
  1. airlinelostluggage reblogged this from lifeandcode
  2. lincoln-sms reblogged this from lifeandcode
  3. manjiistyle reblogged this from lifeandcode
  4. business-mobile-apps reblogged this from lifeandcode
  5. bosch-kuchenmaschine-mum-4405 reblogged this from lifeandcode
  6. ersatzteile-miele-geschirrspuler reblogged this from lifeandcode
  7. website-traffic-tips reblogged this from lifeandcode
  8. volante-xbox-360-prezzo reblogged this from lifeandcode
  9. freshkombucha reblogged this from lifeandcode
  10. shalandavillage40 reblogged this from lifeandcode
  11. kendrasite98 reblogged this from lifeandcode
  12. lifeandcode posted this
About Me

Lisa Williams

Founder of Placeblogger.com | Winner of Knight News Challenge | Center for Civic Media, MIT Media Lab | Cambridge, MA | @lisawilliams on Twitter | lisawilliams on Github