If I had one piece of advice to a journalist starting out now, it would be: learn to code

Yes, it would. Seriously, if you’re doing one of those courses where they’re making you learn shorthand and so on, take some time to learn to code.

OK, you might think that I’m saying this because I’m in technology. Not at all. All sorts of fields of journalism – basically, any where you’re going to have to keep on top of a lot of data that will be updated, regularly or not – will benefit from being able to analyse and dig into that data, and present it in interesting ways.

Let’s be clear that I’m not saying “code” as in “get deep into C++ or Java”, though I guess you could. (After all, it might give you something to fall back on if the journalism doesn’t work out…) I mean it in the sense of having a nodding acquaintance with methods of programming, and perhaps a few languages, so that when something comes along where you’ll need, say, to transform data from one form to another, you can. Or where you need to make your own life easier by automating some process or other.

Me? I taught myself BASIC all those years ago (even wrote a completely useless game in it, though it amused some folk at school). Then a long pause, then was taught Z-80 assembler at university, and then a bit of Cobol in my first job, and then a long pause before I bumped along in HTML (of course), Applescript, SQL, and PHP. I’ve tried to teach myself Cocoa and failed pretty miserably; I’ve not got any C, so it’s all a bit mysterious to me. Perl I’ve read a book of and realised I’d need a lot longer; Javascript ditto. (I can read Javascript as though it was a foreign language.) CSS, which I think is pretty much a coding language (it tells web pages what to do) I can muddle about in. (I tweaked the usual CSS of WordPress to produce this page.)

And what good has it been? The Applescript I use all the time, to automate all sorts of things – at work, we save hours and hours every week not having to do the text formatting of the Letters and Blogs section, the Ask Jack section, and the Newsbytes section, because I wrote Applescripts that automate the formatting. Similarly, for every story, I run a script before we start subbing that removes double spaces, turns “percent ” into “% ” (programming question: why is the space is there?) and decapitalises “Internet” (Guardian style is “internet”) except at the start of sentences.

And I can hack my own blog, and the Free Our Data blog, because I understand PHP (and CSS a bit – it took me ages figuring out how to make the FOD blog lay out a particular way in a single post; one line of CSS). And I can set up and run a MySQL database on my own machine, and store the links for all the Technology sections I’ve edited, for use to find who has linked to us which then goes into the week’s letters. Which then gets formatted by me…

But there’s a huge hinterland of stuff to be done with data that I haven’t even touched on. I haven’t taken the time to understand the Google Maps API yet; I think it’s probably the most powerful API that a journalist can presently use (which does mean I should take more time; Lord, give me a couple more hours per day, huh?), just because news becomes so much more relevant when it becomes local. Even just being able to visualise – as Fraser Speirs suggested – what it would be like if you had a militant group in the UK sending mortars across the borders as Hamas does in Israel. (I’m not taking sides. I’m showing that you need to understand people.)

My coding? Not that great. Your coding? Could be a lot better. Great coding? You’d be able to knock up something like the Guardian BNP map without a second thought. And the journalism then flows on from that, because you can see so much more clearly. If you’re tracking the data, you’ll be able to see when something changes, when something unusual happens.

