Journalism for Developers
Journalism is a way to tell stories to humans. Just as you program a computer, you can reach out to users and have them interpret words, images or interfaces. However, humans can only use fuzzy logic. This little guide will give you tips on how to program journalistically for a human.
Stories are about user value
News stories need to be relevant, which means they have a use case beginning with: “As a person drinking coffee in the morning I want to...”. The patterns used for this are called news values. In order to be considered ‘newsworthy’ a story must include at least one and often a combination of these elements: a famous person doing a bad thing, for instance, or a big nation messing with a small one. A story follows the Model-View-Controller design. Think of the model as your main point. Let’s say you are telling a story about a rock star caught having sex in the loo. The view is the set of strings, images and visualizations with which the user will interact. Now, you need your point to come across between the model and the views. The controller sends commands to the views and makes sure that the views are generated in a way that’s appropriate for your end-user. If your view is a single line with big letters on a sheet of paper (known as a headline), your controller will adapt the model to fit the audience. If you want people who are unfamiliar with the rock star to buy your product, you would use the straightforward string “Rock star caught having sex in toilets”. If the singer is well known to your audience, however, you could make a pun using a substring from one of his strings, for instance. If it was George Michael, you would print the string “Zip me up before you go-go”, as The Sun did.
Journalists use an outdated search engine called telephone. Mostly it is used for point-to-point information transfer, but it often has many of the characteristics of a good VPN, allowing you to tunnel through institutional boundaries and to get a kind of social port scan. A channel with even higher latencies is the Freedom of Information Request, a query run against government knowledge which often conflicts with their internal security policy. Unlike developers, journalists have yet to adopt open source. Teams of journalists rarely open their work, so that it is difficult to find plug-ins for your story. Legacy stories are rarely documented, so journalists end up covering the same story from the same angle. You cannot fork an existing story! Some organisations do open their work, saving journalists a lot of time when developing stories. This is called open data. The World Bank, for instance, has a lot of free-to-use add-ons for your articles. Unfortunately, journalists themselves rarely publish their work under an MIT licence.
Journalism is an agile method
The newsroom is the space where journalists work together. It functions in an agile fashion resembling Scrum. The scrum master is called the editor-in-chief. They are also the product owner. Every morning, senior journalists gather around the Scrum master to share story ideas and find out what they will be covering that day. A sprint usually lasts 24 hours. Journalists ship a new version every day - that’s even faster than Chrome! Feedback is usually a self-assessment of the previous day’s releases. Journalists usually do not spend much time on reporting anyway. Metrics and key performance indicators are very different from web development. A story with a lot of page views is good, but a story with fewer hits can also be good if it has had a strong social impact.
Testing and debugging
Your grandmother should be able to interpret your story the first time around without any errors popping up! You cannot do includes in an article. You have to estimate the audience’s level of familiarity with the issue at hand and manually rewrite as much content as needed for the story be compiled properly. Some of it is going to get lost in the process, so do link to other sources! Unlike a computer, every human reads a story differently. Humans do have some specifications that make it more likely that they will interpret a story in a given way, but there is always uncertainty. If you release a story about the stock market to the audience of the Financial Times, they will react differently to the audience of your local TV channel. Journalists review their code using editors, who proofread the content and make changes. Sometimes, they might even delete or modify features in your story that will make it buggy for the end-users. There is no public beta in journalism. You can send out your story in the form of a private beta (called an embargo) to select users, but you can never be sure that they will respect the terms.
Pushing and deploying your story
Once you feel you can push and deploy your article, keep in mind that journalism does not support Git, or any versioning system. You can correct typos after publishing, but once your idea is out in the open, it’s very hard to modify it. You cannot just push a patch or an update to the user’s device. Media audiences are quite different from users of other online services. When they want to give feedback, they rarely use the Get Satisfaction plugin (many online media outlets don’t have satisfaction management systems). Instead, they write on Facebook, Twitter and in the comment section. Their aim is rarely to help you debug the story. Instead, they want to show that they can do better journalism than you, without taking any of your constraints into account. Like doing a pull request on one minor feature that would knowingly conflict with every other dependency in your program. Journalism's equivalent of patent trolls are libel trolls. Unlike patent trolls, who only rummage in the US, libel trolls operate from London but they can be based anywhere in the world. All they need are deep pockets and an English-language story they find slanderous. This is why Danish journalists can be sued by Icelandic banks in the UK, without even having servers there.