In my previous post, Getting Started Building Apps: Concrete Steps For Beginners, I described a path for starting to learn how to program. It is a guide to online resources and books that a motivated beginner can follow to get up and running.

As much as I wish I had this guide when I was trying to get started, I have a confession to make: it wouldn’t have been enough for me to get to where I am today as a developer.

I tried for years to teach myself to code using books and online tutorials, even college courses, but always failed to gain a critical mass of useful skills. It was like my Spanish courses in school: after class was out, I was back to worrying about other things, and I had no way of knowing which parts of what I was learning were actually useful.

Programming languages are just like any other language, so, unsurprisingly, it took total immersion to finally get me usable, practical fluency. I found this immersion at Code Academy.

Code Academy is a physical school in downtown Chicago that teaches passionate and persistent beginners how to make their ideas real through code.


rugb: Immersion 

Life And Code’s Learn to Code Resource Guide Updated: 90+ free resources for beginners

Newly updated for today’s #tedxpoynter conference, the Life and Code Learn to Code Resource Guide has 90+ resources for beginner and aspiring programmers.

This is a list of resources you can use to begin to write your own programs, written with journalists in mind.  I focus mostly on free resources that are available to anybody online, and resources useful to people starting from scratch. I will be adding to this over time.  If you’d like to know about new additions, subscribe to this blog (or follow us on Tumblr).  If you have additions or corrections, please leave a comment below. You can also follow me on Twitter, where I am @lisawilliams

Getting started building apps: concrete steps for beginners


The Short Version

  1. Note down an idea that you want to make real.
  2. Mock it up.
  3. Make the mockup real with HTML/CSS.
  4. Lay the foundation with Ruby.
  5. Bring the static mockup to life with Rails.
  6. Join the community.

The Long Version

For beginners who want to…

MAKE Magazine for the Codecademy Generation

Codecademy (and many other coding-101 efforts) have unleashed this entire new population of people with some basic skills, but without some interesting beginner projects to tackle, they’ll probably lose interest; so if you’re aiming at that, I certainly think you’re on to something!

It would be great to have a few themes — games, coding for the civic good (maybe showing people how to do something interesting with some public data), automating some stuff, APIs….




I own it now.

I just need to point it at my big shiny API and the Hack-A-Week project will be in badass shape.

One thing the amateur coding movement needs is widely available small project plans. We need a MAKE magazine for aspiring coders.


I own it now.

I just need to point it at my big shiny API and the Hack-A-Week project will be in badass shape.

One thing the amateur coding movement needs is widely available small project plans.  We need a MAKE magazine for aspiring coders.  

"Literacy itself is a complex term that encompasses a broad spectrum. In our case, literacy is a basic communication skill, akin to numeracy or traditional language literacy. We’re not aiming to make everyone into Joycean code experimenters pushing the boundaries of language and comprehension, nor are we aiming to move everyone toward Hemingway-esque brevity and conciseness, but if some of you decide those pathways are for you, all the better. At least you’ll be moving forward with a broader understanding of what’s possible. And you will be making the decision for yourself, not having it handed to you by some faceless mega-corporation."

Learning, coding, systems of power, and Mozilla « Persona (via thoughtshrapnel)

People, not everyone needs to learn programming. Only some gifted individuals (of which we professional software developers are included) need to learn programming. For the rest of you, unless you are srsly committed it will just be a meaningless chore that may damage your tiny brains.

Coding is just like surgery: if an amateur decides to code their own Angry Birds clone as a fun little project, people will literally die. Those are the stakes, folks. That’s why it should be left to those who are explicitly pursing it as a professional career.


Please Don’t Learn To Code, Because It Will Damage Your Tiny Brain,” some tasty snark from Al Sweigart in response to Jeff Atwood’s “Please Don’t Learn To Code.”
"I’m going to give you a piece of advice when you’re trying to learn something new: Never listen to people who try to make beginners feel like losers."

Please Don’t Become Anything, Especially A Programmer,” Zed Shaw, author of Learn Python The Hard Way, responding to Jeff Atwood’s “Please Don’t Learn To Code. 
"This stupid, snobby, pointless (unless you consider desperate trolling for visits a point) article from a couple days ago has really been sticking in my craw. “Please don’t learn to code” could be alternately titled “why people hate developers”. The insecurity and elitism oozes out of every word here. “My craft is far too complex and precious for someone as stupid as you to learn it,” it says.
Let’s just be clear that there’s a HUGE difference between saying that everyone should be a developer and everyone should learn to code. The former is a dumb statement and no one would ever say it. The latter is simply that the concept of coding has become an extremely important knowledge to understanding the world around us.
I’ve spent years of working around people who work on the web for a living who still think that writing programs and web code is like writing an email in another language: that you just kind of move things around on a page. It’s not until you see how it functions—even basically—and have gone through troubleshooting even something as simple as an HTML table that you start to get different writing code is from writing words, and start to appreciate the knowledge that goes into it.
Just as a tiny percentage of people who learn math go on to be mathematicians or engineers, teaching people basic code doesn’t mean they’ll all go off to be developers, and we don’t need them to. But we do need more people to stop segregating coding as something that only “techie” people do and they can remain willfully ignorant of."

Reid Dossinger: Please learn to code 

I don’t actually think the piece on Coding Horror is as bad as Reid seems to think it is.  

I do think that the “real coders” v. “people doing Codeyear” thing is going to end up looking exactly like “bloggers v. journalists,” only much, much smaller.  

Steve Meyers rounds up the reaction from a journalism point of view, tackling the newly-perennial “should journalists learn to code” question  (My answer?  No, absolutely not.  Only if you want to have fun and enjoy some shred of job security.  Otherwise, carry on with your badass narrative journalism, friend).

i-am-myself-pondering asked: Hey there, can I ask how can someone who's beginning to learn programming overcome frustration? Furthermore, should someone who's ulike most geeks out there i.e. not been programming since they're 12 or so, pursue their interest in this field or is it too late? Thanks. I love your blog, especially that I'm a girl, you inspire me :-)

OH MAN!  Do I feel you.  

I get frustrated all the time!  

There are two major causes of my frustration as a novice coder, and there are a few things I’ve found that help me make progress and lessen that frustration.    

The two big causes of my frustration:

  1. Being in over my head.  I’ve picked up a lot of “programming for beginners” books and tutorials — and there were a lot of them I couldn’t make heads or tails of.  Perhaps they really meant “this is a book for people who already program in another language, but are new to this language.”  In any case, I’d end up typing example code I didn’t understand, and not know what went wrong when it didn’t work.  
  2. Getting stuck.  At some point, I always get stuck.  I’m writing a program — perhaps I’m even retyping example code — and when I try to run the program? It doesn’t work.  And for the life of me, I cannot figure out why. 

These are some things that I’ve found lessen my frustration: 

  1. Fail fast.  You know that startup axiom “fail fast”?  I think you should do that with learning, too.  If a book, tutorial, or class is too difficult, and you feel completely baffled?  Ditch it.  It’s not the right book, class, or tutorial for you.  Spend time finding the right book, class, or tutorial, instead of trying to make one work that doesn’t fit you.  
  2. When you get stuck, ASK a PERSON for help.  Yes, ask Google first.  But when that doesn’t work, ASK A PERSON.  If you don’t have any people in your life who you can ask yet, try a site like Stack Overflow.  Be sure to look to see if your question has been answered first, but in general if you are polite and sincere, I’ve found that people are friendly and helpful.  I’ve actually cut and pasted code into a question, and described what’s not working, and had people answer me within 5 minutes. 
  3. STEP AWAY FROM THE COMPUTER.  I always find I’m the most frustrated when I’m tired — either because I’ve been at it a few hours, or because it’s late at night.  Now if it’s late and I’m frustrated?  I go watch a movie or exercise and pick it up again in the morning :)

Now, about your “is it too late” question.  Here’s what I think: I think if you want to make your living as a computer programmer, that’s going to take several years of full-time effort.  