None of which is saying you shouldn’t be talking to your sources, and questioning what you’re told, and trying to find other means of finding stuff out from people. But nowadays, computers are a sort of primary source too. You’ve got to learn to interrogate them effectively – and quote them meaningfully – too.


  1. Yep all good advice. I started learning bits of ASP, PHP and CSS a while ago, and can now mess up my blog with the best of them. I couldn’t build a site, but I can get my hands dirty on the understanding that I’ll break something a dozen times before getting it right.

    There’s a real gap in the market for a book that gives you the rudiments across a variety of languages that’s writen specifically for journalists. I’d have snapped one up.

  2. This is brilliant to read. I’m an aspiring journalist/writer/columnist type, and thankfully due to teenage aspirations of being a computer programmer and spending too much time indoors, I’m pretty well versed in PHP/MySQL/CSS/HTML and the like!

  3. As well as the above – JavaScript and PHP are both vital – I’d recommend Python, as it’s got a great ability to grok through lots of data, is more human-friendly than Perl, and the code conventions go some way to making you code properly. It handles remote APIs and XML pretty well which makes it a good fit with APIs as well.

  4. Just to say that if you know PHP, you know quite a bit about C. They’re very similar in syntax, just different in output.

    Oh, and I would advise ‘a journalist starting out now’ to learn to code for a different reason – there’s more demand/money in coding than reporting!

  5. Morning Charles, long time no speak, you’re in my Twitter faves on TweetDeck which is how come I’ve found this.
    I totally agree with your advice to learn code.Even if you’re a girl. If I’m spending any amount of time in a foreign country, I learn the basics of the language first, otherwise how on earth are you going to communicate properly? If you only speak with other foreigners and ex-pats it’s like seeing a country through fog.

    Computers are the same. If you’re going to hang around in cyberspace (or the matrix or whatever it’s called nowadays) then you need to speak the lingo. At the very least you need to know basic html but I’m finding CSS invaluable in all sorts of ways I hadn’t expected and I’m slowly learning bits of JavaScript as I go on. CSS has reduced me to tears on occasions but so did German verb conjugation. It’s just practise, really.

  6. This has made me smile as I also wrote a game in BASIC and was very pleased with myself, it made a noise like the computer on Family Fortunes when someone got an answer wrong.

    Anyway, I agree that learning code is a good idea so long as people don’t take that to mean at the expense of the things you list in your last par.

    I think that freelance journalists should also learn how to code to help them republish what they have written as effectively as possible, creating not only a shop window for their work but also starting to build more income from it.

  7. Conversely, my advice to anyone starting a career in the software industry is: learn to read journalism.

  8. There is a huge difference however between good coders and great coders. I think that BNP map was done by Simon Willison who is a great coder.

  9. Hm… as an unemployed programmer, the last thing I need is yet more inexperienced competition! There’s a lot more to serious coding than hacking a bit of PHP together for a website.

    So by all means learn to mess about with Javascript, PHP and the Google APIs, if you want, because it’s fun anyway (in a geeky kind of a way…). And I’d second the recommendation for learning Python, and add a recommendation for the Python-based development framework Django http://www.djangoproject.com/, which (spookily) was originally developed to help produce newspaper websites.

    But for would-be journalists, I recommend you remember Rule 1: Don’t re-invent the wheel. If you can find a sophisticated free content management system (CMS), like Drupal or Joomla (in the PHP world) for example, why on earth do you want to cobble together your own?

    So I’d recommend skipping the IT classes and paying more attention to developing your skills in independent and critical thinking – maybe try classes in history, philosophy, logic or the sciences – because in recent years we’ve seen a real decline in the quality of intelligently critical journalism, as many media outlets simply re-cycle press releases from powerful lobbies (governments, industry, armies, corporate PR, political spin-doctors, and so on).

    Why not be a good journalist rather than a second-rate programmer?

  10. @chris

    “Id recommend skipping the IT classes and paying more attention to developing your skills in independent and critical thinking.”

    What you may have missed is that coding from a journalist’s perspective can go a long way from just building websites. There are now regular courses on computer-assisted journalism – one runs as a part of a course at City Uni every July. One of the examples they use is SQL access to a database of health inspections at London restaurants to tease out trends or identify bad eateries. You don’t want to sift that data by hand so familiarity with SQL perhaps with Perl or Python to do some additional crunching is a definite plus. Financial reports and government documents offer a lot of scope for getting the computer to do the grunt work. People have used web-mining tools to identify stories. If you don’t understand how those things work, it’s tough to brief a programmer if you think you don’t want to do it yourself.

    Similarly, with visualisations, understanding what Flash and SVG might be able to do can help structure data for the developer.

    Lack of time is the cause of churnalism, not lack of critical thought about potential stories and how they might be teased out.

  11. I did “one of those courses” where you learn shorthand and media law and that sort of malarkey. One of the things that stuck in my mind for a long time was that my tutor, Bob Jones, used to say: “Your job as a journalist isn’t to know things. It’s to know the people who know things.”

    Is there not an argument for saying more core skill as a journalist is my ability to identify stories, get good interviews, write something coherent? Why not simply know people who can code for me? As a freelance in particular, it’s about opportunity cost – the time taken to learn those programming languages effectively would take an awful long time to deliver any sort of return on investment.

    Second, as technology evolves, it tends to become more intuitive. Lots of smart people I talk to in the tech sector tell me the future of tech is in web services and abstraction and being able to tell the computer what I want to achieve, and letting the machine find the right code and assemble it for me. Which sounds like a lot less work. Long-term, how much programming do you think the likes of me are going to need?

    I’m not disagreeing a basic knowledge is a good thing – I’ve learned a little programming but I take shortcuts where I can. You write a script to put stuff in house style. I use Word’s rules feature and a client-specific custom dictionary. No coding required.

  12. +1 for Python. It’s fairly easy to learn, yet is flexible to build anything, from a simple awk replacement script right up to a newspaper website. It tends to incline you towards good coding habits, too, and it’s very pretty. What more could you ask?

    And you have plenty of Python geeks in-house at the Guardian, so you have somewhere to go for help.


  13. I don’t know about this one. Content Management Systems should pick up the work here so that the reporters can concentrate on reporting. We’re already stretching a lot of reporters by having them multitask.

    Also – let’s be realistic here – while reporters may not learn deep levels of coding, if they start to learn ‘just enough to get things done’ then you’ll have papers merge the two sets of functions and then that’s another group of skilled people out on the dole (those who don’t do both).

    Let there be inhouse programmers for this and let the reporters get on with the reporting.

  14. programming question: why is the space is there?

    To stop conversion of words like percentile and percentage. every word of "this is a sample containing the word percent" contains "percent"

    Any advice for people who can code who want to write?

  15. Perhaps only those who fail to deliver in other areas of newsgathering need worry.

    A friend once told me a story about a colleague who was awful at spelling and structuring the flow of his story. Asked how he managed to stay on the paper, he was told that the shoddy writer regularly delivered killer exclusives and stories – more than his well written colleagues. A multi-tasking, belt and braces approach is always a winner, but would a person of go-getting talent really be turned down because his HTML honks?

    The increasing adoption of ‘textile’ in CMS platforms should reduce the need for coding knowledge anyway. Search for ‘textile CMS driven websites’ for more info.