The three levels of software craftsmanship

Wednesday, 23 Dec 2020 3 mins to read software, journey, progress

The inspiration for this article was the introduction of the book Apprenticeship Patterns, which we are reading for our community book club. The authors talk about the concept of Software Crashmanship.

According to the authors, there are three levels of craftmanship:

  • Apprentices
  • Journeymen
  • Masters

These levels come from the old times when guilds existed. A master craftsman would have had apprentices and journeymen in their workshops. He would teach them their craft so one day they could go on their own, become masters and work in their workshops.

It's worth to mention that each level depends on each other. An apprentice depends on other journeymen and masters. A journeyman depends on apprentices and masters. A master depends on the other two.

Apprentice

This is the first level. You are starting your journey, you know that there is a long path ahead of you. You also know that there is a lot of things that you don't know, but you should.

In this stage, your focus is inwards. Your goal is not only to grow your skills and yourself but also to learn how to learn. You should be like a sponge, to soak up as much knowledge as possible.

Remember: How successful you will be, depends on you. You are responsible for the outcome of your apprenticeship.

In this initial level, a lot of things might seem daunting. Even reading documentation seems scary or confusing. This is normal, with practice you will start to know how to find the information that you need.

Everything is new, which means, you can't do everything yourself. You need to look for people, companies and situations that will push you to learn. To be uncomfortable is key, make mistakes, fail often and keep track of your progress.

Attitude is everything

The motivation to learn and embark in this journey, allows you to make more mistakes than any other levels. This motivation will help you build the resilience you need when you fail at something.

"Having the attitude that there's always a better/smarter/faster way to do what you just did." Marten Gustafson

Keep in mind, your goal is not just to learn technical skills. You should also try to learn techniques for studying, being more productive and to discover what is the best way you learn.

Journeyman

You are not an apprentice anymore. But that doesn't mean that you should forget everything that you have learned so far. Or that you should stop using and practising those things.

As a journeyman, you have more responsibilities, which means that failures may cause more harm than that of an apprentice. But don't let that thought stop you from progressing. You might also stay longer in a team, which naturally will bring more responsibilities.

In this stage, you know where to find the relevant information for your needs. Reading documentation is also easier. You can navigate between documentation without struggling too much.

Your goal as a journeyman is to build a larger portfolio that demonstrates your progress. You should also move between projects. This will force you to expose yourself to different challenges. It's a good idea to have different mentors (masters) that you can learn from. This will give you different insights into how other folks do things.

What should you focus on?

Each of these three levels, add up on top of another. So you should keep learning and practising your craft. You should focus on building connections with other folks. To share things that you have learned, to share experiences and to mentor others.

Remember: Apprentices will learn better from a journeyman than from a master. This is because journeymen are closer to an apprentice journey. Masters might not know how to relate the struggles of someone that is starting.

Building a community is important for the progress of a journeyman. Note that I mention community and not expanding your network. Communities may help you grow, because you share a common goal - to help others grow. This is why sharing your knowledge is so important.

Finally, you should seek masters to help you grow your skills further. It's important to try and learn from more than just one master craftsman. So you can have different views on how to approach and solve a problem.

Masters

"Mastery involves performing all the roles of an apprentice or journeyman as well focusing on moving the industry forward."

Apprenticeship Patterns Guidance for the aspiring software Craftman

As a master, you take action to help enhance the skills of others around you. This action can take many forms, you could build tools for others to use. You could talk at conferences or create courses to help others. You could seek out folks that you could mentor and help.

"In short, masters view the acquisition, usage and sharing of superior skill as the most important part of being a software craftsman"

Apprenticeship Patterns Guidance for the aspiring software Craftman

Don't forget that you should still build on top of all those skills and things you have been doing on the previous levels. So you should keep your skills up to date, have that will to learn more and hone your craft further.

I hope this article helps you see a simplified version of your journey into becoming the best software craftsman. I also hope that this could give you the same sort of guidance on what you should focus on each stage to advance both on your career and journey. Paste in something you're working on and edit away. Or, click the Write button and compose something new.