Hire fullstacks.
Backend vs Frontend
Separating developers into backend, frontend or mobile is the wrong separation of concerns.
You can't predict demands for backend/frontend tasks.
Sometimes you are going to have much more demand on backend or frontend, and the other developers will be subutilized.
Another problem with this separation is that you create a hard dependency from your backend to the frontend.
You can't start the front end because the back end has finished.
This will delay the delivery of software to the user, they will need to wait more to get the value from the product.
Communication overhead is also a problem, the backend and frontend developer needs to keep going back and forth iterating when integrating.
You will also reach some local maxima for the experience, as no developer controls the full experience end to end.
Silos won't be fixed.
Product-Minded Developers
We believe in product-minded developers.
Developers that focus more on a product than only on tech. They need to design systems and architecture to support product requirements. And to make this possible they need to work end to end to control the experience they want to create for the product.
You can’t have a fast and real-time frontend if you don’t control the backend.
We do have specialist in a few areas but they are t-shaped as they can operate outside their expertise, this is possible because we build abstractions to make it easy to build products
A frontend task most of the time won’t require the developer to write any new CSS, most of our CSS is already written in our design system. We just need to compose design system components to build new screens.
When needed we create new components and new CSS
For most of your tasks, you won’t need to recreate anything from scratch, you could need to improve some common infrastructure, and then you can go deep and “specialize” in this particular topic to support your work
Squads of One
I'd like fractal structures. I like to think that each one of our developers is like a Squad of One.
Similar to a full Squad they can work in a cross-functional way to solve a problem.
They are versatile. They can contribute to any problem across any part of our stack. If the bottleneck is a database query, they will do a deep dive, optimize, send a pull request with the fix, release the change to production, and monitor the product usage to understand if this is fixed.
They have End-to-End Understanding. Their holistic view enables them to go from a "bug" in front, to finding a structural problem in our backend architecture.
They are very efficient. A single developer can solve a bigger problem using the right levers (abstractions).
We can work in faster development cycles. Creating both the backend and frontend at the same reduces the integration time and redoing of work. We can ship faster with full stacks.
We also improve communication. When the same developer makes the backend and the frontend the communication requirements are reduced. We still need communication as a form of asynchronous issue, RFC, and code review.
They focus more on problem-solving than on backend or frontend. They see a problem, and they try to solve using the best approach, not only the backend or frontend. Sometimes without writing a single line of code.
They also own their feature/product. They are responsible for solving a customer problem. How they will solve, it is up to them. They will write up an RFC for both the backend and frontend, the order of execution they deliver. They will also operate software in production, and check for bugs and KPIs of usage.
In Resume
Fullstack or Product-Minded developers can work for both Startups or Big Companies (Stripe are all fullstacks).
We have more software, open source, and abstractions that let us build complex software with fewer people.
Indie hackers building their Mini-SaaS is a prove of this.
If your company does not have full-stack, you should give it a try.
Woovi
Woovi is a Startup that enables shoppers to pay as they like. To make this possible, Woovi provides instant payment solutions for merchants to accept orders.
If you want to work with us, we are hiring!
Image by Freepik
Top comments (8)
I agreed with this article idea. However, in my opinion, a developer still need an heavy side. Like Fullstack Web Developer (Frontend heavy). Moreover, the important thing is to ensure the product delelivered well, not only focusing on tech only. 🧑💻
Agreed 👍
Nice one, agree - and that's what the author means as being "t-shaped"
Not at all. You should separate by specialization areas depending on the size and complexity of the project. Otherwise hire one guy that do everything, design, product, BE and FE. Having this monolithic view about reality is setting the wrong standards and expectations.
Is like Esto mentioned, it’s important to grasp different concepts and technologies, but practically impossible to be an expert on both. Either way we will all be replaced by AI so eventually the post will be changed to: “ Don't hire developers” 😂
What you're saying can't be applied to trainee or junior level engineers.
One has to start from either FE OR BE.
What you're saying can be applied to mid level or senior level engineers. Where one person starts from one domain and grows into another.
One side should be strong enough to do efficient stuff and should have knowledge on other side to deduce what's wrong in its entirety.
you always start from general knowledge to more specific knowledge
you first do high school, then college, then specialization
specialize too early is a trap
I was willing to hire a senior backend developer, as most of my team has frontend expertise, including myself. But now it's clear that the best approach for me is to hire a full-stack developer even if his previous experience was as a Backend Developer.
My CTO once told me - "Jr/Mid developers build features, Seniors build systems". I think it aligns to what the post says. You don't have to be an expert on all fields, but still need some basics on all them to keep pushing value independently and quickly.