Full Stack Developer vs. Software Developer, which is right for you? Let’s reframe the question.

To specialize or not to specialize, that is the question.

The software industry is not the only industry that faces this question. No matter what industry you’re in, it’s a loaded question. Like the answer to most queries, it depends. If you’re in a corporate setting, specialization is typically the norm, and within start-ups, it’s the opposite. The specialty will impede a person’s ability to create value in a small group. In a large group, the value specialization brings has the potential to be off the charts.

I’m a generalist and have always tended to chase the knowledge dragon.

A Knowledge Dragon

This approach has worked for me, but it’s not without its challenges. I’m a jack of all trades, a master of none. I can’t know everything. As a result, my imposter syndrome symptoms rage on. My specialist colleagues leave me in the dust on several topics. Fortunately, many people recognize the value of a multi-faceted perspective and accept my lack of in-depth knowledge of subjects.

Sometimes I consider deep diving with one technology and sticking with it. I then sweep that consideration aside when another shiny paradigm comes along. I’ve always loved learning big concepts that apply to all technologies. I’ve also enjoyed playing with new tools and breaking them ever since I was a child. I would disassemble radios, inspect them, then put them back together again. I would try to fix them, and sometimes with success.

Anyway, that’s enough about me; this is about you.

Should you be a full stack developer or a software developer?

Many businesses start with a specific product and specialize in that product. It’s usually a successful strategy until it’s not. It’s 2020, and Zoom has been trending well over the past six months.

Zoom Sticker

Specialization appears to have fueled most of their success. Zoom invested in a specific product with a limited set of applications. In the beginning, their product’s quality was low, but they’ve improved over the years.

Meanwhile, Microsoft is bundling Microsoft Teams into Microsoft Office, and it now has video conferencing. Microsoft is not a company that specializes. It has always focused on creating general solutions for broad applications. We’ll see if teams’ video conferencing will gain a foothold.

So why am I talking about companies and not you?

Companies are an excellent way to observe the advantages of generalization vs. specialization. We can correlate the outcomes that companies realize with either approach and then choose the right path based on our goals. Start asking yourself some questions.

  • Do I want to start my own business in the future?
  • Does mastery bring me joy?
  • What will I do with a broad set of knowledge?
  • What about a deep set of knowledge?

This question is loaded and requires some introspection to answer.

Finding a balance between generalists and specialists is likely the right approach if you’re building a team. Without specialists, solving problems that require a deep understanding of software technology is impossible. Without a generalist, a team might miss out on a perspective that will make a challenging problem disappear. The law of the instrument comes into play when we have tipped the balance too far towards specialization.

Abraham Maslow - 1966

I once worked with a guy that used the SQL Server database for everything. This guy stored the entire user interface definition in the database. He succeeded in tightly coupling the whole enterprise to SQL Server. He was enthusiastic about the power of this paradigm. I wasn’t sure if he was joking, but he talked about creating a SQL MVC book.

On the other hand, knowing a small amount of everything isn’t practical. It’s important to deep dive into critical concepts like design patterns, clean coding techniques, etc.

Deciding between being or hiring a full stack developer vs. a software developer is not cut and dry. This decision depends on your goals, your organization’s goals, and the environment. Here is my take on the subject.

    <p>
      Which is the right choice?
    </p>

    <p>
      Software development is incredibly complex, with lots of nooks and crannies.
    </p>

    <p>
      The Software Developer is already spread thin and must bear a large <a href="https://en.wikipedia.org/wiki/Cognitive_load">cognitive load</a>.
    </p>

    <p>
      The Full Stack Developer bears an even larger cognitive load and may become overwhelmed.
    </p>
  </div>
</div>

<div class="wp-block-genesis-blocks-gb-column gb-block-layout-column">
  <div class="gb-block-layout-column-inner">
    <h4 id="h-full-stack-developer">
      <em>Full Stack Developer</em>
    </h4>

    <h5 id="h-pros">
      <strong>Pros</strong>
    </h5>

    <ul>
      <li>
        Can move from team to team
      </li>
      <li>
        Variety is the spice of life
      </li>
      <li>
        Learns to quickly learn new things
      </li>
      <li>
        Brings a diverse perspective to problems
      </li>
    </ul>

    <h5 id="h-cons">
      <strong>Cons</strong>
    </h5>

    <ul>
      <li>
        <a href="https://en.wikipedia.org/wiki/Cognitive_load">Cognitive load</a> can get out of hand
      </li>
      <li>
        Squirrel?!
      </li>
      <li>
        Focusing can be a challenge
      </li>
      <li>
        Might make the wrong decisions when using complex tools
      </li>
      <li>
        Imposter syndrome might set in
      </li>
    </ul>
  </div>
</div>

<div class="wp-block-genesis-blocks-gb-column gb-block-layout-column">
  <div class="gb-block-layout-column-inner">
    <h4 id="h-software-developer">
      <em>Software Developer</em>
    </h4>

    <h5 id="h-pros-1">
      <strong>Pros</strong>
    </h5>

    <ul>
      <li>
        He had one job, and he did it well
      </li>
      <li>
        Can become the lynchpin that makes the plan come together
      </li>
      <li>
        It's easy to find a job if your specialization is in demand
      </li>
      <li>
        Lower workloads bring better focus
      </li>
    </ul>

    <h5 id="h-cons-1">
      <strong>Cons</strong>
    </h5>

    <ul>
      <li>
        Might miss the forest from the trees
      </li>
      <li>
        Opportunities to save time and effort could be missed
      </li>
      <li>
        If the specialization becomes obsolete, what now?
      </li>
      <li>
        <a href="https://www.yourdictionary.com/overfocus">Overfocus</a> is a thing. Are you missing an opportunity?
      </li>
    </ul>
  </div>
</div>

Conclusion

Like any comparison or solution, take mine with a grain of salt. The differences between these two disciplines can be vast or just a few frameworks away from full-stack.

It’s not easy to see or pick the right path. Whether you’re a developer or a company deciding between the two, you have your work cut out for you. Do some soul searching and try to find the right balance.

It’s Important to be a Full Stack Developer

Range: Why Generalists Triumph in a Specialized World