If you choose to approach each stage of your career as a craft, it is useful to overlay a framework on the idea to make it more manageable. The title of this post, as the diligent software developers out there will know, is a play on the title of the timeless book about software engineering – The Pragmatic Programmer: From Journeyman to Master. The book is a truly excellent guide to explaining the idea of viewing software development as a craft (among other things).
Beyond software development, however, the title of the book alludes to the traditional career path of craftspeople, which I’ve drawn up in the following diagram:
Before defining each of the stages, it’s important to note three things about this visualisation.
First, this is a model. By definition, models are abstractions and simplifications of the real world to hide some the complexity inherent in real life and make it easier to analyse a point of view. The model only goes so far and only explains so much. Don’t try to cram too much or read too much into it. If it doesn’t fit, find another model. This advice generally applies to all models. Sometimes even the fashion ones.
Second, understand that the path is a sequence of stages, each being a pre-requisite for the next. You can’t skip stages. You can try, but invariably people who do so end up being posers with no real knowledge, expertise or depth. They are perennially insecure about their roles and stage in the path, and have to resort to tactics like information hoarding and management-speak to cover up their incompetence. Definitely not a good long-term career strategy. Don’t be that person. Follow the path.
Third, see that label on the horizontal axis? There’s a reason it’s there. The path to mastery and up-skilling is a function of time. You can accelerate some of it, but lots of mastery is based on immersion and learning by mistakes, all of which takes time. It can be somewhat shortened by pure talent and devotion to your craft in your personal time outside work, but you have to pay your dues. Otherwise, you end up in the same situation as someone who skips a stage.
With that out of the way, let’s talk about the stages themselves:
Novice: This stage normally means that you’re a complete beginner. In most instances, I include fresh University graduates in this category as well. While they have potential and aptitude, novices have at most a theoretical, academic understanding of the discipline, require lots of hand-holding and lots of studying. Typically, one is an apprentice for the first year or two of entering a discipline.
Apprentice: Most people are apprentices for two to three years after moving up from a novice. This timeframe can be shortened as you progress through your career and your ability to apply learning pattern improves, but for those early in their career, this is definitely time well spent learning the basics and the meta-skills: communication, problem solving, troubleshooting, conflict resolution, etc. Apprentices don’t need as much attention as novices, and can work with minimal supervision, but need regular check-ins with more experienced professionals and validation of their work. In traditional crafts, apprentices were bound to individual masters who closely supervised their work.
Journeyman: Back in the day, when one reached the journeyman stage of their career, they typically went off to find and train under a specialist master, who would help them refine and perfect their craft and pass on self-developed or generationally bequeathed techniques. In the current era, being a journeyman means being fairly self-reliant and self-managing, able to solve large, complex problem on your own, managing your time and other allocated resources well, and being able to supervise and give guidance to novices and apprentices.
Master: This is when you’re at the top of your game, and usually recognised as such by others in your discipline. You’re a true thought-leader, you push the boundaries of your field and your problem solving ability spans multiple disciplines. You represent your discipline, and inspire and attract others to it. Great masters have proficiency over more than one discipline.
What I really like about this Craftsperson Model for Career Management is that it is as simple or complex as you want to make it, but grounded in years of traditional learning. You can use it personally, as well as formalise it within your professional environment as I have with my teams. It is easy to explain, and enables you to inject a sense professionalism using the imagery conjured by the career stage labels.
I know there’s a growing movement in software development circles to embrace this idea (such as the Manifesto for Software Craftsmanship) but I’m Interested in hearing if / how others are using this concept.