In case you missed the first part in this 5 part series — you can read about it at: Key Point 4 — Communicate & Collaborate — 5 things I wish I knew as a Software Engineer
All the 5 key traits can be found at.
Honestly, this has been one of the most challenging topics in mySoftware Engineering career and I am certain for many others as well. There is really no right or wrong approach and the ultimate direction will matter a lot based on your preference, interests and operational style.
I will attempt to highlight key characteristics of each side below. Also, there is an added bonus at the end where I want to share a blended approach which I personally prefer (more on that later).
Generalists — also referred to as “Jack of all trades, Master of None”
Specialists — also referred to as being “T-shaped” i.e. growing vertically in a specific niche
Overall, Generalists can benefit from having a broader viewport, more skills at their disposal and skills that are easily transferable while moving jobs. On the other hand they could end up being on the surface of many skills but mastering none due to lack of depth and vice-versa for Specialists.
An area I want to highlight in the Generalist vs Specialist debate is in terms of Career Development and Growth. A key distinction that I believe is associated with each persona is:
Generalists — They do not have a Career Ladder per se to grow vertically in. They instead have a Career Rock-Climbing Wall which gives them the opportunity to change course and move up, down, left, right depending on their will, accelerated growth mindset and comfort.
Specialists — They have a definitive Career Ladder for the most part. The path may seem narrower, with pinpoint focus and locked down but there is always a solid next stage in sight.
As promised, I wanted to share an interesting tidbit by Gartner. Beyond being a generalist vs specialist, there is a 3rd category which is being adaptable based on the situation, called Versatilists!
As you can see, Versatilists can scale as well as operate on-demand and as-needed. This is exactly the “wearing many hats” notion that is becoming popular in the field of Software Engineering.
Whether it is jumping on a PROD issue on one day to brainstorming the next product development iteration with the design team, the next day — the true difference in a programmer vs developer vs a SOFTWARE ENGINEER relies on this core skill.
I can personally attest that being a Versatilist myself gives me a strong sense of connection to the entire SDLC, company mission, enhances my communication and collaboration within and outside my team. While it is immensely valuable, there is a potential downside of this seeming as if you are “Spreading too thin” (there is a separate article as well I wrote regarding this at
Let me know in the comments below on what are your thoughts with such an approach and when does it make sense to leverage this.