What appeals to you? Being a generalist or specialist?

Generalist

An engineer who can learn any language/technology as required for the job. A good generalist engineer has a sound understanding of software development concepts and can quickly learn the intricacies of new technologies and apply them to solve problems.

E.g. Full Stack Node.js Developer

Specialist

An engineer who understands more about a particular platform/ecosystem than the vast majority of engineers in the workforce

E.g. AWS Solutions Architect, SAP Consultant

Which do you aspire to be? and why?

1 Like

Warning, long answer below.

In todayā€™s fast changing tech world, more and more companies, especially start-ups, are increasingly looking for ā€œfull-stackā€ developers. There are many interpretations of this title and I like the analogy used in the medical professional field:

A full-stack developer is like a GP or general medicine specialist. He has some knowledge and training all in areas of medicine, and can point you in the right direct for most problems. But you canā€™t ask him to solve all the problems you need, he usually refers you to specialists for surgery, psychiatrists and councillors for mental problems, dermatologists for serious skin problems etc. You canā€™t expect GP to give you all the treatment possible, and they donā€™t have the tools and training to tackle the specialised problems.

In the software industry, people arenā€™t as specialised as the many different specialisations in medicine, unless youā€™re talking about specialisations and certifications in particular technologies and framework (as you mentioned AWS and SAP consultants). When it comes to developers - people that write code - they tend to be more front-end oriented (implementing clients, UI and designs, making the app look to the design, animations and client specific logic) or more back-end oriented (API development, database architecting, business logic implementation). But within those 2 areas, each topic can be as deep as any specialization (database architecture its a huge area involving sys admins and proper database design, API development involves understanding what clients are calling it, what type of server to technology to use, how to host it etc). But each type of developer is generally expected know each topic, so in some ways they are ā€˜full-stack backendā€™ or ā€˜full-stack front-endā€™ developers.

So i think its a false dichotomy to call people generalists or specialists, because most people are generalists to some degree. Gone are the days where a developer only needs to know one language and one part of an application. Even if you are a ā€œback-endā€ developer you have to know a few languages, a few database types, a few frameworks, and some understanding of front-end for integration.

The only remaining specialists are consultants that advise on specific tech and frameworks. They arenā€™t developers most of the time.

Personally generalisation appeals to me. There are things Iā€™m good at and things Iā€™m bad at, and if given time I want to do the things Iā€™m bad at until Iā€™m good that those things too.

ā€œA human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.ā€
ā€” Robert Heinlein, Time Enough for Love

TLDR: I think developers today are primarily generalists. Some are more general than others. I prefer to be a generalist.

1 Like