DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

How to Master Your Software Engineering Journey, Part 2

Take an in-depth look into the importance of communication and collaboration, as well as traits of a generalist, specialist, and as a bonus, versatilist.

Anand Safi user avatar by
Anand Safi
CORE ·
Mar. 31, 22 · Opinion
Like (3)
Save
Tweet
Share
5.08K Views

Join the DZone community and get the full member experience.

Join For Free

Software engineering is one of the most talked-about and sought-after career paths in the current world.

During my journey as a software engineer, I have worked with some wonderful people, the latest technologies, and great projects. As I reflect on my humble beginnings and the gradual progression to my current role as an engineering manager, I wish I knew some key aspects of the craft of software engineering back then.

This article is the second part of a 2-part series where we will explore some of these traits.
You can find Part 1 at How to Master Your Software Engineering Journey, Part 1. This article contains an in-depth look into the importance of communication and collaboration, as well as traits of a generalist, specialist, and as a bonus, versatilist.

1. Communicate and Collaborate 

Communicate and collaborate image

I love the following quote which seems apt for this key trait.

None of us is as smart as all of us. — Ken Blanchard

Software engineering is an art and definitely demands creativity. Oftentimes, due to the nature of work in this field, engineers tend to be cut off or cornered from a more collaborative spirit. It might simply mean they are having heads-down time or really need to focus on solving a particular challenge in a quiet, isolated manner.

While the above certainly makes sense and I agree with the approach, the problem manifests when that becomes a work style and mindset. When one continues to be a lone wolf and power through work on their own, they will be twice more resistant to seek help/ask their teammates to unblock them. Pride can easily get in the way when you want to showcase your top-notch skills as an engineer.

Being hesitant to collaborate also leads to a communication gap. The team has less visibility in your work as time passes and may struggle to work with you and intervene when to assist. Communication helps foster team building, speaking the same language, and being able to articulate any complex technical work in a non-technical fashion.

2. Mastering a Niche vs Smart Generalist

Specialists vs Generalists

Honestly, this has been one of the most challenging topics in my software 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 the 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

Generalists vs Specialists

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 scratching 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 as follows:

Generalists: They do not have a Career Ladder, per se, in which to grow vertically. 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.

Bonus

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!

The Era of Versatilist

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 one day to brainstorming the next product development iteration with the design team the next day, the true difference between 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, and 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 here).

Thanks for reading! Feel free to connect with me at: LinkedIn — Anand Safi. I would love to hear your thoughts on this and other tech topics!

Published at DZone with permission of Anand Safi. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How To Use Terraform to Provision an AWS EC2 Instance
  • Distributed SQL: An Alternative to Database Sharding
  • How Do the Docker Client and Docker Servers Work?
  • Kubernetes vs Docker: Differences Explained

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: