You can find mine starting at 6:13 (that’s SIX HOURS and thirteen minutes — this video takes in the whole event!)
The title of my talk is “Do I Really Have To Learn To Program?” An early alternate title I considered was "Stop Whining Already." It’s about how getting past your hangups to learn simple programming skills can give you huge advantages if you want to do good journalism or act in the public interest. It contains:
- rainbow poop,
- protest marches,
- Westboro Baptist Church,
- Pulitzer Prizes,
- melting icebergs,
- and babies.
You will love it.
What did I love about TedxPoynter?
I also loved Meredith Censullo’s talk, which was immediately before mine. She’s a traffic reporter, and she had a really funny and insightful talk about realtime media and Twitter. If you want to see something really different, hop around until you see Michelle Royal, who se hand-drawn slides were really fabulous and interesting. And the bravest talk of the day (which also had the most f-bombs) came from Jessica Hopper (In the taxi on the way to the airport, Jessica told me about this piece she wrote about pop star Lana Del Rey, and I read it and YOU MUST READ IT NOW because it’s amazing). Bill Adair gave a talk on an idea that I’ve been kicking around for awhile, namely, narrow comprehensiveness and how the web rewards sites that are “everything about something.” His contribution to helping people think about journalism outside the narrative journalism box was really useful. David Carr and Sree Sreenivasan were also funny and great. I admit, since my talk was rather late in the day I spent a lot of time fidgeting in my seat; it’s a lot easier to pay attention AFTER I’m done doing whatever public speaking I’m up for.
The one thing that I think the tech leaves out, sadly, is the audience reaction. TedxPoynter had a phenomenally engaged, interested, vocal crowd — but all you can hear of the crowd is whatever the handheld or clip-on mike that the speaker is holding manages to pick up. I remember the crowd during my talk being really loud and laughing a lot — in fact I stopped several times so I wasn’t talking over people, but that’s not evident here. Since so much of the energy of an event is the audience, that’s a little too bad, but I figure you guys can add that energy back in your head as you watch.
Organizer Ellyn Angelotti did a great job, as did many others at Poynter. Thanks guys! I look forward to coming back to teach later in the year.
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."
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).
Mark Birch sez: (via marksbirch)
“A Surge in Learning the Language of the Internet” via The New York Times
My friend Andrew Hyde was quoted in this article today, and he sums up my feelings on learning to code pretty succinctly. The gulf between the promise and the reality is still pretty vast. For every successful transition from novice to competent programmer, there are hundreds of others that never cross that chasm.
Several weeks ago I posed the question of whether it is worthwhile for non-technical folks to learn to code. It is a valid question and for all the promise that many of these online tools and courses and books provide, I wonder how much of this effort is wasted.
It is critical to know what your goal is and what you expect out of the learning process. If it is simply to gain an appreciation for technology and have more informed dialogue with technical folks, then many of these classes are certainly useful. If you really want to become a programmer however, it will take a significantly greater level of commitment, several months of heads down coding, and more than your fair share of failures and roadblocks.
I think Mark’s question here is quite similar to “wait, will bloggers become journalists?” Answer: in general, no. Will a few become “real” (read “paid professional”) programmers? Sure, in just the way Brian Seltzer burst out of the blogosphere to a position at the New York Times.
However, the time spent by bloggers who don’t end up working at The Times is far from “wasted.”
I think what we’re seeing is the Pro-Am-ification of computer science, just as we saw the Pro-Am-ification of journalism, Many bloggers engage in journalism but do not — and do not want to — pursue journalism as a profession. I think over the next ten years we will see “citizen programmers” just as we now see “citizen journalists.” There will be plenty of people who learn to program, and do program, but have no intention of pursuing programming as a career.
(BTW, I don’t think there will be as many “citizen programmers” as there are “citizen journalists.” The barrier to entry, as Mark points out, is much higher).
Scratch in 30 Seconds
Scratch is a visual drag n’ drop programming environment aimed at kids but great for teaching novices of any age programming concepts (plus ya can make cool stuffs with it)
Rails for Zombies 2
“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.
1. Too long
If your book claims to be a beginner’s book on a programming language, and is 800 pages, you are doing it wrong. Go back to your editor. Halve the book. I understand that by making the book large, you can justify the expensive price tag, but it certainly doesn’t help a beginner…
Want to find a really GOOD beginner’s programming book? I’m sure there’s more than one, but I review one I went through step by step here: Review: Larry Ullman’s PHP for the Web: A Beginner’s Beginner Guide
Test Drive: Lifehacker Night School’s Learn To Code
Latoya Peterson of the Online News Association test drives Lifehacker Night School’s Learn to Code:
This is actually a really good way to test to see if you have an aptitude for coding. If the Lifehacker session was a breeze, and you finished it within an hour, congratulations! However, if you’re like me, your mistakes and problems will run up the total time investment to close to four hours. I feel a bit better about the basics of coding after I finished, though not completely clear, and I don’t remember half of the concepts they just explained. (What the heck is var, again?) Still, it is a useful reference and fairly easy to follow, so I give it a solid B+.
Want to learn to code? Looking for the right entry point for you? Check out the 100+ free and freely available learn-to-code resources in the Life and Code Resource Guide.
Review: Larry Ullman’s PHP for the Web: A Beginner’s Beginner Guide
Want to find a beginner’s guide to programming that really works for beginners? I know there’s more than one — but here’s one that I know from firsthand experience really works.
Review: Larry Ullman’s PHP for the Web
It can be difficult for novices to find the right starting point when they want to learn to code. Many “beginner” books are in fact “for people who are beginners at THIS programming language” not for “people who are beginners at ANY programming language.”
It can be pretty discouraging to pick up a “beginner” book only to realize you don’t understand a word of it, no?
Before this book, I pushed my way through a number of others, and about half the time I was typing on blind faith — I didn’t always understand what I was typing; I just typed in the hopes that it would eventually become clear.
Sometimes it did. Sometimes it didn’t. I learned some stuff from those books, but I wouldn’t describe it as an ideal pedagogical experience.
I can say without reservation that Larry Ullman’s PHP for the Web is a beginner’s beginner book — it goes through basic programming concepts cleanly and simply, chapters build upon one another, and it doesn’t depend on the reader to already have experiences with concepts like “object oriented programming” or Model-View-Controller. It’s simple, straight-ahead code that demonstrates the basics, like loops, putting stuff in a database and getting it back out, pattern matching with regular expressions, and more.
As another measure of the book’s quality, all the example code actually worked (you’d be surprised how often the example code you can download with many books doesn’t actually work. If you’re a beginner, you’re likely to think the problem is between chair and keyboard even on the rare occasions that it isn’t).
Another problem with beginner books is this: if they’re not baffling you with decidedly un-beginner material, they drop you off far short of where you’d like to be, namely, making cool stuff and putting it on the interwebs. At the end of this book, I could actually put simple useful stuff on the web with the things I learned in this book. Nonetheless, I don’t really want to stop there. The good news is that this book is part of a series of three books of graduating levels of difficulty. I already own the next book in the series, PHP and MySQL for Dynamic Websites, and I’ll be moving on to that next.
Four Things I Wish I Had Known When I Started Programming
1. Pick a good starting point.
The most common question for people to ask me about learning to code is: “What language should I pick.” But that’s not the right question. Here are two better questions: “What community do I want to be part of?” and “What do I want to connect to?”
Let’s say you want to learn to code basic news apps. What are the community of programmer/journalists using? It’s not that hard to find out: the New York Times, The Chicago Tribune, and many others have accounts on Github, where you can see for yourself what languages their stuff is written in. If you choose a language that isn’t widely used in the community you want to join, they won’t be able to help you as much.
What do you want to connect to? Are you drawn to big data projects? Do you want to do mapping-focused sites? Figure out what the projects you admire are written in, and then find beginner resources aimed at that.
2. Find your level.
There are a bewildering number of computer programming books and classes that claim to be aimed at “beginners.” It’s pretty discouraging to pick up the beginner book and realize you don’t understand a word of it. Don’t let it get you down: there’s more out there, and when you’re starting, there’s nothing more important than finding the book or class that’s at your level. The best people to ask? OTHER BEGINNERS. Don’t ask experienced programmers this question — many have the same “beginner inflation” problem that creates those bewildering “beginner” books.
If you find the right book or class, you’ll find that the whole thing unlocks for you in a thrilling and rapid way. I went through an online class that was just okay, a group-readalong of a PHP book where the mentoring was great but the material was really over my head, and then I found Larry Ullman’s PHP book and the lightbulb went on over my head.
Accept the fact that you’ll probably end up at a few dead-ends before you find what works for you. If you reach a dead end, it’s not because you can’t learn — it’s because you haven’t found the right entry point yet. Give it a rest for awhile until the frustration ebbs and try again.
3. Get your tools together.
I mostly want to do programming for the web, and for that, I need tools:
- A web server
- A database
- A programmer’s editor
What would have really helped is finding a friend who would offer an hour of their time to help me get my development environment up and running — I wasted a lot of time trying to download and configure stuff I didn’t end up using, or couldn’t get to work.
If you are doing it yourself? On the “I need a mini local webserver to run the code I’m writing on” front, there are many good free options that bundle the webserver and database together into a single install (MAMP and WAMP come to mind). If you’re doing that for the first time, expect it to feel unfamiliar. There are lots of Youtube screencast videos, and I recommend you watch a few before installing it yourself.
Can you program in Notepad or TextEdit? Sure, but you’re making it unnecessarily hard on yourself. A programmer’s editor has many features that are going to be really useful to you. There’s a list of free ones over at the Life and Code Resource Guide.
I’d also add that it’s a great idea to get a free Github account, and download their Github for the Mac client (if you use a Mac; there are other Windows clients). This provides a secure backup of your code, and, most importantly, if you change your code and it doesn’t work anymore, you can “roll back” your code to a point where it did work. Believe me. You will want to do that.
(The popular site Codecademy gets around the hurdle of setting up a local development environment by having students do everything in the browser. There’s only one problem with that: it’s a walled garden. When it comes time to actually publish that code on the web, instead of the Codecademy sandbox, you still need to understand the basics of how to set up a web server and database. Nonetheless, Codecademy is popular for a reason and a great beginner option for learning basic programming concepts).
4. Ask people for good beginner projects.
One of the biggest problems you’ll have as a novice coder is that it’s difficult for you to judge whether an idea you have for a project is complicated or not complicated. This is where you do want to ask experienced programmers — ask them, “What’s the simplest thing that I can do that has cool results? What can I do in an hour?” For people interested in using programming in a journalistic context, I’d say there are three project areas that can prove very fruitful even for novices:
- Scraping. We’ve entered the era of ‘big data.’ Sadly, a lot of that data is wrapped up in unusable formats on crappy government websites. So how do you get it out so you can do something super-cool with it? You learn how to write programs in your language of choice that “scrape” the data and put it in a nice, easy to use format.
- Mashups. Even as a novice coder, you can find code out there that will let you take information from Website A and put it on your Website B, while adding a little customization of your own. Want to make a page that shows the highest rated movies in your zipcode? Both the NYT and Netflix have APIs for that.
- Mapping. There are so many great mapping tools out there, and many of them allow you to do cool things with minimal, simple code.
Want to find your starting point? I wrote the Learn to Code Resource Guide, with 100+ free resources for beginners.
- news nerd OR
- aspiring coder OR
- data journalism connoisseur
For every day of the year!
“How I Learned to Program,” Randall Degges.
“Learning to program isn’t the hard part. The biggest challenge is figuring out how all the moving parts of a web application fit together. There’s no book for that.”
This is so spot on. The coding of the frontend is one matter. The backend is another. Linking the APIs together. Then it’s buying a domain. Setting up the domain. Ftping the files in. Testing it out across all your web browsers and phones. Making sure all that stuff works. This is what making things for yourself and putting them live in the real world teaches you. It opens questions that you hopefully can answer but trying it out. As Aristotle put it -
For the things we have to learn before we can do, we learn by doing.