Skip to content
loading...
Discussion
markdown guide
 

For what?
What is your career goal? What is the area of expertise?
because ... as usually ... it depends.

From limited experience and research I saw that multi-skilled positions require more cognitive load, do more work to catch up with everything, cover a wider range of problems and they have similar compensations. So most likely, from a salary point of view and your brain sake is better to be an expert.

But ... if you want to work in a startup, is a requirement, most of the times they cannot afford to have a specialist because they have needs in 5-10 areas but only a few employees.

But ... you can be an expert on some technology that has little or no demand ...

 

You definitely have to make some choices but you still know what the others are talking about.

For example, let's say you are a "backend developer". That's already a generic term. Do you specialize in web apps? Do you write tools for devops? Are you a master of distributed programming? Do you write in seventeen languages (except JS which breaks my logic :D)? Then you want to pickup frontend programming. You're already familiar with HTML and CSS. Do you learn just ES6? You can go down the rabbit hole of SPAs, tooling, state management patterns, progressive web apps, web design, user experience. Wait, you heard from someone that programming mobile apps is cool. So what do you do? Do you pick up iOS programming or Android (nobody cares about Windows phones that much)? Maybe both. And still, you haven't scratched the surface of how vast software development is: realtime systems, embedded, AI, IoT, bio-informatics, system design, database design and so on.

Definitely make choices :-D

 

While being multi-skilled will learn you a lot, mastering at least one technology is always a good idea, especially to find a job. I'd say the best thing is to be balanced between the two: master with some (1 or 2) techs but still curious and learning new and different things.

 

Long term, it pays to be multi skilled. Otherwise, you may end up stuck maintaining ancient legacy systems with little opportunity to change jobs. Just ask any COBOL programmer. It can be comfortable but is usually unsatisfying.

In the short term, being a master of a new and popular technology can be very lucrative. That is until the market shifts or the number of master level programmers increases. This is essentially what happened during the dot com boom and bust of the late 90's.

It is probably best to focus on one larger area, like data or UI, but not be tied down to a narrow set of technology, like a particular framework.

 

The advice I've heard (it might have been Github or Valve people who I first heard it from) was to be T-shaped. In other words, to try and have a broad base of knowledge, but have something that you go deep on. I don't know how well I follow this myself. I think i'm more of an inverted double-bell-curve shaped person: I try to know a little about a lot of things and learn a lot about a few things as interest or necessity dictate. Depends on your goals, interests, and learning style I guess.

 

You can never know the basics of too many languages.

Classic DEV Post from Apr 10 '18

What I've Learned After Working Remotely for 10+ Years

Observations from working remotely in technology.

Heithem Moumni profile image
I'm a software engineer with 5+ years of experience building exceptional, high-quality websites and applications. See more 👉 hmoumni.com