Full stack engineer
I’m somewhat embarrassed to admit that I finally understand the “full stack engineer” role that lots of startups want.
For most of my career, I’ve been more front-end focused. I’ve also been a passable designer, particularly in developer tools where the information design and workflows matter more than flashy visual design. I felt like that was my version of being “full stack”.
However, my inability to talk about backend problems (e.g. systems design problems) has been limiting when interviewing at startups, and it’s blocked me from joining some extremely cool companies (names you’ve definitely heard of). I’ve always been able to jump into a backend codebase and make small changes, but never more than that.
At my current job, since the very beginning, the expectation was that engineers can land features that span frontend and backend. And after doing this for 6+ months, I really finally understand the desire for full stack engineers. I’m ashamed it’s taken me this long to get - I’ve long enjoyed my ability to act as a hybrid engineer/designer, so you think I would have intuited the value of full stack engineering.
I think the core of my misunderstanding was that I thought software was always shipped in teams, so it didn’t seem like a problem to be that people would specialize in different things. I didn’t understand the extent to which many features can be built by just one full stack person.
For many years I worked in observability, where the backend problems seemed really daunting and hard, and the backend engineers at the companies I worked at hated frontend, so the frontend/backend specializations fell out of that naturally.
Full stack engineering is fast. It removes the need for coordination or project management for small features. And it seems the code ends up being higher quality as well. For example, I’m working on some data visualizations. Because I’m responsible for the UI and the API, I can be really thoughtful about what logic belongs one vs the other.
In any case, I have to say it’s a lot of fun to be a full stack engineer who can also pass as a PM and designer. I can see the whole picture of what needs to be built, and do it all myself if I want to. Pretty cool.
I’ve long thought that coordination cost is the primary mechanism that slows software development speed and quality. I was mostly thinking about the coordination cost between product, engineering, and design, and now I’m also thinking about the coordination cost between overly specialized engineering roles. In any case, my musings on coordination cost deserve their own post.