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

STEM for kids, teens and me. And my sister.

Consider:

…programming should be used as a means to introduce kids to ways of thinking and problem solving that will be useful to them in many different spheres of human endeavor. If in the process they get hooked to computer science and end up in careers involving programming, that would not be a very shabby outcome, either!

Shuchi Grover said this in a post about Computational Thinking, Programming…and the Google App Inventor on SmartBean (read other highlights).

I sat down Sunday morning to read that piece (which I found through my handy Google alert for “computational thinking”) and it reminded me of something I’d almost completely forgotten about:

In summer 2000 — before eighth grade — I attended IMACS (no relation to Apple) for a few weeks. IMACS, short for the Institute for Mathematics and Computer Science, offered STEM-related activities in a day-camp format for different age groups.

My faint memories from IMACS include programming some rudimentary commands to control a robot, working with simple electronic circuitry to illuminate small light bulbs and completing various logic/reasoning questions.

So why did I, as 13-year-old who was mainly interested in writing, do this? Honestly, I don’t remember exactly beyond these two basic reasons:

  • My good friend Chris was going to attend
  • I’d had some technical inclinations since elementary school

You see, Chris and I had been aftercare aids at Country Isles. Yes, we sometimes clutched clipboards and walkie-talkies as we deposited toys in classrooms. But we also assisted with tech and AV — even Winterfest in 1997 (I will never forget what it’s like to be a 10-year-old running cables and duct-taping down wires for a school-wide singing show. Oh, and what ever happened to MiniDiscs?).

Earlier in elementary school when people would ask me, “What do you want to be when you grow up?” I would say, “A scientist and inventor.” Surely, even a few years after such a notion, that too factored into my decision to attend IMACS.

My larger point in recapping all this history is that earlier interests, such as from childhood, can stick with us as we grow up and it’s never too late to start appreciating other areas.

Honestly, math was my least favorite subject in high school. I used to think journalists and math didn’t mix. I was young(er) and wrong. In the year or so since I graduated college, I wish I had done at least one stats class (in addition to psychology, but that’s for another post).

So why am I now fascinated by computational thinking and programming? My passion for journalism and how the fields relate, sure. But it’s also clear that my earlier interest and experiences, even one as limited as IMACS, play some role. (I also always have to credit Daniel Bachhuber specifically on the computational thinking front because he shared the first things I read/listened to on that topic.)

All of this is not to say you can’t develop a tech inclination later in life. You certainly can. What I am saying is how it’s helpful to evaluate what and who might have influenced you — and what comes of that.

Case in point, yesterday I talked my sister through setting up a blog on WordPress.com. I didn’t succeed earlier in the summer in getting her to host her own cooking blog, but in June she did buy her domain. What changed yesterday? I don’t know. We were just video IM chatting and it happened. Michelle, a rising college sophomore interested in finance and business (she digs math), is now set up to be a creatornot just a consumer.

Even if she never sets up her own hosted blog, never touches a line of code or never goes any further, it has — thus far — certainly been worth my brotherly nudging. And, to borrow from Grover, it wouldn’t be too shabby if she did.

What were some of your most noteworthy technical influences? Where did those influences lead?

Correction: The opening quote, originally attributed to Charles Profitt, has been updated to reflect the actual source — Shuchi Grover.

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: