I've transitioned to product-facing engineer for about 2 years now. I wouldn't call myself a 'front-end' engineer or a 'full-stack' engineer - I don't think I'm qualified either. I've departed the pure Backend service engineer role. Now I'm working on product features, where I occasionally tap into different stacks but mostly focusing a smooth product experience.
What do you prefer? Backend or frontend? Web or Mobile? Infra or Product?
GIFImage description
The Backend Role
I'm aware of many public definitions of engineers (frontend, backend, software vs hardware, web vs mobile, or the glorious full-stack...etc). To me, I've only had 1 role previously at Amazon for 4 years - a backend engineer working on services. That means my role is primarily about designing and building backend APIs.
This has changed since I joined a new company. It has been 2 years since I look at API designs - I certainly miss it.
What I Missed the Most
The decision making processing was 'simpler'.
The whole theme was about the API contract and use cases. You keep on finding corner cases and solving them, where the 'end user' is usually another team's engineers. You can disagree on many things, but all conflicts come down to certain set of mandatory use cases and another set of non-MVP use cases.
The decision making is simple in a way that, backend system do not often have to worry about the human factor - it's not user-facing. Engineers have a lot more control of the end to end system design.
What I Don't Miss
I didn't enjoy the fact that my backend work was not usable by human beings.
At dinner table, I'm sure we all get these questions: what do you work on? My answer is often vague because - when I say 'I work on backend system', it's really difficult for people to visualize or weigh the value of my work.
Working on pure backend team, far from user-facing product, I was lack of many aspects of modern software development. I found out much later that there are engineers who wear many hats: user experience, end to end project timeline, collaborations with other systems. These are critical skill sets to train if I were to lead a team to build something.
Reality
Now when I occasionally bump into people working on backend design - it just reminds me of the goold old conversations I used to have with teammates :)
Once in a while, I wish I can dial back and just work with system that talks to systems.
What do you prefer to work on? Has anything changed in the past years? Backend or frontend? Web or Mobile? Infra or Product?