Software Craftsmanship
Bart Massey 2013-12-03
Overview
Daily WTF CSoD: http://thedailywtf.com/Articles/Exceptionally-Hard-to-Swallow.aspx
Craftsmanship
Review of Craftsmanship Activities
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