I finished reading and completing most of the exercises of Bruce Tate’s Seven languages in seven weeks. The above questions might come up in you if you read the book. It can come up otherwise too, of course.
Starting from a theoretical position, probably the best is if you speak multiple languages at an expert level. But it is not so likely. As it is really difficult to be truly bilingual, it is not so easy to be an expert in multiple programming languages either. Think about sportspeople. There are only a few who are the best in different sports, but really not so many. Or you can think about musicians too. Mostly you’ll see specialists. You have to spend a lot of time honing your skills in order to become an expert in something.
What happens if you are a specialist in one language?
Most likely your possibilities are not so wide and likely to decrease by time. As my company was decommissioning old mainframes, people who were expert on that system decided to leave the company instead of learning something new almost from scratch. Losing levels of proficiency was not too compelling to them.
However in your own field you will be able to get very high salaries or you can charge a lot of money on your clients. But you are also more vulnerable to technological changes.
What happens if you have a fairly good level in multiple languages?
You are familiar with possibly more paradigms than if you are a mono-linguist expert. You are aware of more concepts. If you face a problem you are aware of much more choices and you’ll know why to choose each one in a certain scenario.
Most probably you’ll not be able to identify yourself as a C++ guru or a Pythonista. You’ll just call yourself a developer, a craftsman, etc. It will be hard for you to say you are best in any of the languages you use. Most likely it will change from project to project based on what you are using currently.
Your choices will wider you’ll find ore positions interesting, but you won’t qualify for expert roles in any language.
Both have their upsides and downsides. Which one do you prefer?
I personally prefer than latter one. Working in multiple languages and learning new things I really enjoy, while I also try to deep dive in some parts and learning some more advanced techniques in some of those languages.
What I try to learn the most about are things like test driven development, object oriented design which are more language independent concepts than knowing the ins and outs of a C++ compiler.