From my own experience I know that it is possible to be a Full Stack developer. I’ve worked on back-end with Ruby, Go, and Python to name a few. I’ve worked on web front-end both in the old jQuery / Knockout.js era and in the modern React era. I’ve built mobile apps for iOS with UIKit and, begrudgingly, with React Native. However I’ve rarely done all of these things at the same time, switching effortlessly between them sprint to sprint. Instead I’ve found myself working in longer, focused, stints on each area. For example at one point I was working as an iOS developer, but I was tired of it. I switched to back-end for a couple of years before I once again returned to iOS. This lead me to the idea of the Stalactite Developer.
The Stalactite Developer
The Stalactite Developer is inspired by the idea of T-shaped skills. A T-Shaped person is said to have a broad set of shallows skills in many areas which enables them to collaborate with experts in those areas(the horizontal bar) and a deep expertise in a single area where they are the experts(the vertical bar). If you are familiar with stalactites you can probably already see where I am going with this.
A stalactite is a naturally occurring rock formation often found in limestone caves. They grow down from the cave’s ceiling when drops of water, containing minerals, deposit minerals causing a reaction which creates new rock.
If you allow me to stretch the metaphor of T-Shaped even further, let me explain the idea of a stalactite Developer.
Stalactites grow from a base in the cave’s ceiling. This base represents all the skills that contribute to all the individual stalactites growing from the base. In the base we find skills such as computer science, programming, communication, ability to work effectively with others, agile processes, data analysis, security, git etc. In common these skills all have the fact that they are generally applicable no matter what kind of developer you are.
Further there are bases within the bases, for example the base that mobile development shares with web front-end. Here we find skills such as design, user experience, accessibility, client networking. Improving any of the skills in the base makes you better at all roles that grow from the base.
The stalactites represent the individual areas. Here we can be as granular as we wish but for the sake of discussion let’s limit ourselves to mobile, web front-end, and back-end. As you focus on a specific area you improve your skill in that area, growing the stalactite. This is where the metaphor starts breaking down so please humour me. When you are focusing on a specific area the other stalactites start to retreat due to the lack of focus, it’s like their access to mineralised water has been cut off and the air is corrosive.
As with most things frequent focus switching is bad, in this case it causes diminished growth in all stalactites. After each switch you have to spend some time getting back up to speed, or if you switch so frequently that everything is fresh in your mind gaining depth becomes a challenge. For healthy stalactite growth these switches should be fairly infrequent, definitely not sprint to sprint.When you do switch it takes a while to grow back the stalactite to the point where it was when you last focused on this area but this happens at a faster rate because of previous experience.
Hopefully I’ve convinced you that you can be a full stack developer but that trying to be a stalactite developer is better. Frequent context switching is bad for growth, the aim should be to focus in longer stints on a single area. When you switch expect a ramp up period before you are back to where you used to be. In my experience stints of at least 6 months result in the best outcomes and the ramp up period can be expected to take at least 2 weeks with 4 weeks not being uncommon.
From a hiring perspective looking for stalactite developers is an excellent idea but you need to be flexible and supportive when they want to redefine their own role to explore a new area.