My daughter, a cult guitarist, and how journalists can become semicompetent programmers, pretty much in that order
Warning: this is a much longer post than what usually shows up on this blog, but it’s an attempt to answer an important question I get asked all too regularly.
I was in the living room, listening to Lydia’s computer in the dining room. She was listening to “Hammond Song,” my favorite performance by the Roches, and I was lost in Robert Fripp’s guitar solo. After that, I was hungry to hear some more Fripp (the only other Roches song I felt like listening to was “Losing True,” which moves me but is damn near the same song as “Hammond Song” so I passed). I’ve enjoyed Fripp’s work with other people (Bowie, Blondie, Talking Heads) although I’ve never owned a King Crimson record. I saw Fripp live twice in the early ’80s, once at Irving Plaza leading his sharp, funky League of Gentlemen, once six months later at a WXPN benefit in Penn’s Houston Hall, when he was in Frippertronics mode. And that joint interview he did with Joe Strummer around the same time had an enormous influence on me as a beginning interviewer of rock stars.
I looked up Fripp on Spotify and was greeted not by music, but a recording of a keynote address he gave to a conference of motivational speakers, among them his sister. I found the talk engaging, adventurous, and practical; if you have Spotify, check it out.
Among many other gifts, the talk offered a great contradictory lesson. Several times during it, Fripp talked about how important it is to work with people who are better than you. True, and I try to do that whenever I can, but Fripp delivered insight after insight during the talk; he wasn’t learning from anyone else there, he was helping everyone else there. It’s a lovely, humble talk about mastery.
As I continue to get not younger, I understand more and more the value of surrounding myself, both in my work life and in my life life, with people who are better than me. But every now and then I get the chance to help someone else — I have learned a few things — and this blog gives me a chance to pass on what I’ve learned publicly. Here’s a question I get asked at least weekly, both by fellow veterans and newcomers to my profession: I’m a journalist and I’d like to continue being employed as a journalist. Everywhere I read that an employable journalist is as competent with 0s and 1s as I am with nouns and verbs. Does that mean I need to become a computer programmer?
Back when I helped out at GNN, O’Reilly’s early online service, and Delphi, the first of many online services that Rupert Murdoch’s ownership ruined, I thought there might be a brief opening for an editorial person who “got” the web. (Fortunately, almost two decades later, that window hasn’t closed yet.) One of the ways I’ve been able to make a go of it has been to learn how to program.
The idea is to make computer programming one of the tools in your journalistic kit, something that makes it easier for employers or clients to work with you. I once pitched a project conducting an online survey for a syndicated research firm and one of the reasons I got the gig was that I was able to do the whole project myself, not just designing the survey and interpreting the results, but also getting a working survey onto the web. These were in the pre-SurveyMonkey days when you needed to be able to do some grunt-level coding (in that case, in Perl) to create an online survey. I did plenty more work with that company in the years that followed; most of it was straight editorial, but knowing I could solve a technology problem independently made my client more comfortable keeping me around.
Although there are particular skills a programming journalist needs, what the ability to code offers a writer more than anything else is a way, an approach, even more than specific, problem-solving skills. To be a competent computer programmer, even for relatively simple web-based programs, you have to be able to break down a complex problem into small, manageable pieces. That’s a career skill, a life skill, and it’s something that programming forces you to do if you want to get any good at it. I’ve never been able to code for hours as if under a spell, which professional programmers can do easily. I can get into that zone as a writer, but not as a programmer. As someone who’s more journalist than programmer, that will likely be the case for you, too, so you will not spend hours under headphones, able to keep disparate parts of a large coding matter in your mind at the same time. You’ll break your pseudocode into small, manageable chunks, and then go from pseudocode to real code.
And chances are you’re not just writing code, you’re editing code someone else has written. Whatever problem you’re trying to solve as a programmer/journalist, there’s a very good chance that you are not the first person who’s had to solve this problem. Any popular language you are working with will have repositories all over the web of publicly available code that can solve at least part of your problem with only minimal customization, and, more important to your development, show you how other people approached the same issues. Curious journalist/programmers don’t just paste in code; they read it over — just like a beginning journalist reads John McPhee or Robert Caro — to learn how the pros do it. Then they make their own way.
That’s how you might want to proceed conceptually. Here are some admittedly idiosyncratic recommendations regarding what particular skills a journalist/programmer could use. (And I mean use practically. My favorite language to work in, the Lisp dialect Scheme, as taught in the beloved wizard book, is a learning language only. I’m more likely to get paid as a theremin roadie than as a Scheme programmer.)
The foundation: HTML/CSS/HTML5. Thanks to visual tools, journalists can work in web publishing with minimal exposure to HTML (Hypertext Markup Language). That’s not a good thing; it prevents journalists from knowing even the rudiments of the platform they’re working on. It’s hard to produce a vivid sound recording without knowing how to work a physical or virtual mixing board; similarly, how can you make your story work best on the web, tablets, and mobile devices if you don’t have a basic understanding of what the formats can do? HTML isn’t even full-fledged coding. It’s more page layout. Understanding HTML is not much harder than understanding how to use early DOS word processors like WordStar and XyWrite, programs that made you explicitly underline, etc.
The two steps after HTML are CSS and HTML5. CSS (Cascading Style Sheets) gives more precise layout tools and makes it easier to separate content from layout. HTML5, the latest version of the HTML standard, is still under development, but it’s already being used on many websites and in many web applications, particularly those aiming for tablets and mobile devices. There are an avalanche of useful new commands in HTML5 that make it much easier to integrate multimedia (HTML5’s ability to do this is one of the reasons Adobe’s more cumbersome Flash format is going away).
You don’t have to memorize too much HTML(5)/CSS syntax; there are plenty of online and offline resources. And don’t worry about learning explicitly what every last command parameter can do. The key is to know what tools are available and have a general sense of which one will get you out of which types of problems. You don’t have to know everything; you’ll know when you know enough.
You also need to know how to manage a database. In the late ’90s, when I got serious about educating myself as a journalist who could program, I became a great fan of Philip Greenspun, particularly his book Philip and Alex’s Guide to Web Publishing. In addition to being a physically beautiful object (Greenspun is an accomplished and very opinionated photographer), the Guide spelled out what anyone who had aspirations of becoming a web programmer had to know. Greenspun’s knowledge and style placed his book high above the “Teach Yourself TK in 21 Days” books that were popular at the time. He was rigorous, he was funny, and his approach made you want to learn. In particular, he showed why being able to manage a database was the key to building and maintaining any real website. That’s still the case: the fancy content management systems journalists use today, from bare-bones blog-building systems like WordPress to the more bloated “enterprise” systems, are customized databases. Many database systems are built around SQL; Greenspun has a guide to SQL, too, but don’t attempt that before you’ve got a good grounding in web technologies.
Finally, learn one language, any language (parenthetical removed; see why in the comments). There are plenty of arguments for learning plenty of different languages, but I think journalists entering the word of programming are best-served by learning Python. The tools you pick up are reasonably transferable to other languages, Python is built into OS X so you don’t have to install it, and how can you dislike a language with metasyntactic variables (spam and eggs) that clearly came from Monty Python?
Best of all, Python is a strong learning language. MIT uses it to teach people how to think like programmers. You can download the course text, How to Think Like a Computer Scientist: Learning With Python, to get a sense of how Python is a useful vehicle for starting programming. Python is also used as the entry language for my alma mater O’Reilly’s useful and entertaining Head First series for new programmers. Python is a powerful scripting language for web apps, but for someone who intends to be a journalist first and a programmer second (or tenth), it’s just a smart way in.
I am far from a professional programmer. Folks hire me because of my editorial and consulting skills, not because I can code kickass regular expressions (I can’t). But learning how to program lets me understand a problem from more sides and makes it more likely that I can help a company figure out how to solve it. Learning how to program has helped me and I hope it helps you too. I also hope this answers the question of how to become a journalist/programmer adequately; I’m going to point people who ask me that here from now on.
Even if you’re a journalist who never wants to write a line of code professionally, you can become a better digital journalist if you understand the technologies without which no one could ever experience your journalism. And the best way to understand is to do. One of the aspects I enjoyed most of the Robert Fripp talk I wrote about at the top of the post is that it captures the joy of learning something, getting better at it, and mastering it. While I was finishing this post, I heard the Roches’ “Hammond Song” coming from another room once again. But my daughter wasn’t listening to the Roches anymore. She had mastered the song and now she was singing it herself.