Software Craftsmanship

Bart Massey 2013-12-03


What Is Craftsmanship?

  • (First of all, one of those gender-incorrect terms)

  • Craftsmanship is practiced by skilled practitioners of a craft

    • A craft is "an activity that involves making something in a skillful way by using your hands" (Merriam-Webster)

    • Combines engineering with construction

"In a Skillful Way"

  • Attributes of craft:

    • Quality of product is recognizable by other craftfolk

    • Quality product is produced quickly and reliably even in the face of significant obstacles

    • The necessary skills can be taught (usually by co-practice)

    • Mastery takes significant time

    • The process cannot be easily automated to good effect

10K Hours

  • Current "wisdom" (sort of) is that it take 10K hours to become a grandmaster of something

  • Regardless of the number, it is clear that craftsmanship is the result of repeated experience and effort

Art, Science, Engineering, Manufacturing

  • There is a big overlap between craft and these other things

    • Art:

      • Taste is an inevitable part of craft
      • Communication is an important part of most craft
    • Science: Craft can sometimes be surplanted by science

    • Manufacturing: Craft may or may not be wanted / needed

  • Engineering: One might expect a level split with crafting here

"With Your Hands": Software Craftsmanship

  • At first glance, software doesn't look like a craft

    • At second glance, one notes that it is quite "hands-on"
  • However, atoms vs bits is an important distinction

    • Quality metrics are different

    • Scope of construction is vastly different

    • Most complicated crafting ever

  • Individual vs "group craft"

The Book View

  • Manage Complexity
  • Manage Process and Practices
  • Write Programs For People First
  • Program Into Your Language
  • Use Conventions [and Idiom]
  • Program In The Problem Domain
  • Pay Attention To Smells and Omens
  • Use Iteration and Risk Management
  • Avoid "Religion"

The Guild

  • Last thing to keep in mind: you are not alone

    • Portland tech community is exemplary
    • Open source community is exemplary
  • Big part of craft is communication among crafters

Last modified: Monday, 2 December 2013, 11:16 PM