Saturday, October 20, 2012

Nobody Knows How to Make a Pencil

Courtesy Julian Colton, Wikimedia Commons

No single person knows how to make an object as simple as the common pencil.

It's true.

Leonard Read is well known for this observation in his economic essay, 'I, Pencil'. In it, he describes the specialized knowledge required to make this deceptively simple looking object.

How to Make a Pencil

At a minimum, you need to know about:

  • Growing Cedar Trees
  • Harvesting Trees
  • Milling Lumber
  • Manufacturing a Tint for the Milled Lumber
  • Mining and Refining Graphite
  • Manufacturing Glue
  • Manufacturing Lacquer
  • Mining and Refining Zinc and Copper into Metal Sheets for the Collar
  • Growing and Refining Castor Beans for the Eraser

Clearly, no single person could possibly know how to make a pencil!

How to Make Software

Consider the field of software development. The typical development project involves working with customers, analysts, managers, software engineers, QA engineers, network engineers, dba's, sys admins, etc.

We each play our part in the process of making software. As in the pencil example, one person simply cannot perform all of these activities with a high degree of skill. We need solid relationships with others in order to accomplish the end goal of releasing high quality software. If we are to succeed, good relationships are imperative.

Lobotomy Victims

Recently, a Pidgin bug ticket made the rounds because it was titled 'SSL Support appears to have been written by a lobotomy victim'. While a lot of people got a good chuckle out of it, it was a demeaning ticket that sought to elevate the author at the expense of somebody who likely dedicated their spare time to the development of the software (it should be noted that the author was chided in the ticket and the title of the ticket has since been revised).

Sadly, it is not uncommon to see this type of behavior within our community. Why do so many of us insist on disparaging others? Why do some insist on elevating themselves at the expense of others instead of collaborating to make us all better engineers? How can we expect to be successful if we alienate others and ruin our relationships with the very people we need to help make our version of a pencil?

Community over Code

There's a notion of 'Community over Code' that a lot of open source projects adhere to. It's not a new notion but it was new to me until I encountered this post recently — it's spot on. The relationship part of what we do is much more important than the technical part.

In short, it's all about community. If we want to succeed, we must value our interpersonal relationships above all else. You can't do this alone. Nobody knows how to make a pencil.

1 comment:

  1. Our job is seemingly easier than making a pencil - but making a pencil is the same thing all the time. So you can compare making a pencil to a very complicated piece of code embedded into a for loop.

    I don't think we can embed the work we do (as programmers) into a for loop - each project is unique and is different than all the others.

    Thanks for sharing.