the blog for developers

Development Dream Teams

Over the years I’ve build some teams. The size and composition most often was determined by the company I was working for. This meant the team was developer only, at least some teams were cross-functional. I wished to have the freedom to create an optimal development team, a dream team.

In modern teams everyone should be able to do everything – this avoids bottlenecks or single point of failures and distributes the burden of some tasks. But there are limits. Skills are not easily found combined in one person:

  • Test Know How
  • UX/Design CSS
  • Programming
  • Product Development / Management

So a cross functional team needs to include:

  1. Product manager / PO for product development, wire frames, business analyist, business cases
  2. UX/HTML designer for usabilty, design and hardcore CSS problems, developers can’t solve
  3. 5-7 Developers for programming, backend, frontend, CSS/HTML, development, unit testing
  4. QA/tester: works with PM to determine acceptance tests, writes automatic acceptance tests, exploratory testing, helps developers with their tests, keeps the testing focus
  5. Optional, but helpful: Operations guy for the sub system. This role can be temporary

dreamteam Development Dream Teams

Why strive for a cross functional team? When a team is not cross functional, there is a lot of communcation overhead and lots of filled queues. With no product manager as part of the team, there are vertical silos and handoffs. Repsonsibility is split and in the case of trouble, finger-pointing starts.

And Jon Moore blogs in “Scrum thoughts: cross-functional teams”:

As a developer, this was great. We had instant access to team members from the other disciplines, able to brainstorm about how a feature should work and getting questions answered quickly. There was a very real team vibe, very exciting. [...] The six weeks that we operated like this were really fun!

With cross functional teams, communication is easier, missunderstandings seldom. Colocation is a must and leads to much higher productivity. With one team there is only one responsibility. The team is tasked with a user story and the whole team is responsible for delivery.

Scrum strives for cross functional teams, the biggest hurdle for Scrum Masters on that road are political struggles and thinking in kingdoms.In Scrum, product owners (PO) and developers are considered one team, which is often not colocated. They belong to different departments with different goals. Therefor a ScrumMaster constantly needs to tell them they are one team. One real team makes Scrum easier and more successful. Companies should organize teams not at department boundaries, but value streams.

Team size

Team size is another paramter. From my experience, the team should be smaller than 10 people, team communication and managment gets more difficult when you approach the threshold of 10 people. Pete Abilla writes about the size of the famous 2-Pizza Teams at Amazon:

[...] Amazon’s 2-Pizza Team, which is defined as the following: a team where the team size is no larger than 2 pizzas can feed. Amazon realized early on that in order to cut software development time, the solution was *NOT* to put more people on the project.

The number of developers matters most, as it influences the number of the other team players. If the number is small, there might not be a good ratio to testers, designers and product managers. If the number of developers is larger, this is better, because it creates more throughput according to queuing theory. More throughput means shorter cycle time. Too many developers on the other hand lead to communication overhead and get ineffective says Jens:

Intra-project communication becomes more and more challenging with increasing team sizes. When team size increase so does the number of different communication channels. Every team member can communicate with every other team member. Mathematically it looks like this:
number of communication channels = n(n-1)/2, n=team size

While Jeff Sutherland goes farther and generally attributes lower productivity to large team sizes:

There is plenty of data to show that team sizes over 7 result in significantly lower productivity. Any team over 7 in size should be split up into multiple SCRUMs.

Conclusion

My dream team is a cross functional, cross department development team with less than 10 people. What would be your dream team?

You can leave a Reply here. Of course, you should follow me on twitter here.

You can share this post!
Do you want to tell others about this article? Use the social bookmark icons to submit this artice to the service of your choice. Thanks.

About the author: Stephan Schmidt is head of development at brands4friends. He has more than 15 years of internet technology experience and 10 years experience in agile. He was head of development, consultant and CTO and is a speaker, author and blog writer. He specializes in organizing and optimizing software development helping companies by increasing productivity with lean software development and agile methodologies. Want to know more? All views are only his own.

1 Comment 20 Tweets 3 Comments 1 Other Comment

Leave a reply.

Comments

I would go as far as to say that the “Operations guy” role is mandatory rather than optional. In my current project we started out without one and has been suffering since.

If you have someone in your team who can take on all the tasks that inevitably surface around test environments you’ll save a lot of time for the rest of the team. Let the developers worry about developing features and killing bugs, and have operations support them.

Good post by the way.

stephan

@Hans-Eric: I guess it depends on the stories you develop. If you change the configruation, add services, add new servers, add load etc. it is mandatory to haven an operations guy in the team.

“If you have someone in your team who can take on all the tasks that inevitably surface around test environments you’ll save a lot of time for the rest of the team.”

