software craftsmanship: the new imperative

## peter mcbreen ### addison-wesley, 2002


the whole book is about turning away from the engineer approach, and towards the craftsmanship approach, by putting the emphasis on people. this provides a useful framework for the purpose of beautiful code. it’s not just understanding in order to maintain but understanding in order to learn.

the book proposes to rethink software development from engineering to craftsmanship, moving from a focus on formal processes to a focus on people. the highlight of craftmanship asks the same question as sennett: knowledge transmission.

Howard Baetjer sees the key challenge of software development as coordinating distributed learning and the key limitation as “our sheer ability to understand what it is we’re trying to do” -> again, it is about TRANSMITTING UNCERTAIN KNOWLEDGE (learning, communication, negotiation process). and craftsmanship implies aesthetics

historical shift from programming the computer (focusing on the machine), to programming for people

“software engineers use Ada, craftsmen use C”

all the pragmatic programmer, elements of programming style, psychology of programming books attempt at creating a tradition of software craftsmanship

claim that craftsmanship is personal in the work process, but collective in the work result

“make sure you understand the problem, then look long and hard for a solution, then test that solution on a small-scale first -> software craftsmanship builds systems that can be understood (again, claim)

trained technicians follow the book, master craftsmen ask lots of questions and then deliver what you really need (as opposed to what you asked for)

learning software development is different from learning how to program: it happens by trial and error, different from what they teach at schools (which is teaching sth out of its context)