What is your opinion about full-stack teams? I’m referring to teams where the desire is for every member to competently contribute at every point in the stack.
- Do they work?
- What has been your experience?
- Does team size and/or experience level inform your opinion?
- Do you notice an increase/decrease in quality?
- Do you notice an increase/decrease in team and product cohesion?
We recently started a project full-stack in Rust, with the web frontend compiled to WASM. So far, I have a much better feeling in this regard than with previous projects, which were using TypeScript in the frontend and JVM languages in the backend.
For one, the frontend technology stack is obviously more similar to the backend. You still need an idea of HTML, CSS and general UI paradigms, but you can skip the knowledge of the massive JavaScript ecosystem, which is where in the past, we usually felt like we had to pull in someone dedicated to frontend.
And we have a compile-time-shared model between frontend and backend, so not only does that prevent the two from drifting apart, you’re also forced to fix something on the other side more often, which helps to keep devs in the loop across the whole code-base.
Generally, I feel like you’ll always need technology specialists for architectural decisions. And I feel like projects naturally trend towards having people with more expertise in certain areas of the project.
But I also think, it’s very healthy when everyone has some level of confidence tweaking parts all over the codebase, at least for those that are adjacent to their area of expertise. If you have people that exclusively know ‘their’ side, that completely kills any overarching architecture decisions.