Let's assume you know a programming language and are proficient with it.
Is it enough to be a professional SW developer?
No, it is not.
The programming language is your primary tool. It is the brush of the painter or the hammer of the carpenter.
But you'd need to master other tools to collaborate with other developers and contribute to complex applications.
In Italy, there is a saying which goes like this: "I ferri fanno il mastro" which means "the tools make the master craftsman".
If you take it literally, it is not very accurate. You also need the experience to use the tools.
In this context, "having the tool" means being able to recognise when it's good to use a specific technology and to be able to solve the problem using it.
What should be in the toolbox of a developer? It depends. Web developers, mobile developers, and data engineers (and so on) use different tools. For example, knowing about ELT (Extract, Load, Tranform) might not matter for a Web developer, but it's crucial for a data engineer. On the other hand, Html and CSS are essential for a web developer.
If you are a Ruby developer, at the very core, you must know: Ruby on Rails, RSpec, a Ruby version manager (RVM, asdf, ...) and to fill a senior position, be sure to put a bunch of gems, a good knowledge of OOP, and SQL in your toolbox.
There is no limit on the tools you can have, but it requires time to acquire them, and that's your limit.
Choose the tools you want to put in your toolbox carefully, based on the career you want.
I've spent many months studying Data and ML to get the GCP Data Engineering professional certification.
After a while, I realised that it was irrelevant to my career. I had a vague idea of moving toward a career in data engineering, but my approach was wrong.
A better way would have been to learn Python and ML libraries and start an actual project using them.
The GCP Data certification does not add much to my employability. It's just not required for a Ruby Engineer. What's in high demand - for my profile like mine - are DevOps and CI/CD skills, for example.
After a few errors, I've developed a few ways to choose wisely a new subject to learn. These are:
Notice what slows you down at work
Sometimes, you are already using a tool, but your knowledge is shallow, and you spend lots of time on Stack Overflow to find responses, which you'll forget in a few days. It might be Git or SQL, for example. Find the time to master the tools that you use often.
Analyse the typical job specs
Visit an online job board, and insert your job description in the search box. Then, open the results relevant to the position you are interested in.
Your goal is to find the IT skills that are most present in the various job spec (or, in other words, the keywords with the highest frequency).
Those are the skills that you should consider learning
Website showing the co-occurring IT Skills
Similarly, some websites allow you to find skills related to a particular skill.
The website ItJobsWatch calls them "Co-occurring IT Skills", and it finds them processing thousands of job specs.
It is similar to the previous method but applied at scale.
For example, the following link shows skills most related to Ruby On Rails: Ruby on Rails - Related skills
and they are:
- Javascript
- Docker
- Git
- SQL
- React
Those are indeed the most required skills for a Ruby On Rails developer.
I already wrote why you should learn Docker and the importance of knowing SQL.
(Surprising, the list also shows Java, which is not correct, in my opinion)
Find out common skills
The last technique is analysing a broader set of job descriptions and discovering what are the skills in common.
For example, if you search for "Back End Developer", regardless of the programming language, you'll find the following skills (among others):
- OOP (Object Oriented Programming)
- Testing
- Docker
- Git
- SQL
Those skills are fundamental because they will remain relevant in your career, even if you switch to a different programming language.