Quick thoughts on journalism and version control

Today at work I got my own sandbox for web development. In a Skype conversation with the lead developer, he said I could get a branch off the trunk for certain projects I might work on.

Basically, I would have a testing environment (sandbox) and it would make sense to also have a place (branch) to work on something separate from core development code (trunk) that the development team uses.

The larger theme here is version control, which I’ve known about generally for a while and am now exploring further as I start using — and reading up on – Subversion.

Version control is one of the parallels I drew between journalism and programming concepts in my second post inspired by computational thinking. Specifically:

Version control: When creating software, a core principle is keeping track of each iteration of the project. In the editing workflow of a news organization, you ideally keep track of different revisions, either on a single document (for The Hurricane, that would be in the WordPress admin) with a history or by saving a new document and noting who last saw it (as The Hurricane did before switching to WordPress).

Now that I better understand the tree, trunk and branch terms in the context of version control, I wonder why we don’t apply these principals to journalism — and how we could.

In short, another instance of rethinking our thinking about how we practice journalism and what areas can better inform what we do.

A conceptual example

Say I’m a reporter working on a story about the Gulf of Mexico oil, that story would have its own “trunk.” The journalists in my newsroom would all work off that trunk. But we only have limited resources and we’re not personally experiencing the disaster, so we open up branches for business owners and residents affected by the spill to help them tell their own stories.

Or maybe I’m working on another on-going story, such as unemployment. There’s a trunk that the newsroom works on and branches for unemployed workers to also contribute.

In either case, you can bring in others to directly collaborate in some way. The branches could be working versions of content the collaborators are producing and need to be checked before being added to the trunk.

This is already being done in many places where people submit personal stories, photos, videos, etc. Applying version control concepts would be a way to better incorporate outside material (from other newsrooms or amateur contributors) on a level field, rather than relegating it to a separate and/or lesser space or doing so haphazardly.

The tool

Maybe the platform could be a simple system such as how Wikipedia, WordPress or Google Docs show revisions history. But it could also be as advanced as using Subversion itself, which is

a general system that can be used to manage any collection of files. For you, those files might be source code—for others, anything from grocery shopping lists to digital video mixdowns and beyond.

The ideal would probably be something in the middle that’s more robust than the three examples mentioned above yet simpler and more user-friendly than Subversion.

Applying version control — and other programming concepts — to journalism makes sense to me because of shared fundamentals such as working collaboratively, checking each others’ work and updating/revising.

Anyway, it’s an idea that popped into my head and, to reiterate the questions, made me wonder: could we apply version control concepts to journalism? And, if so, how could we best do this?

UPDATE: (7-11-10) Two posts relevant to the version control and journalism discussion that I’d completely forgotten about: Version Control for Campaign Promises by Brian Boyer and ProPublica’s ChangeTracker Lets You Watch Government’s Moves by Megan Taylor, which is about one of Brian’s projects.

Rethinking Our Thinking, part 2: Computational thinking and the new journalism mindset

With all the discussion of the skill set and mindset necessary for journalists today — both of which are important — we need to also consider a deeper question about mindset: how to go about rethinking our thinking. One key area of exploration is computational thinking, through which we can tie the practice of journalism to the digital technology at the heart of new publication and distribution systems.

I recently led a session on this at BarCamp NewsInnovation Philly. It began with a brainstorming discussion on different types of thinking, which were mapped in the graphic below. My Publish2 colleague, Lauren Rabaino, also took extensive notes (there’s summary of coverage at the end of this post).

Mindmap by Aram Zucker-Scharff

My interest in different types of “thinking” came as I researched computational thinking, a concept outlined by Jeannette Wing, then a professor at Carnegie Mellon. This term “represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use,” she says.

Wing, now at the National Science Foundation, said in her 2006 article:

“Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science. Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science.”

Some “everyday examples” of computational thinking that she outlines include:

“When your daughter goes to school in the morning, she puts in her backpack the things she needs for the day; that’s prefetching and caching. When your son loses his mittens, you suggest he retrace his steps; that’s backtracking. At what point do you stop renting skis and buy yourself a pair?; that’s online algorithms. Which line do you stand in at the supermarket?; that’s performance modeling for multi-server systems. Why does your telephone still work during a power outage?; that’s independence of failure and redundancy in design…”

A few days after BCNI Philly, I came across a May 2009 piece by Kim Pearson that relates the concept to journalism. In it she articulates some insightful points, including that “computational thinking is more than digital literacy.” Also,

“I’m not saying that journalists need to become programmers. I’m saying that we need to be able to reason abstractly about what we do, understand the full palette of computational tools at our disposal, and collaborate to deploy those tools with maximum efficiency and effectiveness.”

