Background
After a gap of few months, I went through the list of items in my Google Reader feed. As I was reading more than 400+ blogs, I came across many posts in quick succession related to the topic which remains very close to my heart. It is about Software Craftsmanship as the title of this post suggest. I have been thinking about writing my views on this topic for quite sometime. The thoughts which were expressed by other writers in their posts encouraged me to express myself and my views on this subject.
Software Craftsmanship was the term I got familiar with by reading the posts, books and watching videos by Uncle Bob Martin. To me it is a state that a professional gets into where he starts treating his day to day work as a craft. For him it is not merely a way of earning monthly salary to pay off the bills, but a way of showcasing the skills, the talents, the creativity in bringing out the best in him. If you are from software industry you will be able to relate to my thoughts much better compared to other professions. But I believe that it is prevalent in other professions as well. How many times do you come across individuals whom you meet for the first time and you immediately know that there is something special about them. This will not be visible every time but if not the first time, within couple of meetings or discussions with them you know that they are different from the usual crowd. In my experience there are very few people like this whom we can call craftsman (at least in software world).
What are the qualities which make these special breed of people so different?
There are numerous qualities that these people exhibit. To me the single most thing that distinguishes the craftsman from the experts is their passion. There are so many experts in this field. But the passion that is displayed by the people whom I consider to be craftsman is simply unmatchable. It almost seems like their passion becomes their motive in life. They are driven by the desire to do something different which others can only think of most probably in their dreams. These craftsman put in lot of time and effort in building their passion and honing their craft. Their dedication towards constantly improving, learning and spreading their craft is something to look forward to. They are not afraid of sharing their ideas with others. At the same time, they are not afraid of accepting others ideas and correcting their own mistakes.
You will be easily able to identify a craftsman among a herd of ordinary people. They will be wiling to showcase their expertise when the need arises. Usually they are not the people who will do the talking for the sake of talking. They know very well that sometimes silence is the best wisdom. There are people who tend to give their views and opinions irrespective of whether it is required or not. But a craftsman will know exactly when to express his concerns and when to stamp his authority with a killer punch which will demonstrate the superiority of the individual more so through his work rather than through his words.
Far too often I find managements and consulting companies comparing individuals based on number of years of experience. In my opinion when I see a job description which says I am looking for a person with X number of years of experience, it is the first step towards trying to compare an apple to an orange. In software industry you can never get two individuals with same number of experience, with same skill sets producing the same output. Let me take an example. In one of the project I was working, there were two professionals working with me. One with more than 8 years of experience and other with just about 4 years of experience. But the output that I was getting in terms of quality and efficiency from the 4 years guy was much more than that compared to the 8 years experienced person. In an ideal world you would expect the output of an individual with 8 years of experience to be at least 1.5 times that of 4 years of experience if not exactly double. Why do you think this happens?
One of the greatest challenge in software industry is the constantly changing technology. Some people become obsessed with one technology and they just don’t want to change. Even if they realize that the new technology is better they are reluctant to put in the efforts required to upskill themselves. They are too comfortable with what they know. This could be one scenario. Other scenario is that they somehow got hold of one technology and its too much of a burden for them to move on to something else. In my experience, there is another extreme where some people are very quick in adjusting to new tools and technologies. But they think it is only their responsibility to know about it and they do not share it with others. Even if you ask these people for help, they will not give you complete information or purposely give you misleading information. My experience says that these people are mostly protective about their jobs and are afraid of giving the correct information fearing that someone might take their job.
I remember having a conversation with a close friend of mine. We were discussing about people changing jobs frequently and the impact that can have on the dynamics of a team or organization. He narrated me what his boss had told him. His boss was having the opinion that people who are insecure about their jobs are the ones who play all these tactics. Even in the worst market conditions, good people will be able to find their way.
So coming back to the topic of craftsmanship, one thing I have seen in them is that they are very adaptive in nature. They adapt very quickly to the changing needs. They can quickly grasp new things and find right places to make use of their knowledge. This does not mean that they jump on to each and every new buzzword. They are able to filter out the noise and concentrate on things which really mater. They are usually the ones who try to understand why things work in certain ways rather than saying it should work because so and so person says it works for him. They try to keep things as much as possible.
How would you identify the work of a craftsman?
It doesn’t take much effort to recognize the work of a craftsman. A craftsman will choose the simplest solution to the most complex problem that is being presented to them. The reverse is also true. You will find the most complex solution to the simples problem in the world. That is one way of identifying craftsmanship. Their work is the hallmark of their craftsmanship. Simplifying things for themselves as well as others who work with them is what they are good at. They can do it time and again. They are not the ones who will wait for others to tell them what needs to be done next. They will be eager to get on with the next thing that needs to get done. If they are stuck somewhere in between, they are not afraid of taking help from others. There is a difference between finding the perfect solution and finding the best solution. Usually people will strive to find the so called perfect solution. In an attempt to find the perfect solution, they will tend to complicate things much more than what is required. A craftsman on the other hand will be the one looking for the best possible solution rather than perfect solution.
Some of the craftsman I have known so far
Here is a small list of people whom I think I craftsman's in their own right
Robert Martin also known as Uncle Bob
These are some of the most famous ones. If you are associated with software, you would have heard about a tleast one of these guys. Apart from these people who are known worldwide for their work there are some people from my close circle who are doing great work in their own right. Some of these people I have met personally and many through other forums like BDotNet community group. Some I have not met personally but still consider them craftsman and my mentors.
I have been following Vinod’s blog for quite some time. I wonder from where does this guy gets all his ideas and inspiration. Every blog of his is so full of information. Keep up the good work Vinod, I am sure you have inspired many software developers of our generation through your writings.
Do a google search for a question related to SQL Sever and I am sure most likely you will find a post by Pinal Dave on his blog http://blog.sqlauthority.com/ about it. He is a SQL Authority as the name of his blog suggests.
Lohith is my ex-colleague. We worked together for a very short duration in my first workplace. Although we both moved on since then we have been in touch through emails and social media. Lohit’s simplicity and his hunger for acquiring knowledge has always amazed me. He has been very active in the community events off late and has taken lot of initiatives in spreading the knowledge within and across DotNet communities in India. I am sure being part of Telerik team in India he will be able to inspire many youngsters in doing good things in future. Way to go dude. Keep up the good work.
Conclusion
It is not easy to be a evangelist or a craftsman. It takes a lot of effort and dedication. If you are willing in to put in the efforts life will reward you in proportion to your own efforts. If you wish to follow the footsteps of these or any other person whom you consider a craftsman, find a mentor who can guide you in the right direction. With the advance technology it is possible to communicate with almost anybody who has a presence on the internet. Make use of the tools and technologies to get a step closer to being a craftsman.