Sunday, February 7, 2010

Software Craftsmanship

I've been hearing and reading a lot about software development as a craft so I picked up the book Software Craftsmanship by Pete McBreen.

After reading the book I realized that I have been gravitating in the craftmanship direction for some time. It was good to get a different perspective that reinforces my thoughts. Like the author I sense that the current state of software building is not working.

The author's motivation for the book was his acknowledgment that it was time to stop complaining about the state of software development and write about the issues. The book is a "call to arms" and the author states that "we must insist that developers really know their craft before we trust them to create systems for us or with us." It's hard to disagree.

The book does a good job of defining the traditional development approach - Software Engineering - and explains why it doesn't work and why it is not the right choice for Craft projects. It then goes on to present the case for Software Craftsmanship.

Some of the main points of software craftsmanship that I like:
  • People, not processes, are the focus

  • Teams are made up of skilled resources - apprentices, journeymen and craftsman - constantly learning from each other

  • Software is long-lived and treated as capital

  • The useful life of applications is maximized because the cost and risks of replacement are immense

  • Developers have unique skills and are paid to think

  • Developers have a personal commitment, take pride in their work and "own" their work

  • Developers need to practice - learning is hands-on

I believe Software Craftsmanship will be embraced by shops that are open to change and improvement, but, unfortunately, will be a hard-sell in shops that are all about productivity.

No comments: