On a lay man point of view, craftsman is a person with a defined knowledge of doing something at its very best level. In this case the skills he or she posses and the ability to do well in his trade are very important to his clients. For instance, a building craftsman will be aiming at providing his client with the best and attractive finish building. To some extent, I am beginning to see how wrong I used to think about the term craftsman. If I was asked to define a craftsman without the knowledge after reading this chapter, I would not have think of software as a craft. I will describe craftsman as a highly skilled person who owned a workshop and have people called apprentice who are in the process of acquiring knowledge to enable them set up their own businesses. One may be surprised to see or hear that those practice in the 1900s where apprentices watch and imitate their master still exit. Only a few trades will allow or give the apprentice the chance to learn by doing it themselves. Doing it yourself will enabled you to learn and improve from your mistakes in the past. However, in the perspective of software the term craftsmanship have a deeper meaning attached to it that might affect the meaning. Even though term like craftsman, master, journeyman and apprentice are not new to many, they have difference meaning in difference field of study. In the light of software, many factors have to be taken in consideration; a professional developer who have been earning meet from his work for years will soon realize he or she is yet to undergo an apprenticeship process in his trade. One have to be prepared to learn or work hard for earn credit to his work. In this field, there is bound to be failure as in other trade and as a craftsman, you need to accept those failures as a motivation to improve in your next task rather than seeing them as mere failure or something discouraging. Again, to be successful, one need to be able to adjust to a changing situation and also able to accept criticism as a lesson for improvement.
besides, apprenticeship in this modern day is quit difference from the past where the apprentice just watch their master work for years and at some point learn by imitating what the master does. As an apprentice, you are given the chance to learn by trying it yourself then using your failures as a routine of mastery and improving your skills. In this modern world, even though an apprentice might be in small teams working under the supervision of the master, the outcome of their apprenticeship is solely their responsibility.
Also, a journeyman in this contest is a person with a knowledge in between the master and the apprentice and is able to lead the in the absent of the master. The journey man ideas in this chapter are something new to me and I am yet to see it practically.
Master in the other hand is the person with adequate knowledge of doing all the work of an apprentice or the journeyman and also keeping the trade alive. As a master, you should be very skillful and creative. A master as software craftsman, need to be able to create and share superior skills with his or her apprentice. In the other hand, apprenticeship is a process where new comers in the industry are trying to learn the requirement skills and knowledge that will make them function as developers and to earn living from it. These new comers need someone called the software craftsmen (Masters) or mentor to guide them through this process.
In conclusion, this chapter has been an interesting one I have read so far in this semester because I have drawn a lot of ideas from it and it will help me to take my destiny upon myself to explore the available resource and my professor as a mentor to achieve the necessary knowledge needed to survive in the software industry.
From the blog CS@Worcester – Computer Science Exploration by ioplay and used with permission of the author. All other rights reserved by the author.