Alex Payne writes online here.

See also the archive, publications, events.

An individual post follows.

Mending The Bitter Absence of Reasoned Technical Discussion

There’s a counterpart to my post on technology journalism that I’ve been hesitant to write. Just as most professional journalism on high technology fails us today, so too does the online discussion amongst technologists as a community.

Social media (blogs, community news sites like Reddit and Hacker News, Twitter and such) have swept in to fill a vacuum between peer-reviewed academic journals and water cooler conversation amongst software engineers. Anyone with a blog can publish development war stories, benchmarks, or an interview with another developer. It’s a world of engineer’s notebooks laid wide open, and in theory, we should be more informed as a profession than we ever have been.

In practice, the conversations that are most widely heard in the tech community are full of inaccuracies, manufactured drama, ignorance, and unbridled opinion. In discussing these Internet-spanning debates with non-technical friends, comparisons to Hollywood tabloids come first to mind. It’s a time sink for an industry that should be a shining example of how to use the newest of media for constructive debate.

Faith and Numbers

My first harsh exposure to this sort of discussion was in 2007, several months into my contract on Twitter. I was asked to do a short email interview about our system and its development. I asked the interviewer if he’d prefer to interview the more senior developer on our team, but he insisted that he wanted an “in-the-trenches” perspective. I answered his questions to the best of my ability, and went back to work.

Imagine my surprise a few days later when my answers to a series of straightforward questions on a blog were the talk of the web application development community. One comment that seemed particularly uncontroversial to me was at the core of this nerd firestorm: Ruby is slow.

For the next several days, I could think of only one thing: why is something you can measure controversial? Are we not engineers? Is this not Computer Science? Why are we discussing the performance of software as if it were a matter of faith, or opinion, or preference? If you disagree, simply run an experiment. Did we somehow lose our Enlightenment values on the way to Web 2.0?

Of course, what I had said about Ruby was of no surprise to those who had been working with the language in earnest. In a private IRC channel, I was told by the Rails elite that I’d said nothing they didn’t all know. It was simply a tradeoff: work with a language you enjoy, accept the slower performance, buy more servers. Unless you have some deep insecurity about your choice of programming language, there’s simply no reason to be offended by such an assertion.

Time melted away my frustration, Twitter continued to grow, and I eventually got a chance to speak in person with some of the most vicious responders to my little interview. Amazing how suddenly reasonable and transformed a person can be when they’re forced to look you in the eye.

Two Years On

Earlier this week, I gave a presentation at the Web 2.0 Expo in San Francisco. As I made clear at the beginning of my talk, I was presenting in part because I’m co-authoring a book about the Scala programming language, one that’s being published by the same company that puts on the Web 2.0 Expo, O’Reilly Media. Cross-promotion, I believe it’s called. Scandalous.

For me, writing the Scala book and giving these talks are a labor of love. I’ve given up my free time to deliver the book, just as my co-author has taken time out of his personal life and consulting schedule. We’re getting paid for our work, but it’s no secret that writing a technical book is not exactly the fastest route to staggering wealth. I don’t get paid to speak; at best, my travel expenses are covered. I speak and write because it’s a way I can contribute to the Scala community, and I want very much to share the brilliant work they’ve done with anyone who will read or listen.

My presentation argued that Scala is a great choice of language for the next wave of Web 2.0 businesses, which must operate in a far more restrictive economic climate than their predecessors. My post on recession engineering sums this idea up. I said that people chose languages like Ruby and Python for early Web 2.0 businesses because those languages are a pleasure to develop rapidly in, and that Scala has that same quality while delivering better performance and leveraging the assets of the Java Virtual Machine, which can translate to dollars saved on hardware and new development.

I went out of my way to explain where Ruby’s strengths are as we see them at Twitter, without spending so much time on the issue that it detracted from showing off Scala’s features and making the business case for the language. I briefly covered why we didn’t make use of other languages. I did not discuss why nobody should ever use these other languages, but simply why we (Twitter) currently do not. It would be absurd and disrespectful to tell a room of other engineers why their choice of language for their projects – projects they know everything about and I know nothing about – is wrong. I try to speak only about what I know first-hand.

That a language is “fun” or “agile” or “beautiful” is unmeasurable and fuzzy. That a language is fast in comparison to another language, or can make use of code written in other languages without penalty, is not. Those incontrovertible facts, coupled with Scala’s specified and tested features, were the crux of my argument. Nobody who was actually present at my presentation found these facts controversial enough to stand up and dispute them. Indeed, the reaction amongst attendees seemed to be one of newfound curiosity in Scala, which is all I was trying to accomplish.

Some hours after I’d left the conference, the dual-headed distortion machine of the tech press and social media went to work. Before long, the story about my presentation had gone from “Scala is a nifty language and you should think about it for your business” to “Twitter engineer spits on the grave of Ruby, exalts Scala as shining new deity”. Time warp to 2007, numb and dismayed.

How To Have A Reasoned Technical Discussion

We’ve come to accept that trying to have a reasonable discussion on the Internet is like insert any number of increasingly offensive metaphors here. Usenet, IRC, forums, blogs, and now media like Twitter have all been black-marked as houses unfit for reason to dwell within. And so we roll our eyes, sigh, and quietly accept the idiocy, the opportunism, and the utter disrespect for our peers and ourselves that is technical discussion on the Internet.

This need not be the case. It is possible to have a reasoned technical discussion on the Internet. People do it every day, particularly in smaller online communities where social norms are easier to enforce. We can do it.

The next time you’re thinking about engaging in a technical discussion, run through these questions before you hit the “post” button:

  1. Are you responding to facts? With facts?
  2. Have you read any primary source materials on the issue you’re discussing?
  3. Do you have any first-hand experience with the technologies or ideas involved?
  4. Do you have any first-hand experience with those technologies operating at the scale being discussed?
  5. Have you contacted the individuals involved in the discussion for further information before making assumptions about their findings?
  6. Are you falsely comparing technologies or ideas as if there was a zero-sum competition between them?
  7. Are you addressing your peers with respect, courtesy, and humility?
  8. Are you sure that what you’re posting is the best way to promote your self, product, project, or idea? Does it demonstrate you at your best?

Et cetera, et cetera. Or, essentially, a brief reintroduction to logical thought and civil society.

And a final tip:

Some technical discussions veer towards the purely aesthetic. Thankfully, the humanities have provided us tools for reasoning about that which hard science may not be able to measure. Spend some time with art and theater criticism and you’ll find intellectual instruments aplenty for the comparative evaluation of seemingly intangible qualities such as beauty, theme, and emotion.

Conclusion

I don’t get much out of writing this sort of proscriptive, parochial content, but it’s my honest hope that someone will read the above, stop, think, and make a better contribution to the discourse of the technical community.

This mode of discussion is lower than us. Yet, lest we make an effort to rise above it, it’s all we deserve. Don’t waste your life screaming into the void. Make things, measure them, have reasonable and respectful conversations about them, improve them, and teach others how to do the same. Set emotion aside, and think how much we could accomplish if we had the humility and grace to learn from our peers.