How To Scale A Development Team
adam.heroku.com
adam.heroku.com
One thing I'd do different is the breaking into teams part. My reading of the authors post is to split the team on architectural lines, and place team members based on their technical interest.
I've generally found that you get the best results by breaking into teams based on who likes working with who, and on products / sets of customer-facing features.
When you look at a 10-15 person team you'll usually see some natural breaks where some folk get on better within certain subgroups. I've found that breaking down based on social groups rather than technical knowledge leads to a much better initial fit.
I'd also tend to avoid breaking down on technical architecture - because I live in fear of an anti-pattern I've seen many times where developers get out of touch with how their work affects the end-user.
If at all possible I prefer to break-down into teams based on slices of end-to-end functionality. So you end up with teams responsible for Product A and Product B, or CustomerFeatureSetA and CustomerFeatureSetB rather than "database layer" or "scaling infrastructure".
Personal I'm happy to trade of more communication between teams (because team A and team B will often both need to build infrastructure C) to get everybody focussed on delivering features that customers use.
(I also have to admit that I'm confused by saying Scrum is a heavy-handed process.... There are things I don't like about Scrum, but it's one of the most light-weight frameworks out there.)
I'm also surprised the teams end up so small. Not that there's anything bad in that - I'm just surprised. I worked with teams of 6-9 folk where people avoid stepping on toes so I'd be interesting in finding out the pressures that made pairs/triples work so well for them.
I'm wondering how the teams work together physically. Are folk co-located? Team per-office? All teams in one room? Something else? Looking forward to the "cohesion and strategy" followup :)
At that point, you're probably better of splitting into even smaller, more self-directed teams.
I've also worked with larger teams (4-12) that are not committee-like and are very self-organised and self-directed. So I don't think it's inevitable. I'm interested in teasing out the reasons some teams go one way and some another.
Bigger than 12 or so - then the committee-like stuff seems to become more unavoidable.
(Just read this rather interesting bit on how the process at TargetProcess http://www.targetprocess.com/articles/agile50months/ evolved. They have a mini-team per-epic - which sounds a bit like the best of both worlds to me)
If you mean that they've all got to mutually agree on some working practices that are going to enable them to work together effectively - then yes. If you mean have the same outlook or skill set - then it certainly doesn't seem to be true in my experience :-)
In fact, I'd say the opposite is true if anything. If everybody has the same outlook and skill set the group tends to more rapidly moves into a committee like non-self directive setup from what I've seen. I'm guessing that's because they don't have to come up with techniques for handling dissenting opinion as much.
I've now worked in a couple startups that raised enough money to hire for Stage 2 or 3 before they launched an MVP. In fact, raising early actually put more pressure to hire since Stage 3 looks better for investors.
This brought too much process and too many specialists early on. The early designs became too ambitious, the products became too complicated, and the launch dates ended up way later than they should have been. Ultimately, it all led to the market fit being really hard to find and a lot of the early stage team members leaving.
Really, an amazing company.
I disagree that the article is long: we need more well-thought in-depth analysis and commentary.
They just keep improving so much. Their new pricing, plus all the options now available.. Its just one of things that make sense to use.