You’re right, I’d like to have on too. From my experiences, sprints with direct involvement from operations went smoother.

“Good post by the way.”

Thanks.

James

I would want the Product Manager / PO to be very clued up both on the business side and the technical side.

Also, there’s little point having a dream development team unless you have a dream marketing / sales team (or is that a given.. :)

Lastly one other important aspect is the support of the finished product with customers. IMO, they also need to be alongside the development team, they need to have intimate understanding of how the product works, be excellent at writing documentation and so on.

I like your team, but would make the scope wider to ensure there was a dream team for everything…

I’d like to iterate that it’s a very good idea of keeping the developer team size small (5-7 people max).

In a small team environment every developer is a person, rather than just another engineering unit, and has a good take on the entire project.

The tradeoff is it becomes more difficult to replace that person, but the benefit is in your project actually having a chance of working out the way it should.

It’s almost never true that throwing more developers on a given project produces better results. Given the proper environment, and people, a small team size of 5-7 developers can do better than a team of 100.

All very true!

Unfortunately most projects I have been involved lately are very far away from those insights …

The worst thing I have seen recently are development teams that do at least 50% of their time 3rd level support / maintenance of the system in production.
In this case I think it is impossible become productive. And it is impossible to do something like Scrum with short iterations, because any dev can just be absorbed with a “production-ticket” at any time …

Have you also come across situations like that? How can you address this problem, so that teams can become productive again?

Stephan, I really appreciate your ability to take a complicated matter and explain it in a down-to-earth manner.

Like you, I think that the magic number is around 8-9. I think one of the factors in getting to this limit is the ability to effectively break a story (or whatever the team’s unit of work is) to developer-oriented tasks. Too many developers – the PO, Designer & Tester will be overworked. Too few developers – these guys will feel underemployed. A really delicate balance.

The exact number is influenced by a combination of many factors so getting it requires some trail-and-error.

Also, it all resonates with some of the ideas of Brooks (Mythical Man-Month). He used the “surgical team” metaphor to explain his view on cross-functional teams. He also had nice insights about team size, communication boundaries, etc. (“adding people to a late project makes it later!”)

stephan

@Itay: Thanks.

I’ve read Brooks several times (some years ago) and hold it in high regard, so it’s very probable that my ideas mix with thos of mythical Man-Month.

Hi Stephan,

nice post. There is one role I am missing from your description. What about the Scrummaster? There is literature that suggests he should be part of a cross functional team. I tend to concur. In my experience a Scrummaster can only “feel” the problems of a team if he is at least colocated if not even working on some tasks of the team.

What do you think?

Joerg

stephan

@Joerg: I wouldn’t consider the ScrumMaster as part of the team, more like a referee. But I do agree, the ScrumMaster should be colocated, as I always was. Even when offered my own office, I did stay with the team because “can only “feel” the problems of a team if he is at least colocated”

I have to agree with Stephan on this, I’ve tried the role of SM and coding at the same time and it got a bit difficult to handle, not impossible though but not ideal at all.

For me the role of the SM is to enable the team to be the greatest team ever, irrespective of the project/tasks they’re working on while the role of the team is to deliver the greatest product ever. Different roles, different focus; one is team focused, the other delivery focused. Sort of like pair programming in XP, one pair of eyes on the big picture, one pair on the finer details.

Plus, also remember that in essence your SM should be busy 150% of the time dealing with impediments and, well, anything that could make the team (and the company for that matter) perform better. If they’re busy on tasks for the deliverable, they’re bound to lose focus and inevitably become an impediment themselves!

Stephan,

I think that while the ideas of Brooks are in principle correct, their expression in the book is somewhat arcane. Some of the skills that were highly important at the 70s (e.g.: documentation) are much less needed in a modern team, and vice-versa.

Thus, your post is fulfilling the very important role of “translating” Brooks to our times.

Thanks.

you need someone extremely creative, not just technical. creativity will solve the impossible problems in ways never imagined. You also need an insanely great tester. one awesome tester is worth 20 average ones easily.

Joe

Your a jackass. Probably a consultant who loves to bill clients for work that a team of 1-3 developers can do with one being a client relationship person.

My last 5 man team assignment where I was billed at $125/hr as part of a 5 man team I did 8 hours of real work but had to bill for 40 hr a week for 4 weeks. In total each individual did about 8 hours of work as it passed trough the timeline. The client still got billed about (125*5*40*4) $100,000.

Don’t give me that “maybe it your project shit”. I have 20 years of experience and have seen it all. There are too many specialist and managers on software development these days.

