The notion of apprenticeship originated in the late middle ages where a master craftsman would be entitled to take on a apprentice as cheap labour, in return for food accommodation and teaching the craft to the young apprentice1. Apprenticeship was typically associated with tangible crafts such as masonry, carpentry, carvers, glass workers and ironmongery.
Although the notion of a apprentice being a form of cheap labour, being paid in food and accommodation, no longer exists, there is still a pattern of apprenticeship in the modern day. If one looks at trades such as plumbers, electricians and carpentry to name a few we have young people been taken on and trained in the profession. If we look at the less tangible professions such as accounting, engineering and law they have “apprenticeship” programs whereby graduates are taken on to do articles over a period of a few years.
So what is wrong with the software development profession? Why has it taken so long for only a handful of software development companies to start seeing the value of offering an apprenticeship programme. And why should big corporates, such as banks, not be offering an apprenticeship program for newly graduated software developers? In South Africa I know of very few organisations that are offering apprenticeships for software developers, apart from where they are trying to meet empowerment quotas.
Looking back over my career, the first three to four years of my working life was really hit or miss. I came out of university and I was expected to program, which I could do. Did I learn much from my more experienced colleagues? Not really. Did anybody push me or challenge me in the way I was thinking? Not at all.
So why am I waxing lyrical about this now? Well, I have just finished reading two books, that I wish had been around when I started my development career. These two books should be in all software developers libraries. And I am sure they will become classics in the software development world.
The first one is Software Craftsmanship. Professionalism Pragmatism Pride. by Sandro Mancuso. There is no rocket science in this book but, Mancuso provides a brilliant description of what it means to be a software developer. From the importance of choosing the most suited tools, to practicing your craft, he really provides some great stories around what it means to be a software craftsman.
The second book is Apprenticeship Patterns: Guidance for Aspiring Software Craftsman by Dave Hooper and Adewale Oshineye. This book provides patterns that can be applied to your apprenticeship and again there is no rocket science here. Just some damned good advice. Almost every pattern in the book I could relate to.
As I said, I wish the books had been around 14 years ago, when I started on my journey to where I am now. The trip might have been a bit more direct, without the meanderings into management for example, and I might have taken becoming a software craftsman more seriously. But I am where I am, and all I can do now is to continue practicing the craft. But hopefully use my learnings to act as a mentor to other developers in the organisation I work in.
I like this quote from Albert Einstein 2:
Education is what remains after one has forgotten what one has learned in school.
And I feel that, as a Journeyman or Master craftsman, we need to be constantly educating ourselves. We need to build a culture of apprenticeship in the software development industry to continue and build on the education of our apprentices. I truly only started deep learning when I entered the workplace and much of what I learned at university I had to relearn over the years as I found a need for it, or realised how I could actually apply what I had learned at university.
If I had a master craftsman that I could have apprenticed under I strongly believe that my first few years as a software would have been a lot more productive and conducive to delivering quality software.
So as craftsmen, if your organisation does not already have an apprenticeship program, we should all be challenging our organisations to embrace apprenticeship and we should be putting up our hands to be mentors to junior developers, thus enabling the implementation of the patterns mentioned in Hooper and Oshineye’s book.
- Apprenticeship – available at http://en.wikipedia.org/wiki/Apprenticeship
- Albert Einstein quote – available at http://www.brainyquote.com/quotes/quotes/a/alberteins108304.html#YF1R8OgjdjsV2Xxe.99