This ties in to something I said at the session, in response to a comment about what it means to bring computational thinking to journalism: It’s not about turning the reporting process into a rigid, scientific formula — journalism incorporates both art and science. It’s about taking the concepts, ideas, practices, etc. from different areas of thinking — including computation — and applying them to do better journalism.

[UPDATE: Pearson saw the original version of this post Publish2's blog and published this follow-up: Scholastic Journalism Education as a Tool for Teaching Computational Thinking. I highly recommend reading it -- it's given me some new ideas about this in the context of education.]

There’s so much more that could be done — and at a more fundamental level — to improve our journalism with this additional way of thinking. Though he doesn’t identify it specifically, computational thinking is very much at the heart of the ideas outlined by Stijn Debrouwere in We’re in the information business and the rest of his series on information architecture for news):

“Let’s not kid ourselves. A new way of doing journalism requires new technology to support and foster that innovation. That technology should reach right into the core of our journalistic endeavors, not just touch the periphery…”

And a new way of doing journalism means incorporating new ways of thinking.

(To simplify things below, I use the titles “journalist” and “programmer” below to describe a primary role. Of course, a journalist can be a programmer and a programmer can be a journalist.)

In addition to computational thinking, another important point that came out of the BCNI session is that communication and collaboration between journalists and programmers needs to improve so we can build the necessary tools to do better journalism. Understanding computational thinking is one step, but it would also be beneficial for journalists to understand more specific programming concepts. Again, not all journalists necessarily need know how to program (though we do need more journalists who know code and I, as someone learning more coding skills, would highly recommend journalists learn as much as they can).

Put another way, it would help journalists to understand the similarities between programming and journalism. As a personal example, when I served as editor of The Miami Hurricane, one of our best copy editors — by chance — was the webmaster, Brian Schlansky. I eventually realized the reason: he was accustomed to staring at lines of code and searching for errors, akin to a copy editor.

Here some commonalities I’ve drawn between journalism and programming (with some inspiration for a couple of these from IT Conversations podcasts):

So, really, you could say computational thinking has always been a part of journalism — we just hadn’t labeled it as such.

Many more parallels can be gleaned from works such as this Pragmatic Quick Reference (hat tip, Chrys Wu) and The Zen Python (hat tip, Christopher Groskopf). Read the latter — included below — and consider how many of these statements could work just as well for journalists as they do for Python coders:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Again, the point here is to show the similarities between journalists and programmers — to help overcome any perceived barriers.

But we can’t and shouldn’t wait for any magical bridge to appear. There are so many things we can do today, even as simple as rethinking our thinking. If we do, then we can more easily pick up one another’s skills and tools.

Overall, by integrating journalism, programmers and “computational thinking for everyone,” we will be better prepared to more effectively build the tools, practices and platforms we need. And, with those platforms, we will be able to further connect and innovate to do better journalism.

Your turn: How do you think we can apply computational thinking to journalism and do better work? Also, as I asked on Hacks & Hackers, what are some other parallels between journalism and programming?

Other posts about BCNI Philly 2010

Where journalism gets reinvented
Random Mumblings | April 25, 2010

Peer News, emerging news hybrid in Hawaii
Daniel Bachhuber’s weblog | April 24, 2010

BCNI Philly: APM’s Public Insight Network
Daniel Bachhuber’s weblog | April 24, 2010

BCNI Notes: Howard Weaver on an emerging news biz model
Lauren Rabaino | April 24, 2010

BCNI notes from “The Insight Graph: CRM for Journalists”
Lauren Rabaino | April 24, 2010

This post originally appeared on Publish2′s blog and is cross-published for archival purposes.

If you’re interested in contributing to the Coding and Journalism Newsgroup on Publish2, please leave a comment below.

ONADC/Hacks & Hackers meetup tonight: NYT’s Derek Willis on journalism + data + coding and walking through Toxic Waters

For this month’s joint ONADC/Hacks & Hackers meetup, Derek Willis of The New York Times interactive news technology team will discuss data + coding + journalism and walk through the award-winning Toxic Waters project.

You can watch live (archived video player embedded below) or follow along the Twitter by searching ONADC. If you’re in town, there are still spaces open to attend in person at American University (RSVP here).

Watch live streaming video from onlinenewsassociation at livestream.com

Also, here’s a CoverItLive blog where I plan to take notes, chat with anyone following along and pull in any choice tweets.

Thanks to David Johnson at AU for co-organizing and hosting the event, as well as the always magnificent ONA DC co-organizers: Laura Cochran, Tiffany Shackleford and Matt Mansfield.

Also, thanks to Burt Herman, Rich Gordon and Aron Pilhofer — who run the larger Hacks & Hackers — and Sherry Skalko of ONA.

