What should a full-stack developer focus on?
Last week, I was asked the following question during a Q&A session after giving a talk. I paraphrase:
If the ideal of the individual full-stack developer is unrealistic, what should someone who is currently a full-stack developer focus on?
First of all, a step back. The question was prompted by argument that thinking in terms of full-stack teams is preferable to attempting to hire an amorphous collection of commoditised full-stack developers. Collaboration in cross-functional teams like this is key, but it allows for much more flexibility in the people you hire, and a more realistic approach to specialisation.
So, there still remains the question and uncertainty around what skills and individual generalist should focus on to better contribute and develop their career.
My answer at the time went something like this: look for things that are important but hard to find. For example, performance optimisation in the front end is hugely important but currently extremely difficult to hire for. Those skills will only become more valuable.
But I feel like I was missing the bigger point here. So here’s a longer answer.
The aim is not just for individuals to spot market trends or what’s going to be needed in the next couple of years. This is the kind of thinking that leads people to make punts on what the next big framework will be, and try to ‘get in’ on it early.
The bigger point is to focus on developing evergreen skills - the ones that software teams will always need, now and in the future. Or at least skills that won’t become obsolete within a few short years.
For a full-stack software developer, the following are just some examples of valuable expertise that will remain so for many years to come:
- Deep understanding of the web platform
- Incremental improvement and recovery of complex application codebases over a sustained period
- Test-driven development practices
- CSS layout principles and methods
- Scaling web application architectures, e.g. when and how to use monolithic or microservices patterns
- Data storage, transfer and reporting systems
As a software development community, we have been collectively hoodwinked into believing that productivity in one front-end and one back-end framework is enough. It is - to get started - but this lulls us into a false sense of security.
A team made up only of inexperienced developers with similar sets of light full-stack expertise can soon run into trouble. It’s the evergreen skills of the kind in the list above that will reduce the likelihood of this happening.
But it’s pretty much impossible for a full-stack developer to have deep expertise in all these things. Anyone with two to three are scary and impressive to me. (This is possibly why I was Peter Principled into management some years back).
So, my answer now would be: find one thing from the above list (or similar lists) that your current team needs right now and focus hard on it for a while. They’ll love it, and you’ll be developing skills that can be used anywhere else.
Having said all that, the one skill worth developing over all others is: spotting opportunities for developing evergreen skills while getting paid for it.
What new skill have you recently acquired through opportunism?
All the best,