This is part 3 in a series on Software Gardening. If you’re just jumping in, you can find Part 1 here.

Unless you are growing a cactus, chances are you’ll need lots owaterf water to keep your garden green and growing. In Part 2, I discussed the importance of soil in your garden and said our software soil is Agile methodologies. Now, we add our water, Software Craftsmanship.

The Manifesto for Software Craftsmanship came about when developers felt that Agile was creating applications that the customer wanted, but the quality of the applications was lacking. If you carefully read the Agile Manifesto, you’ll see that is really about project management, not about how to create quality software. So, the Manifesto for Software Craftsmanship was created to support both Agile and quality code. Like its cousin, it has four points of emphasis:

  • Not only working software, but also well-crafted software: Thinking about this, what does it mean to have well-crafted software? It could really be a huge undertaking. The bottom line is to write code in a way that it’s easily testable, extensible, and easy to enhance.
  • Not only responding to change, but also steadily adding value: The Boy Scouts have a rule to always leave your camp cleaner than how you found it. If you apply this to your code, every time you go into it, you’ll leave it cleaner and in better condition than how you found it. After all, how many times will you write a line of code? How many times will you read it? Make code easily readable.
  • Not only individuals and interactions, but also a community of professionals: We can all learn from each other, no matter what technology stack you are using. Share your knowledge with others and hear what they have to say too.
  • Not only customer collaboration, but also productive partnerships: This says it isn’t enough to keep your customer informed. You need to do it in a way that is beneficial and productive for you and them.

It’s interesting that many of the original signers of the Agile Manifesto also signed the Manifesto for Software Craftsmanship. That tell me that they too saw areas that the Agile Manifesto didn’t cover.

So, how do you learn more about Software Craftsmanship? You can join the Google group or find a group in your area. Here in Salt Lake City, we have one. You can also read books that discuss general software development processes and methodologies. I blogged a list of books earlier this year.

I have one more thought about this. Take a look at any Computer Science curriculum or development requirements of many companies. Go ahead, I’ll wait. Did you find anything about the quality of the code? I didn’t find any. This means that many of these quality skills are self-taught. So, get busy. Learn them and put them into practice.