Craftsmanship is the quality that comes from creating with passion, care, and attention to detail. It is a quality that is honed, refined, and practiced over the course of a career.
Principles of Great Design: Craftsmanship, Richard Glover, 2010
An ancient Chinese proverb states the journey of a thousand miles begins with a single step. Malcom Gladwell in his book Outliers socialized the concept of the 10,000-hour rule. The over-simplified premise of this book is that it takes 10,000 hours of effort to become an expert. Gladwell’s book was based on research done by Anders Ericsson, a Swedish psychologist who specializes in the science of peak performance. However, in the article Malcolm Gladwell got us wrong: Our research was key to the 10,000-hour rule, but here’s what got oversimplified, Ericsson states that Gladwell misinterpreted his research. Ericsson’s premise is that it’s not the amount of time spent on an activity that makes an expert. It is the deliberate practice of a planned, arduous series of activities designed to improve skill in a particular domain, guided by well-informed feedback.
Software engineers who become craftsman employ deliberate practice as described by Ericsson. However, numerous engineers don’t understand this concept. I have often heard developers describe their years of experience as a reason why they should receive a promotion. However, it’s not the amount of time spent repeating similar tasks that make one an expert. It’s the deliberate practice of new skills that significantly improve one’s proficiency.
It is also the art of knowing what is beautiful, and caring enough to make it so. Problem-solving abilities don’t necessarily equate to craftsmanship. I’ve worked with two such engineers who were amazing problem-solvers. Whenever we had a significantly complex issue in an ambiguous problem space, we put them on it. However, their effectiveness was limited to prototypes. Their code was so sloppy that it wouldn’t be appropriate to call it production grade. Once they’d coded a prototype, it was necessary to hand it off to another engineer to craft the final solution. Both engineers were coached numerous times, but once they’d discovered a solution, they became extremely bored and didn’t have the passion or attention-to-detail to make the code beautiful.
It becomes quickly evident when working with an engineer who is a software craftsman. The signs are readily apparent and manifest themselves in the following ways.
Show me the code you’ve written that you are the most proud of. It is impossible to hide the work of a craftsman. It comes thru in every aspect of their code. It’s neat, clean, organized, simple, well-tested, and well-designed. In short, it’s a work of art.
Attention all leaders of software teams! Are you interested in discovering a consistent framework for evaluating software engineering talent?
The most important responsibility for a leader of a software development team is to hire the right talent. Hiring the right team will make you look good, regardless of whether you have any faults and weakness. However, if you lack the ability to properly assess engineering talent, it is highly likely that you will fail.
This book will help you conduct a complete talent assessment of interviewees without focusing too heavily on a candidate's skills and knowledge and will help you to:
It doesn't matter if you are the best leader in every other way, the universal truth in software engineering is that you can't lead poor talent to do great things!
But with this book you can eliminate having poor talent in the first place and make sure that only the best people work for you. Every time