An Address on the Craft
This morning I gave an opening address at the Boise Code Camp. Several people have asked for the text of that address, so I provide it here without modification.
This morning I ask you to consider why you are here.
We in this room hold the mantle of our predecessors who have bettered the human condition though computing.
We are supported by Ada Lovelace. Ada, was the first computer programmer who in 1842 developed an algorithm to run on Charles Babbage’s automaton machine.
It never ran. It was a hardware problem.
In 1946, almost 100 years later, the first known team of computer programmers was established to provide instruction to the first general-purpose, Turing complete computer, the ENIAC. The 6 woman team instructed ENIAC to calculate data tables for the hydrogen bomb.
In 1954, the first non-mechanical and non-assembler, high level programming language was introduced. Fortran moved us a bit further from the machine with a higher level of abstraction.
26 years later in 1970 Winston Royce published the first recognized description of a process for developing software. We now call what he described in that paper as “water fall” although he never used the term.
31 years passed before, in 2001, a small group of industry luminaries gave us the Manifesto for Agile Software Development.
And now, as we’ve been saying for 168 years, things are different.
In 2010, we face the future of software development with a rich history behind us. And, although many of us trend toward rediscovery, the wise among us build upon, rather than re-invent, the wisdom of our forbearers.
For over 50 years we have built higher and higher levels of abstraction over the interactions of metal and electricity.
For over 50 years we have worked as teams focused on an elusive goal:
Expressing human intent to a machine.
Programming computers is unique in the human experience. We developers express ideas in concrete ways that machines understand. And, we often do this without understanding the humans for whom we direct the machines.
To our own detriment.
Remember the first computer program you ever wrote? Remember how fun it was? Recall that visceral reaction of providing direction to the machine and seeing it obey?
Once the instruction was correct J.
Recall the thrill of uncovering a new logical construct that both we and the machine could understand? If a AND b, but NOT c. I can use that!
With this body of knowledge supporting us and immeasurable opportunity before us, the greatest risk to our craft is not our ability to instruct the machines. The risk lies, as it always has, in our failure to listen, learn, and to establish a professional integrity. The risk lies in our often-failed commitment to quality.
The tension between quality and commercial pursuit is much older than the history of our profession. It is as old as trade itself. The Project Manager whispering “hurry up” is an echo of Henry Ford, who found new ways to hurry. And, our collective response of “not yet” is the same one uttered by stone masons giving rise to a 12th century cathedral.
The binds and repulsions between the craftsman and the customer are natural. They are healthy. They lend purpose to an otherwise cerebral pursuit. Without this tension, the craftsman may pursue elegance at the expense of practicality. Without this tension, the customer may pursue utility at the expense of quality.
Because this tension exists in software development recognize it as a craft. One that provides utility, with elegance of form, through mastery of tools, discipline in process, and is informed by science.
And we are the craftsmen.
A craftsman finds beauty in the materials, tools, and process of her trade, while reveling in the practical application of her work. A craftsman pursues excellence for its own sake, and may suffer for want of leaving well enough alone. But we learn.
We learn that even great talent is not a substitute for wisdom, gained through time and experience. A craftsman understands that excellence is not accidental, and that investment in one’s own ability is not an obligation, but a privilege.
That’s why we are here on a weekend, without coercion or reward. We are here to invest in ourselves and the profession. That’s why the speakers this weekend have invested their time and passion. And all of us are here to learn.
We are here to add another tool to our toolboxes; to share tools with others; and to provide stewardship to our craft.
Some of us here today are apprentices.
Most of us are journeymen.
And a rare few may be masters.
Hopefully all of us share the passion and promise of our potential contribution.
Thank you for affirming your commitment to the craft here at Boise Code Camp.
Let’s all go improve together.