I already have a profession I really like, and I have a husband and a family I REALLY REALLY like.  I don’t ever intend to make my living as a computer programmer.  However, I already use several simple programs I made for my own use every day. I started writing stuff for my own use after about three months of daily effort, where I devoted the equivalent of an hour a day (I sometimes skipped days and doubled up on others). It’s my aim to get good enough to make simple programs for the civic good — and something like a map of public gardens with weather information, or a guide for parents on how to apply for magnet schools or find special education resources doesn’t require the same amount of skill I’d need to get a job at Google.  

So, it’s not really a matter of “is it too late” — it’s a matter of what kind of end result you want, and whether or not you have the resources right now to achieve that end result.  

"Khan Academy has gained popularity recently with its 3200+ videos on more than just Computer Science. Categories include Math, Science, Finance and Economics, and Humanities. You can create an account if you like and track your progress or surf the videos anonymously. There are also unofficial apps for Android, iOS and a Roku channel.
Coursera offers free courses on a wide range of topics which include Comp Sci, Business, Humanities, Biology, Medicine, Mathematics and Social Sciences. Course duration ranges from 4 -12 weeks and start at various times throughout the year. These classes are hosted by Berkeley, Princeton, Stanford, University of Michigan and University of Pennsylvania.
Udacity has a much smaller set of classes compared to the previous options but their ~10 classes are all geared towards Computer Science. Classes include CS101: Building a Search Engine, CS373: Programming a Robotic Car and CS387: Applied Cryptography. Udacity promises many more classes to come.
I’m currently taking a course offered by Udacity and plan on sampling some of what the other ones have to offer. Possibly an in depth review on the pro’s and con’s of each to follow."

Adjust the sails.: Free Knowledge! 

What concepts should aspiring coders know BEFORE they start?

Hey nerds and aspiring nerds!  

Exciting news today: Life and Code, the learn-to-code Tumblr written with journalists in mind, has reached 500 followers. Cool!  

In honor of that, I want to add to the Life and Code Learn to Program Resource Guide with a list of basic concepts and tools that a beginner should understand BEFORE they pick up that first programming book or crack open that first tutorial.  

What do you think is missing from this list?  What do you think beginners should know BEFORE they start?  What confused you when you were learning?

  1. Algorithms
  2. Variables
  3. Arrays
  4. Constants
  5. Includes
  6. Syntax
  7. Text Editor vs IDE
  8. Version control

Also, I want to include something on model-view-controller/object oriented, and functional/procedural, but I’m not quite sure what I’d call those categories.  Halp?  

aliukani asked: Hi Lisa! Why'd you pick up PHP over Ruby or Python?


I started in PHP for two reasons:

  1. I did and do run a lot of sites based on the Drupal open-source content management system, which is written in PHP.  I wanted to be able to look under the hood. 
  2. There is a very active PHP Meetup group in Boston where I live, and the group has a program where experienced coders mentor novice coders.  There are regular read-alongs where members work their way through a book, a chapter a week, and help each other when they get stuck.  It’s awesome!  I’d tried to work my way through books on my own (including Chris Pine’s highly regarded book on Ruby) but working on my own, I’d just get stuck and I had no one around to ask.  (Sure, I could have asked the Interwebz, but it was way better when there was a group of people all working their way through the same book who I could have coffee with on weekends besides). 

Certainly PHP is not a cool-kids’ language these days, and I think once I get a little more proficient I might take a look into beginner books/tutorials/classes in either Python or Ruby.  

"Feeling dejected and scared that my enjoyable dive into coding was about to turn into a nightmare, I considered quitting. Who was I kidding? I’m a consumer, not a creator, right? Luckily, I’m bad at knowing when to quit, and I vowed to stick to my goal of learning what this whole world of computer programming was all about."

A N00b’s Journey Into Coding,” Ryan Levick.  Worth the read if you want to know what it’s like to try learning to program from scratch. 
About Me

Lisa Williams

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