SXSW 2011: +1 for “Why Journalists Need to Think Like Geeks” panel proposal

In sharing some SXSW links on Twitter yesterday, I mused about proposing a panel on rethinking our thinking and computational thinking.

But — alas! — Blake Eskin, editor of NewYorker.com, proposed a session on Why Journalists Need to Think Like Geeks (thanks for the heads-up, Will Mitchell). Based on the description and questions (a few are excerpted below), it seems to cover the bases pretty well:

2. How can we teach journalists to think about technology?
3. What’s the difference between how journalists and programmers think?
5. If technology gets better and easier to use, does journalists still need to understand its inner workings?

If you think it’s a good idea, mosey on over and give it a thumbs-up.

P.S. I really want to go SXSW Interactive 2011. Perhaps I could get invited to join a panel (nudge-nudge, wink-wink)…

UPDATE: Hacks/Hackers co-founder Burt Herman tipped me off to a related session he proposed. Check it out and vote it up, if you’re so inclined:

Hacking the News: Applying Computer Science to Journalism

Quick thoughts on journalism and version control (now known as Github for News)

(Update: Read Daniel Bachhuber’s notes from the #bcniphilly 2011 session I led on GitHub for News)

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 principles to journalism — and how we could.

  • How can we best apply principles of version control to journalism?
  • How much easier would it be to collaborate on journalistic projects if we did?
  • How could it help open up the process, both inside and outside the newsroom?

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 spill, 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 (update: the graphic below no longer works, so I’ve removed). My Publish2 colleague, Lauren Rabaino, took extensive notes (there’s summary of coverage at the end of this post).

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 on 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):

  • Abstraction: My colleague Daniel Bachhuber verbalized this well: This means breaking something down into discrete elements. In the context of journalism, it means breaking things down into concrete questions and then finding the answers, which you can compose in some fashion.
  • Defining your variables or functions: Programming involves defining variables and functions to quickly and efficiently reference something without redundancy (ideally). As the saying goes, “don’t repeat yourself” (usually abbreviated as DRY). This is just like journalism. For example, if you’re writing about a fire, you need to explain the who, what, when, where, why, how, etc. “variables” so people understand what you mean later on when you reference “the fire.” Also, when you mention something related to the subject matter and link to more background or context. The DRY (unnecessarily) principle also applies to journalism.
  • Debugging: This process of locating and correcting errors in a code is similar to copyediting (think for the webmaster-copy editor example).
  • Bug and error reporting: When my browser crashes, it gives me the option to send an error report. When someone catches a factual error, we ask them to let us know. These two concepts already intersect with Scott Rosenberg’s MediaBugs, which launched in beta last week and allows users to report and discuss errors.
  • Commenting your code: Leaving a comment in your code is a way of adding information that doesn’t interfere with the code and, for example, helps to explain what something is and why it’s there. This is much like how a reporter would provide context for a quote, which you can’t change without “breaking it,” so to speak.
  • Learning different programming languages: On the bus back from Philly, I listened to a tech podcast on which Kevlin Henney, author of 97 Things Every Programmer Should know, asserted that programmers should learn other languages to inform and improve how they write their primary language. Similarly, journalists are encouraged to read other forms of composition to become better writers and watch other styles of motion pictures to become better videographers. For example, I’ve heard recommendations to take a screenwriting class and learn about that style to my enhance journalistic work.
  • Refactoring: This refers to changing internal code without effecting the external meaning or behavior. Another definition that correlates more to journalism says it’s a “form of editing whose goal is to improve readability while preserving meaning. It is a stronger term than copy editing.” This reminded me of the larger structural or organizational changes sometimes needed to improve a story while still maintaining the original focus.
  • Algorithm: In general sense, this is a “precise rule (or set of rules) specifying how to solve some problem.” A cooking recipe could be considered an algorithm, as could the reporting process — you start with some information or questions and then do research, interview people, draft and finalize a story as the result. That said, journalism includes elements of both art and science, not a rigid process as I explained before.
  • 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). (Update: read my July 2010 post that lays the groundwork for the “GitHub for News” idea)
  • Semantic: Another word for semantic is unambiguous, David Siegel says. More specifically, “In the Semantic Web, we declare what we mean in precise, standardized terms. Data that is semantic means exactly the same thing to any system or person who uses it.” Do we not aim for the same thing in journalism?

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 of 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.

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: Heres’s my follow-up post: Rethinking Our Thinking, part 2: Computational thinking and the new journalism mindset. Also, 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: