Home United States USA — software Should Software Developers Be Generalists or Specialists? Should Software Developers Be Generalists...

Should Software Developers Be Generalists or Specialists? Should Software Developers Be Generalists or Specialists?

136
0
SHARE

A DZone MVB discusses the age old question of whether a developer should be a specialist or a generalist, and how to go about making yourself valuable.
I don’ t even need an outline to write this chapter.
I’ ve talked about this topic so much that I dedicated an entire YouTube playlist to all the videos I’ ve done on the topic, and that list is continually growing.
What am I talking about?
The age-old debate of whether or not you should become a specialist or a generalist.
Should you become a “jack-of-all-trades” and a “full-stack developer, ” or should you specialize in one or two areas of software development and “go deep?”
Well, it turns out this is sort of a false dichotomy.
Let’s find out why.
Let’s suppose that you were on trial for a murder. Yes, a murder. You didn’ t do it—I know you didn’ t—but you still need to prove your innocence. What do you do? Do you hire a lawyer who is good at tax law, divorce law, real estate law and criminal law? Or, do you hire a lawyer who specializes in criminal law, specifically defending people who are convicted of murder?
Many people say they want or value a generalist, and they think they do, but when it comes down to it, they pick a specialist every time.
I’ ll give you another example. I wanted to get some crown molding done throughout my house. Anyway, I was looking for carpenters or contractors to do the crown molding when I came across this one company who specialized in crown molding. In fact, the name of their company was Kings of Crown. All they did was install crown molding. That is all they did. Who do you think I chose?
That’s not to say there isn’ t any value in having a broad base of knowledge or being a generalist to some degree (there are times when I’ m looking for a general handyman) , but it is extremely valuable to be a specialist of some kind—or at least to market yourself that way.
The same for those crown molding guys. Don’ t you think they could probably handle other carpentry jobs? Of course, they could, but they choose to specialize because it’s much more profitable to do so.
(By the way, even businesses themselves greatly benefit from specialization.)
What do I mean by this?
I mean that, usually, in order to acquire the skills of a specialist, a great deal of general knowledge is required and accumulated along the way.
My brother-in-law is studying to become an oral surgeon. In order for him to do that, he had to first go through dental school and become a dentist. Now, he’s not going to be doing general dentistry very often, but to him, filling a cavity or doing some general dentistry work is cake. He’s probably better than most generalist dentists, simply because he had to learn all that and more in order to become an oral surgeon.
This is all to say that specializing does not preclude you from being a generalist also, it just gives you more options and makes you more valuable.
As a software developer, you should strive to be well-versed in best practices, algorithms, data structures, different architectures, front-end, back-end, databases, etc.
You need to pick some specialization that will set you apart from the masses and greatly increase your value. When you build up your personal brand and market yourself, you are going to use this specialization to do it. If you want to make waves, you need a small enough pond. In the HUGE pond of software development, being a generalist will make it more difficult to even make ripples, at least at first.
So, yes, work on being a well-rounded software developer. Develop a broad base of knowledge and grow that base, little by little, year after year. But also pick some specialization that you will dive into and become a master of. Eventually, you can even have “comb-shaped knowledge, ” where you have multiple deep specialties, like Elon Musk.
But start with one.
I know, I know, every job description says that they are looking for good software developers who can wear many hats or work with the “full stack” or can be a jack-of-all-trades. They want you to possess every skill under the sun. It’s all a lie, I tell you. A big fat lie.
The fear is that they’ ll hire someone who can only do one thing, so they try to safeguard against that by making the job description state that experience with their framework or technology stack is not necessary, even though that’s not completely true.
Get that T-shaped knowledge so that you do have a broad base, but go deep in one area so that you can be the expert in the exact technology or skill set that matches the job you apply for.
Even if you are a “full stack” developer, you are going to have to pick a stack or two. You can’ t know them all and be effective by any real measure. It’s not just computer science and programming where this phenomenon is occurring either. Every major profession is moving towards more and more value on specialization.
Consider how large medicine is today. Generalist doctors have trouble diagnosing underlying illnesses and problems because there are just too many possibilities.
Accountants, lawyers, financial analysts, and just about every kind of engineer have to specialize to be effective because knowledge domains are growing to such large extents.
Then specialize in something else. It’s not that big of a deal. One of my good friends, John Papa, specialized in a Microsoft technology called Silverlight. And then Silverlight was axed by Microsoft and it’s now as dead as a doorknob. But did John throw his hands up in the air, give up, and decide to live in his car? No. Because he was already a specialist, he had built up a reputation and a following.
Now John is a specialist at developer SPA (Single Page Applications) , and he’s doing even better than he was before.
It’s a much better choice than doing nothing, and you can always change course and switch directions later on if you need to. Plus, you’ ll find that once you learn how to go deep into one specialization, the next one is much easier. Many skills that don’ t seem transferable are, and developing the ability to “go deep” is valuable in itself.
Don’ t worry if it’s not the “right” or the final one.
My friend Adrian Rosebrock is a very successful software developer and entrepreneur who specializes in a specific Python library for computer vision.

Continue reading...