Developer ! Are you losing your rat race ?
A rat race is an endless, self-defeating, or pointless pursuit. It conjures up the image of the futile efforts of a lab rat trying to escape while running around a maze or in a wheel.
Are we building our own maze self defeating landscape by our exacerbated focus on technology ? Let me explain.
The context
As Marc Andreessen famously said “Software is eating the world”, which means that there is more and more demand for software. At the same time, giant countries like China, India, Russia or Brazil are producing more and more master’s degrees every year. This also means more and more software engineers. The consequence is that there has never been so many new technologies emerging than these days. The software landscape his huge, growing and complex.
That’s great for progress, but it’s a puzzle for hiring. In this chaotic environment, years of experience with a particular technology is something that remains easy to measure, that’s why employers (and developers) tend to use keywords to cast for a job.
The effects
As a result, developers tend to pick a few technologies to become masters at, to put them on their CV and get job offers. There’s a danger with specializing on a particular technology : eventually, it will become deprecated, in this keyword driven world, it’s almost like if you’ll have to start from zero again. Even if a specialization is wide enough now, as time goes on and more and more technologies are created, any area of expertise will become a tiny spot in all the landscape. One might think this is only an issue for old guys that did not stay up to date … I strongly believe this is wrong, it happened to all past technologies, I don’t see why today’s latest .js framework wouldn’t be legacy stuff one day.
One could think that sticking to a good employer is a good fix against that. It is … for some time ! Sticking to an company actually means betting on this company. What would happen if it went out of business, or through difficult times and you’re asked to leave ? When you reach the job market after so long with a single employer, you’ll be a de-facto specialist, on proprietary stuff that no one is interested about.
Finally, you might work hard not to specialize, but it’s going to be a lot more difficult to get a job as a generalist, only a few shops actually hire this way.
To summarize, we are forced into specialization, which is great in the short term, but risky in the long run.
1€ advice
So what can we do about this ? Obviously, we cannot change the world … The only ones we can act on are ourselves !
Learning
In our fast moving tech world, learning remains key ! But instead of trying to keep up with all the cool new techs that are invented every day, we should study fundamental skills, and only learn just enough specific skills to get the job done. To me fundamental skills are all the things you’ll apply whatever the language and technology you are using, for example :
- design
- architecture (whatever that is …)
- clean code
- refactoring
- legacy code
- testing
- tooling
- mentoring & coaching
- programming paradigms (functional, dynamic, static, imperative, OO, concurrent …)
- process flow
- communication
- product definition
- concurrency
- performance
I wrote this post that explains how I did learn some of these skills (by no mean would I say that this is the only way). Good mastery of these skills should be enough to quickly get up to speed in any project you are involved. This other article In 2017, learn every language, which I found through the excellent hackernewsletter, explains how this is possible.
Unfortunately, knowing is not enough …
Selling
How do you convince others that you are up to the job in a particular technology ? Unfortunately, I don’t have a definitive answer yet …
Regularly, people try to coin a word to describe the competent generalist developer : polyglot, full stack, craftsman … If it’s good enough, it usually gets taken over quite fast by the industry and just becomes yet another buzzword (the only exception being eXtreme Programming, but who would like to hire an eXtreme Programmer ?).
In Soft Skills, John Somnez says the trick is to explain to people that you might not have experience in a technology ‘yet’. This might work, if your resume gets through, which is not sure.
Here’s my try : the next time I’ll polish my resume, I’ll try to put forward my fundamental skills first, for example with 5 stars self-assessments. Only after will I add something like “By the way, I could work with tech X Y Z …”.
Independence
Being your own boss could be a solution in the long term. I recently listened to The End of Jobs in which the author explains that entrepreneurship is an accessible alternative these days, and that like any skill, it’s learnable. The catch is that there are no schools, no diplomas, and that it seems a lot riskier in the short run. Despite that, he makes the point that the skills you’ll learn makes it quite safe in the long run !
Questions
I feel like my post asks more questions than it provides answers :-). Honestly, I’d really love to read other people’s opinions and ideas. What are your tricks to market yourself on new technologies ? As a community, what could we do to fight our planned obsolescence ? Do you think I’m totally wrong and that the problem does not exist ? What do you think ?
Leave a comment