Special thanks to Ethan Klapper, who will be running the live video feed.

Rethinking our Thinking

As someone who started out as a primarily “print” reporter, my mindset — and, more specifically, my thinking — as a journalist continues to evolve after nearly eight years in the field, starting as a high school sophomore.

Computational Thinking visualized

Computational Thinking visualized by Carnegie Mellon using Wordle. (Creative Commons)

That made me wonder on Twitter:

How would you characterize the relationship between mindset and thinking? Which one is derivative from the other?

More specifically, I’d say that I’ve long had an open mind(set) in the journalism realm. For at least a couple of years, I considered this one of the most important characteristics for a journalist — along with passion. I still think this is true.

Recently I’ve become fascinated with “computational thinking” (more on that later) and wonder if my mindset is informed by this “new” way of thinking or vice versa.

As Lauren Rabaino (@laurenmichell) and I discussed on IM early this week, my tweet was something of a chicken-and-egg question. As Lauren said (and I agree):

your mindset impacts thinking which impacts mindset which impacts thinking… etc for infinity

So why am I thinking about this now? Well, for one, I’ve proposed a session (with the same name of this post) for Saturday’s BarCamp NewsInnovation in Philadelphia: Rethinking our Thinking. The description:

Journalists often discuss the need for evolving skill sets. On a deeper level, we sometimes talk about mindsets. What I’m interested in currently is, “How can we reshape our thinking?”

Computational Thinking

That idea formed because I’ve been reading, watching and listening to a lot of insightful things lately, including material on computational thinking (first found via Daniel Bachhuber). For example, check out:

Finally, there is the Center for Computational Thinking at Carnegie Mellon, the university where Wing worked when she wrote the original article.

Evolving Interests

All of this comes in the larger context of my interest in learning more coding, an ongoing process that I started taking to the next level last summer with JavaScript. I put that on hold as I focused on a project using a JavaScript framework and then picked up back up for a bit before moving on to PHP and MySQL around the fall/winter. I used a little PHP for a small side project and mostly put learning that on hold too.

In February, as you might remember, I guest moderated a #wjchat (web journalists chat) on journalists and coders.

More recently I’ve stepped back and am looking at coding from a broader perspective. This coincides both with my role in helping to organize the first Hacks and Hackers event in DC as part of the May 4 ONA DC meetup at American University. Also related, is last week’s launch of the Hacks and Hackers forum, where I serve as a community moderator.

So, basically: Whereas before I was interested in teaching myself some coding languages to enhance my skill set, I’m currently focusing more on learning about the fundamentals of programming and computational thinking (with the practical skills on the side for now).

Is this an essential step in learning to code? No. Has it been and will continue to be helpful? Most definitely.

The discussion of the “programmer-journalist” (can we find a better name?) arguably started middle of last decade, so what has lead me to this point? I plan to delve into that with another post.

Also, I’m considering writing another post before BCNI Philly (and one after to synthesize the results of the “thinking” discussion). The pre-Philly post would be more focused on different types of thinking and why they’re important. UPDATE: I’ll be writing a wrap-up post. Until then, check out these notes and this mindmap from the session.

In preparation for that post and the session, I need your help.

As I asked in the Hacks and Hackers forum, what has most shaped your thinking? As a journalist — heck, as a person. Let me know in the comments.

Interesting Reading

For now, I leave you with some valuable selections of what I’ve been reading — I recommend reading them all:

Slides from Link Journalism presentation at New York Press Association 2010

Quick update: I attended the New York Press Association (hashtag #NYPA on Twitter) spring convention this past weekend, where I led a session on link journalism. As I had hoped, the participants asked questions throughout and we had a good discussion.

The slides are embedded below (RSS subscribers will probably have to click through to Slideshare or this post to see it). They are based on a presentation Scott Karp gave at the SPJ national convention in August 2009 and a workshop Josh Korr led at Berkeley last month.

Of course, I added my own examples and personal touch – enjoy!

What’s next? I’ll be returning April 7 to Virginia Commonwealth University, where I visited a graduate journalism class last October. This time I’ll be speaking about new media (can we drop the “new” already?). VCU journalism professor Marcus Messner, who got his doctorate from UM (go Canes!), will be posing some questions before a Q&A with students.

The event, Are We There Yet? A Road Map for Tomorrow’s Journalist, is a day-long conference organized by the student SPJ chapter. Short answer: No, I don’t think we’ll ever be “there.” Things will continue to constantly change, so we need a compass — not a roadmap.

Anyhow, I had a great time during my last VCU visit and look forward to going back. Let me know in the comments if you have any points I should be sure to hit on during the session.