Software craftsmanship is hot topic which has been on the rise for quite some time. As it often goes new things are full of buzz and hype. As with all hypes people start to attach wild images and stereotypes on them. Fortunately there are smart people out there shedding some light upon software craftsmanship.
Dan North wrote an excellent blog addressing the issues that the software craftsmanship movement has and will generate if we are not careful. I do not share Dan’s fears though that the software craftsmanship movement will fill up with wannabe‘s and primadonnas. In any case they will be weeded out very fast. Wishing to be good takes you only so far and when you have to deliver according to your promises, well…
Jason Gorman, in his blog, provides another view upon software craftsmanship. His ideas are more close to the idea that I have about the software craftsmanship and the software craftsmanship movement. An integral part of it is to satisfy the customer. To me software craftsmanship is simply a synonym for “do what you promised in a way that makes you proud “. It implicitly also means that I am always on a journey to become better. I want to become better so that I can make better software. Continuous improvement gives the tools to meet customer needs with a level of quality that satisfies myself and allows me to be proud of my work. Without continuous improvement you can’t be a craftsman. It also means that in order to be good I have to deliver the right thing. Not just excellent code but the right code. But this is nothing new, to quote Jason Gorman “Software craftsmanship’s not the “next big thing”. It’s an attempt to articulate what the “thing” always was“.
As I see it, software craftsmanship requires at least the following:
- Continuously cultivated skills
- achievable only with continuous improvement(Jason Yip put it nicely “Talent doesn’t determine how fast you get good; how much and how well you practice determines that“)
- A positive attitude towards work
- don’t just criticize, offer alternative solutions
- do the boring jobs also with 100% effort
- humble attitude is a must, we create software for others
- we can’t ignore our customers, instead we must cherish them
Now, it is up to you to decide whether working from 9 to 17 as a generic programmer is enough for you or is there more to it… Just remember that there are no shortcuts nor 2-day courses to get a certificate. It is a lifelong journey.
I already made my choice, I want to be a software craftsman.
ps. get more of software craftsmanship @ Scandinavian Agile Conference 2011!