Sunday, May 22, 2022

2 kinds of Software Engineers

Let's talk about software engineers in a workplace. There are 2 kinds. Categories are reductive of course, but instructive nonetheless. So don't take this too seriously, but consider it directionally.

First kind (SWE1) is one who cares a lot about the code and the system but less about the product.
The Second kind (SWE2) is one who cares a lot about the product and user experience but less about the code.

Disclaimer
I feel for each individual caring is a finite quantity. If you care about something a lot, you tend to care less about other things. But it's a spectrum, so there are engineers who care about these things roughly equally. Roughly equally could mean low level of caring across both, or high levels across both.

And there are many other things to care about in life - social interactions, personal life, family, society etc. One's caring is split across all those. It's not just the ratio between caring about code v/s caring about product that matters. The absolute amount of caring also matters. An Engineer's effectiveness and productivity also matters.

Characteristics

With that said, let's discuss SWE1 v/s SWE2

SWE1 is more concerned about the 'how', while SWE2 is more concerned about 'what':
  • SWE1 will produce good quality code and systems that meet the spec (from PMs, UX, managers)
  • SWE1 will introduce less tech debt, less bugs, more scalable systems
  • SWE1 though, will never really question if they're building the right thing, UX, or priority
  • SWE2 on the other hand will question, challenge and contribute to product decisions. They will step in the shoes of the customer
  • SWE2 though, tends to produce hodge podge hacky code
  • SWE2 will introduce more tech debt, more bugs, less scalable systems

Big FAANG like tech companies have more SWE1s, while startups tend to have more SWE2s. This is because
  • At big tech companies, there are more challenges of the code & system kind
  • Big tech companies have hiring & promotion practices that primarily reward for code & system
  • Engineers who care primarily about product get overwhelmed as well as bored at big tech companies
  • Startups have hiring & promotion practices that primarily reward for initial product launch

Hiring

As you can imagine, I think this is a mistake. I think both big companies and startups need a good mix of both kinds of engineers.
  • Products at big tech companies suck most of the time because SWE1s just don't question product
  • While startups struggle to keep productivity high after initial launch because SWE2s produce a code base not amenable to scale

If you're an engineer, where in the spectrum do you lie? If you're a manager, what is your team's composition?


No comments:

Post a Comment