Mini-thread on:

Why the "frontend" vs "backend" eng division doesn't map well to engineer psychology ("product vs infra" maps better!)

a) Job mismatch problems that result from using that division

b) Why I think new grads choose to be PMs because of this bad division.
The "frontend" vs "backend" engineering division doesn't map well to the psychology of how engineers pick projects and why they learned to code.

A division that works better for me personally is "product eng" vs "infrastructure eng."
Broadly speaking, there're 2 types of engineers:

1) "Product-first" engineers. They're obsessed with using code to solve a user problem. Code is just a means.
2) "Code-first" engineers. They're obsessed with the abstractions, tools, and libraries in the code.
Product-first engineers map to "product engineering"—building features agilely and solving customer problems, and code-first engineers map to "infra engineering"—e.g. building data-intensive infrastructure systems.

Both types of engineers touch the "frontend" and the "backend"
Job mismatch problems arise when you try to map product-engineers to the front vs. backend division.

E.g. I'm a "product engineer."
If I say I'm "frontend", I'm assigned to products closer to the end user, but don't get to think about the business logic that solves problems.
But if I say I'm "backend," I'm often assigned to infra products further from the end user, like migrating databases on AWS, or building distributed systems (rather than using them.)
This may also be a reach...but I think many new grad product engineers choose to be PMs because of this inadequate "frontend vs backend" division.

Within their eng internships, maybe they're assigned to an infra team and learn to dislike "backend."...
Maybe another internship later, they're assigned to a product team as a "frontend" and then learn to dislike "frontend" because they never get to work on the business logic that solves customer problems.
As a product eng person, I was very lucky to have been placed in a "product" team as a "backend engineer."

If not for that opportunity, I probably would've decided to do PM.
At that team, yes I built a large system. But also I had the chance to ponder and resolve product questions regarding ranking, tagging, and user engagement.

And the chance to speak with eng, data science, and business, balance those interests, and write the resolution in code.
EDIT to b) I meant "some new grad computer science students", not "all new grads."

A series of wrong eng internship placements in college could create an incomplete picture of what engineering could be like. https://twitter.com/michlimlim/status/1293336559425662978?s=20
You can follow @michlimlim.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: