A team of engineers (software in this case) needs to be lead. Leadership can involve:
- Architect - Leads "design in the large" issues, such as what components to use
- Lead engineer - A peer leader, writes code while leading the team
- Project manager - Goal is to increase everyone else's productivity; focuses on who's doing what, bottlenecks, tasks, schedule, expectations
- Product owner - The voice of the customer, the market, the product
All of those roles contribute a lot. But, for a team of say 6 engineers, 4 leaders doesn't really make sense. And splitting leaders among multiple projects doesn't work well either.
So, given that a team is big enough to need leadership, how do you do it?
UPDATE: In response to the requests for clarification:
This is a small, growing company, with only 1 engineering team. It's not large enough for a matrix organization. Until now, it's been only 2 (later 3) engineers, who are also the business managers, owners, entrepreneurs, etc. Now that it's moving to a engineering team distinct from business management and ownership, it's clear that the team needs leadership. The question is as much about hiring (what type of role should we hire for) as it is about structure (how should authority and responsibility be structured).
In other places, I've seen teams where everyone was supposed to have these roles, which meant that no one had them. There a plenty of competent engineers which can carry out tasks, but can't architect, or manage a project, or understand the customer's needs. So there's a real need to make sure these roles are filled.