. Team Lead (Ears & Mouth) β the single point of entry for the business, responsible for delivery timelines, the technical backlog, and team health, creating conditions for Senior and Middle developers to work.
. Senior (Brain) β responsible for the quality and operability of the entire system, which means: making technical decisions, having veto power, putting out fires, and creating technical conditions for Middle developers to work.
. Middle (Hands) β responsible for the operability of the code they write: agreeing on decisions with the Senior, developing features, and verifying that they work.
Notes
. I've named them "Team Lead," "Senior," and "Middle" because there are no better words (besides those in parentheses). In reality, a "Middle" role can be filled by someone at a Senior level, or even a Junior.
. These are ROLES, meaning one person can embody multiple roles.
. However, there should be a maximum of one Team Lead and one Senior. There can be many Middle developers, but ideally no more than ten.
. A Team Lead may not have technical skills (I call such people PMs, but this does not absolve them of the responsibilities described above).
. I have intentionally excluded QA, DevOps, CTO, Architect, etc., because these roles can either reuse the above descriptions or are more exaggerated versions (e.g., a CTO is a Team Lead who is also responsible for payroll).
Why this specific team structure
. Decisions only become (in)correct after you implement them, so someone must simply take responsibility for choosing a path and waiting for the result. If multiple people try to approve such a decision, they will encounter significant problems. Therefore, there should only be one captain (Senior).
. Communication with the business is a pain. It can be incredibly extensive, both incoming and outgoing for the team. At the same time, the business often doesn't know how to communicate with developers, and vice versa, so it's best not to let them interact constantly. They can be introduced and work together for a period (feature development), but all communication and responsibility should be in one pair of hands (Team Lead).
. Seniors complement Middles, and Middles complement Seniors: Middles can gain all the necessary knowledge, while Seniors can realize themselves as "senseis" and learn themselves by structuring their knowledge while transferring it to Middle developers. This Ouroboros allows both of them to grow and enjoy it.
Two Senior developers might (initially, get into a fight, but I mentioned this above, so in this situation) ask each other too few questions (due to shyness, for example) and develop some incredible nonsense simply because they didn't dare to discuss it beforehand (this is generally about maturity, but that's a separate topic).
How to create such a team
β Openly and clearly state who is taking on which role, and ensure that Seniors explicitly transfer decision-making rights on business matters to the Team Lead, and Middles explicitly transfer rights for technical decisions to the Senior.
β Establish good, open, and constant communication between all these links.
β Give Seniors the opportunity to make technical decisions and hire people accordingly.
What are the dangers
β If the Team Lead has poorly developed soft skills and lacks the "steel balls" to say "no" to both developers and the business, everyone will burn out, the business will suffer, and turnover will begin.
β If a bad Senior is chosen, they will lead the entire team to ruin. At the same time, if a Senior is not given the right to make risky decisions, even a good Senior will be unable to do anything.
β If Seniors are not willing to listen to Middles, or Middles are not willing to agree with the Senior's final decisions, the scheme will not work. Therefore, it is the Senior who should assemble the team.