Monday 13 April 2020, 10:07
Throughout my career I have noticed that as developers advance their careers, they begin to fall into four archetypes. These archetypes do not typically apply early in a developer's career, but express themselves more and more strongly as the developer gains experience. I have discovered that the archetype of a developer is a good indicator of whether they will enjoy and prosper in a company, team or role. Unlike most archetype systems that I have found online, I do not believe that one archetype is better than another; you will find great developers in each archetype.
My 4 archetypes are Manager, Expert, Builder and Architect and these can be broken down across 2 axes. Developers are either happier to be hands-on, i.e. they like to write code and understand low-level detail, or they are hands-off, i.e. they prefer to focus on high-level decisions and don't mind not writing as much code or understanding the low-level detail. On top of that, developers either like change and want to introduce new ways of thinking and working, often at the cost of efficiency, or they dislike change, preferring to leverage skills in existing techniques and tools to get the job done more quickly.
Developers of this archetype are good at organising projects and people. They enjoy getting the best out of their team by focusing on project management and mentoring. They like to stay high-level and don't mind not getting to see the details of a project. They will usually write very little code of consequence, often being content to spend what little development time they have writing tools to make themselves or the team more effective.
More often than not the Manager archetype is resistant to change, usually because years of experience have taught them that change is not always a good thing and without some stability, planning projects becomes a lot harder to do. The Manager usually has more visibility over projects and deadlines than the rest of their team, so feels the pressure to deliver on time more acutely and so will be resistant to unnecessary changes.
Managers provide the majority of their business value by hiring, training and mentoring their team, as well as making sure that their team works on the things that are most valuable to the business rather than getting side-tracked making unnecessary changes.
Developers of this archetype love detail and naturally become experts within their domain and whatever systems they are working on. Unlike the Manager they will understand the low-level details of these systems and become a repository of knowledge for them. Planning any work within their sphere of influence will become impossible without having them in the room and so Managers will quickly come to rely on the Expert for such planning tasks.
Experts enjoy understanding every detail of their world and so naturally resist changes to these details. They often develop a blind spot for architectural problems within systems they are responsible for because they know them so well. Unnecessary complexity and other idiosyncrasies do not bother them in the same way as it would other developers.
Ultimately, Experts provide a great deal of business value by being able to get a lot out of existing systems without needing to write a lot of new code and often understand how to implement new features with minimal changes.
Developers of this archetype love to build things and will want to solve every problem by writing a lot of new code. From the outside this archetype will look a lot like a junior developer: they usually spend most of their time coding, do not have line-management responsibilities and are not considered the expert in any particular area of the business. However, a Builder uses years of experience creating software to do so far faster than junior developers, no matter how much Red Bull they drink and late nights they work. When people talk about the mythical 10x developer what they are actually referring to is a senior developer that has dedicated their career to building great software really quickly.
Builders love change and implementing solutions as code, but often struggle to find the most efficient solution to a problem because they do not consider solutions that require no new code or that introduce a little bit of technical debt. Their love of change often puts them at odds with Experts and Managers who prefer to leverage existing solutions to solve problems and worry about the wider impact of rapid change.
In the right environment, Builders can deliver an enormous amount of business value by quickly developing top quality software to meet new business requirements. The connection that I made with a 10x developer above is not to say that they deliver more business value than the other archetypes, but it can certainly seem that way when there is a lot of new software to be written and the Builder has taken the time to understand the problem space. In the wrong environment, one in which there is no need to produce a lot of new software, the Builder will become bored and either build software that has little business value or simply leave to find something more interesting to work on.
Developers of this archetype are the least common; generally senior developers with the job title of Architect are in fact either Managers or Experts. True Architects are forward-thinking individuals who spend their time thinking about how all the different pieces of software fit together to produce the best results. They are content not to get into the low-level details of each individual system but instead look at things more holistically.
Architects are all about change, but care deeply about making the right changes and not changing things for no reason. They care about the trade-offs inherent in change and are usually excellent at communicating these trade-offs to the technology and business stakeholders.
Architects can deliver the most business value by ensuring that the architecture as a whole is fit-for-purpose and updated as new business requirements emerge. They need to work closely with the other archetypes, especially Builders, to ensure that the big picture that they are constructing is understood and observed. In many organisations developers of the Expert and Manager archetypes are given the job title of Architect; this often results in a gate-keeper role that prevents other developers from making changes. Embracing and managing change is a crucial part of being an effective Architect.
In the real world people rarely fit exactly into one category. I think that most senior developers will have a primary archetype and exhibit some attributes of one of the others. As I have mentioned above, no one archetype is better than any other and it is important to see other people's points of view. To that end, I think the more attributes you can acquire from other archetypes, the more rounded a developer you will become.
I think it is useful to think in terms of combos when considering what sort of developer you are. First decide which primary archetype you fit in best. Once this is done, look at the remaining archetypes and decide which of those you fit into best to complete your combo type.
My belief is that each individual's personality and experience will naturally push them towards one of the four archetypes over time. However, some companies and roles will make it very difficult to express your true archetype. For example, in an organisation that is opposed to change it would be hard to become a Builder because there just is not that much to build. Equally if you are a Manager archetype but your organisation is already top-heavy then it might be difficult to get the necessary promotion to become a Manager.
I think that if your company or role forces you into a different archetype than what you would naturally fall into then you are likely to experience poor job satisfaction, and it will be hard to understand the source of this without stopping to look at what you enjoy doing compared to what you are actually doing. It might even be hard to know what you enjoy doing if you never get the opportunity to do it.