Versatility is supposedly a desirable feature that can stand out in the labor market. A programmer who knows many technologies becomes a tasty morsel for recruiters not only because they can send him offers for various positions, but also because his experience may be very necessary in the project. I like to describe myself as a versatile programmer. I have prepared some insights drawn from my own experiences.
I understand it not only as knowledge of different languages, frameworks, technologies. Versatility is also the ability to find yourself in various styles of project and team management. It certainly includes experience in various types of business. I consider myself versatile, not only because I know Ruby, React, ReactNative, Flutter, Amazon Web Services, but also because I have worked on corporate projects, software houses, product companies and ran my own business.
You are more attractive on the job market
Often, the specificity of projects requires broader experience in various domains. Additionally, for example, in Ruby, Java and C # programmers find their way very well.
You will not die
It is easy to adapt, you will not get lost in the labor market, because there will always be a company that needs a commando, what the backend will do, the design will be implemented, and the server is able to configure. Needless to say, such a commando has a good chance of negotiating a slightly higher rate, right?
You are not closed to one solution to the problem
Having some experience and knowledge of different technologies, you can propose several solutions for the same problem and choose the most appropriate one.
You can eliminate rubbish
You know what works and what doesn't. You can catch the firing of the tank faster to kill the fly.
You never get bored
You can easily change projects, types of tasks. You easily find yourself in the new reality. You enjoy experimenting.
Okay, but it's not quite that easy, is it?
you are stopgap
You do everything that someone else doesn't want to or can't do. You are a budget option to carry out a project, which may not be particularly crucial, but recruiting a dedicated person would take time and burn money, and you are still paid your salary for that time.
You are constantly learning new things
The speed of learning is a feature of versatile people. You learn very quickly. So what? Won't you learn a new thing? Even one you never wanted to touch? You will learn, because you are versatile and have a good understanding of the business and dependencies of this world. You will learn because you like the employer, because you want to do this project and do something else. And so you learn new things over and over again that, in most cases, you'll use it once in your life.
You can do what you don't like
Even the most versatile programmer has something that feels good, has his / her golden zone, favorite language, framework, piece of application, but also knows a lot more things that others do not like. It is very possible that you will meet the finale where you keep doing things that nobody likes. For example, you are a full stack with a frontend flair, but still get the smack from query optimization instead of new frontend animations.
they pay little
I said above that there is a good chance that such a versatile programmer can negotiate a higher salary rate, but ... But it may be that you will be doing a lot of things that others on the team can't or won't do, and your stake won't be much at all deviate from the others on this level. But how? But you are so versatile that you should earn more. Well, your company's payroll policy may think otherwise… Frustration is around the corner.
You are not a specialist
You know a lot of different things, but you never really had time to seriously go deep into one technology, into one issue, because you have to keep jumping all the time. There's a good rule of thumb: Know everything about something and something about everything. It's fun to know a lot, but don't forget to specialize.
The cheat syndrome comes in very easily in such a situation. After all, you know a lot, but in fact you can be bent on any topic, because… well, you lack this specialization.
You will be the bottleneck
You handle a lot of different things in a project that no one else can do. At some point it starts to rain. You start to be a bottleneck, because nobody apart from you is able to push work forward. People are starting to ask each other. The questions start to get frustrating, and then it is very possible that ...
Dissatisfaction with work in such a situation is the minimum that can await you. Jumping on topics, pressure to be the one, deadlines, questions, fatigue.
These are just dangers that you may encounter if you consider yourself a comprehensive developer and are viewed as such on the team. I'm not saying it will happen, but it's always a good idea to have warning lights on the back of your head.
A versatile developer. Experience in various business categories and team structures. Knowledge of many technologies from backend, through devops, fronted and mobile. This profile is perfectly tailored for a startup, especially in the initial phase, where the entire team consists of multitasking commandos trying to bring unique value to the market as soon as possible.
Versatility is a blessing. Versatility is a curse.