I have been on those team you describe. It is overcapacity. But I have seen worst with 4 project managers who I cannot describe/define what they are for/do because when it came time for sub task to be completed (i.e. the initial data load, etc.), it was late because nobody was responsible for handling that sub-task. In the end they got a developer to do it at the last minute at a 4 week delay until completion. I still don’t know what those 4 project managers did.

stephan

@Joe: Hu?

“Your a jackass. Probably a consultant who loves to bill clients for work that a team of 1-3 developers can do with one being a client relationship person.”

Or you could read:

http://codemonkeyism.com/about/

Cheers
Stephan

Two pizza, eh? That’ll cut down on late teens and their black-hole-for-a-stomach hungers, unless they are very, very good. :-)

Isaac

Nice one.

Stephan, the 2-Pizza Teams at Amazon’s link doesn’t work. It has a single line break on it!

See you!

stephan

@Isaac: Thanks. Fixed.

Phatthana

Nice article Stephan. Eric Evans told me once that teams should have the size of an eight-oared – if not it gets out of
sync. But these kinda teams: more desire than reality. Of course everyone wants to
work in a team with experienced developers with generalizing specialists, insanely good testers, domain experts, scrummasters who know their job and good product-managers who are capable managing the backlog.
From my experiences many teams are not real teams but rather project groups with micromanaging and no real collaboration.
Building real D/B/T-Teams (http://www.agile2009.com/files/session_pdfs/Scaling%20Software%20Agility%20Overview%20Agile%202009.pdf)
is hard shit and requires a lot of organizational/environmental changes. Most of the companies i’ve worked for didn’t have
such an environment and/or people. That’s the sad truth.

Cheers,
Phatthana

Thanks for posting this, helps me solidify some of my own ideas on team composition.

One thing I’m curious though is the 5-7 developers and the (I think?) only 1 QA person. Is that the ratio you meant? Can you explain a little more on your reasoning behind this? Thanks!

@abby: Yes 5-7 developers per QA is something which worked in the past. Or 2 QA per 10 developers. Not really sure about the ratio though. One would need a working Kanban process to see bottlenecks and overcapacity due to a wrong dev / QA ratio.

What would you suggest from your experience? I’m highly interested in this (and in the PM / dev ratio :-)

[...] this matter on and off for a while, but what brought it to my full attention was this article on Dream Development Teams. In it the author talks about an ‘Operations Guy’. An operations guy would be [...]

Leave a Reply

What people wrote somewhere else:

Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

RT @codemonkeyism Development Dream Teams http://bit.ly/148WE1

This comment was originally posted on Twitter

Development Dream Teams. Photo by Budslife “busy” Over the years I’ve build some teams. The size and composition mo http://bit.ly/QKD0y

This comment was originally posted on Twitter

RT @codemonkeyism Development Dream Teams | Code Monkeyism http://bit.ly/148WE1

This comment was originally posted on Twitter

RT @codemonkeyism: Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum you know it makes sense

This comment was originally posted on Twitter

RT @codemonkeyism Development Dream Teams | Code Monkeyism http://bit.ly/148WE1

This comment was originally posted on Twitter

RT @codemonkeyism:Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

RT @codemonkeyism Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

RT @jbandi RT @codemonkeyism:Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

RT @jbandi: RT @codemonkeyism:Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

Development Dream Teams: http://bit.ly/MBnvn Prod Mgr, UX, 5-7 Devs, QA/Tester, Operational…. no Project Managers? :P hehe

This comment was originally posted on Twitter

@codemonkeyism Published blog post about “Development Dream Teams” http://bit.ly/2ecKff #agile #scrum

This comment was originally posted on Twitter

Development dream teams? http://bit.ly/XSlQJ

This comment was originally posted on Twitter

Discussing, is the ScrumMaster part of the team? http://bit.ly/2ecKff #scrum #agile #CSM

This comment was originally posted on Twitter

RT @codemonkeyism: Discussing, is the ScrumMaster part of the team? http://bit.ly/2ecKff #scrum #agile #CSM – OF COURSE!

This comment was originally posted on Twitter

Discussing, is the ScrumMaster part of the team? http://bit.ly/2ecKff #scrum #agile #CSM (via @codemonkeyism) … ahhh… I wish…

This comment was originally posted on Twitter

RT @codemonkeyism: Discussing, is the ScrumMaster part of the team? http://bit.ly/2ecKff #scrum #agile // of course, we can code too :P

This comment was originally posted on Twitter

RT @codemonkeyism Development Dream Teams http://bit.ly/148WE1 “In modern teams everyone should be able to do everything”

This comment was originally posted on Twitter

Development Dream Teams http://bit.ly/QKD0y

This comment was originally posted on Twitter

RT: @nihed: Development Dream Teams http://bit.ly/QKD0y

This comment was originally posted on Twitter

Additional comments powered by BackType