I started out as a graphic designer. Web-development was just a tool to bring my creativity to life. As I couldn't keep up with everything going on in the design and development world, I made a tough decision to focus just on web development. Thinking that my life will be easier now, I surprisingly saw that there are so many different paths you can take as a dev- full-stack, backend, frontend, DevOps, etc.
This content is available in developerHabits YT channel
That's why, it's a question that's been bothering me since I can remember - should I specialize or try to focus on many things at once? To a person who's curious and wants to know everything, the answer seems obvious. But based on my experience, the reality is a bit more complex. In order to answer that, let's go over both options.
The pros and cons of a specialist
A specialist is someone who's got lots of experience, knowledge, or skill in a particular subject[1]. In order to gain that kind of mastery, one must do focused work for a long period of time, giving attention only to a limited range of subjects.
In the world of web development, you can think of front-end and back-end developers. They specialize in a single part of the web development process. And even then, you can dig even further. One may be a front-end developer focusing on VueJS. Or a back-end developer, specializing in Laravel. The options are...endless.
As with everything in life, there's both good and bad in specializing.
Some good things about being of a specialist include
- Ability to contribute to solving complex problems
- Possibility to become an expert in a specific domain
- Less competition
- More money
The negative parts about specializing include:
- Less variety in the problems you're able to solve
- Bigger chance of becoming obsolete
- A danger of having a narrow view of things
The pros and cons of a generalist
A generalist - someone who has a range of skills and knowledge [2]. In order to be a capable generalist, one must have experience with various subjects over an extended period of time.
In the world of web development, a full-stack developer can be seen as a generalist. If you can be efficient in contributing to the frontend, backend, databases, and also ship the project using various dev-ops tools, then you can call yourself a full-stack developer(that said, there's no clear definition for that). But not only - as a jack of all trades, you should also be able to manage projects, talk to clients, etc.
Image taken from https://www.edureka.co/blog/how-to-become-a-full-stack-web-developer/
Some of the good things about being a generalist include
- Being able to solve problems in various subjects
- An ability to see the bigger picture
- A smaller chance of becoming obsolete, as your skills are useful in different situations
- Variety
The negative parts of being a generalist include
- There are smaller limits to the depth of your knowledge
- It's easier to replace you when problems get specific
- A constant need to keep yourself up-to-date with various topics
What should you do?
As you can see, there are cons and pros for both being a specialist and being a generalist. Which one should you strive for? In order to answer that, some points must be considered.
Experience
I believe your experience matters a lot when making the decision.
If you are just starting out, I advise you to focus on a single subject, at least initially. For example, when you want to start building websites, focus just on either frontend or backend to gain some initial experience. During the process, you'll get to craft your skills, build an understanding of how things work, and eventually, notice where other competencies are needed.
In case you already have some experience, there's more freedom to choose - jump over to another subject or continue learning more about your current topic. I personally have encountered that situation multiple times with learning graphic design, front-end, and back-end development. Sometimes I have decided to specialize, sometimes the fundamental knowledge has been enough.
The goal
Generalists and specialists can both be useful in different environments. That's why it's important to know your goals and the environment you want to be part of. For a startup that's in a need of an MVP or just needs to move really fast, a full-stack developer with an ability to deliver new features single-handedly can be a huge asset. For big corporations, quality and optimization are important, thus specialists have more value.
What's the environment you want to be part of? What's your goal?
T-shaped skills
If you are experienced enough in one topic, striving for the balance between being a specialist and a generalist is my advice. The concept of T-shaped skills can be helpful here.
According to the concept of T-shaped skills, the vertical part of the letter represents the depth of your skills and the horizontal part of the variety of other areas you can work in. In his article "The T-Shaped Person: Building Deep Expertise AND a Wide Knowledge Base", Ransom Patterson put it nicely:
I like to think of the T-shaped person as an improvement on the classic saying “Jack of all trades, master of none.” A T-shaped person is a “Jack of many trades, master of (at least) one.”
And that's what I believe one should eventually strive for - "a Jack of many trades, but a master of at least one". I know that keeping yourself up-to-date with various topics is hard and in order to be a good specialist, you should be focused. But once you have put in the hours, learned in-depth about one thing, and covered the fundamentals of others, jumping around between various areas is much easier.
Find your way
In the end, I'm in no position to tell you whether to be a generalist or a specialist. Regarding web development, I suggest that in the beginning, you focus on one area, and later start adding other disciplines, while also crafting the skill of the first area. This way, you form a T-shaped skill base.
Remember, that in the end, it's you who decides. And it's you who has to take an action.
Resources for definitions
[1] - https://dictionary.cambridge.org/dictionary/english/specialist
[2] - https://dictionary.cambridge.org/dictionary/english/generalist
Extra resources on the topic that I recommend
The T-Shaped Person: Building Deep Expertise AND a Wide Knowledge Base(Ransom Patterson)
When To Be A Full Stack Developer — And When To Specialize(Jonathan Campos)
Do Coders Need to Specialize to Succeed in Their Careers?
IMHO: The Mythical Fullstack Engineer(Ryland Goldstein)
To Advance In Your Career, Is It Better To Be A Specialist Or Generalist?(Caroline Ceniza-Levine)
Interested in topics related to growth mindset, developer lifestyle and webdev tutorials? Subscribe to my Youtube channel called developerHabits
Other channels
📷 Youtube: developerHabits
👉 Twitter: https://twitter.com/developerHabits
👉 IG: https://www.instagram.com/developerhabits
Top comments (1)
I was looking for T-shaped developer posts and I finded this. I share your personal opinion and I would put it like this: It's better if the person try to learn something about everything (something that contributes to your professional growth) and everything about something (your passion).