Fullstack vs. frontend and backend separation. This post is about how to optimally organize your team to build solutions that deliver as much business value as possible. This includes the most important aspect, the user experience.
Let’s say you have a team that should build and run some kind of web service that is presented to users both as a web page and an app that exists in the app stores.
One of the questions is how much specialization there should be within the team. Does every member of the team work on everything? Do you have specialization? Lets for this post limit the discussion to developers in the team. Most teams will need specialized roles for designers, testers, project owners, stakeholders, etc but that is outside of the scope of this post.
From my experience there are 2 major ways I have seen this organization happen naturally:
Fullstack or Frontend / backend separation. If having the choice, what way is best for your team?
Fullstack does not preclude having a UX designer involved, that does the design in design tools, but the designer doesn’t do the actual implementations. And in my experience the actual implementation of a design is very significant for the end result.
A single developer or developers that have high bandwidth communication can work very efficiently on a single feature and deliver it into production with a minimum of coordination and communication. This can be a great advantage if time to market is the most important thing for example.
As a developer dealing with integrations against internal systems it is unavoidable that you take a perspective of how the internal legacy systems at a business works. This will likely impact user experience.
It is hard to find developers that are good in both frontend and backend. Some developers with lots of backend experience might overstate their frontend skills, and vice versa. In a worst case this could result in a very bad user experience.
This comes from the fact that you will know all the internal complexities. It will leak into the user interface, and also developers will be tempted to cut corners and implement a user interface for the legacy system(s).
Frontend & backend separation
You have some developers that are doing frontend only, that is the HTML/JS/CSS or implement the iOS/Android app code.
Then you have the backend developers that do the “web-back end” that is code that is running server-side in the public cloud or datacenter, and provides the web facing APIs
Each group within the team owns the technical architecture and evolution of their respective part.
Frontend developers won’t know so much about internal systems and what functionalities or apis they provide. They will instead be able to think clearly from users perspective in every case.
Frontend developers can fully focus on growing skills with web frameworks and new and evolving frontend technologies and app native apis. Same thing for backend developers, they can fully focus on building maintainable and operationally stable backend API:s.
It is less efficient to deliver new functionality into users hands. More coordination is needed to make the solution work within the businesses constraints and current capabilities, and at the same time implement the user experience that is optimal.
Some developers will find this way of working less satisfying if they are interested in both frontend and backend technologies.
In my experience, if you prioritise user experience the highest, like in the case if you implement a B2C solution, frontend / backend separation is best.
If User experience is not of the highest importance, or if your target market is “power users” that to some degree know the internal workings of the business. This is more common in B2B scenarios. Fullstack might be best for your team.