American Football specialists is to Soccer generalists as Engineering specialists are to Developer generalists
Last week I was thinking about the comparison of cycling vs. running
and how the decision related to technology (in that case: CoffeeScript
Those thoughts revolved around the choice of actions, platforms, and
approach. This reminded me of another topic of conversation that has
been doing the rounds recently.
A couple of startup friends have been asking me about whether they
should be hiring generalists or specialists. E.g. Backend guys and
client UI guys. And then you get the niches of “big data guys” and
“iOS guys who know CoreAnimation up the wazoo!”
This comes up a lot at larger companies too. In my world I run
engineering as part of a global team, so beyond creating amazing
products, we are looking to get leverage (I know, I hate the term
too!) as we scale out.
One way to do this is to create a “services team” that is in charge of
the platform and services that sit on top. Then you have client teams
(in our mobile world, iOS, Android, and mWeb folks) that talk to the
services guys. This means that the API contract is key. It is the
place where the world meet. To do this right involves:
- Working closely together on this contract
- Having great test suites that both sides can write too. To be able
to work in parallel there needs to be a mock tier that the client can
hit, and the services guys need to be implementing a real solution
that results in more and more tests passing. If this isn’t rock solid
then you are in for a world of hurt.
I have seen this model go wrong more than I have seen it be
successful. The culprits of disaster have been:
Misalignment of the teams
The teams aren’t on a shared mission to product an experience with a
set of outcomes. Instead they are working to implement some features,
and are in the weeds in their world so just want to “get it done”.
Rather than making a call to do something right for the end user, they
want to “finish” their piece.
Often the client and services worlds don’t have good touch points. It
is very common for the services guys to move off to something else
before the product is finished which leads to changes not being made.
One team; One Mission
If you structure the team around the mission with generalists who can
back on the Android app in one sprint but then jump into the backend
the next, you make sure that everyone has a lot to do and people feel
empowered. There is no “waiting for those guys”.
When I think about sports, I find it interesting to see how different
sports evolved different solutions. American Football is the ultimate
extreme. You not only have different players for offense and defense,
but you have amazing specialists (e.g. A kicker). The context of how
the game works allows for this of course. It is a game of “plays”
where new teams sub on and off at will.
If you look at something like soccer (football 😉 then you have
players that need to be more generalists. Sure there are wingers and
attackers and central defenders and goalies, but everyone has to
attack an defend. In fact, the Dutch team famously came up with the
notion of total offense and defense and changed the way the game was
played (to great affect).
Even in American Football you see hybrids who can change the game by having special skills. E.g. Deon Saunders on special teams and
defense, or the new quarter backs who can run. Michael Vick and the
new San Francisco 49ers quarterback open up new options not just
because they can run so well, but because now the defense needs to
account for that.
This all leads me to believe that:
- What is special about what you are building? What specialists do you really benefit from?
- You should be mindful of the players that you have and how you are
using their skills
- Know they any “other” skills can change the game, so use them
- Hybrid players can give you a massive boost in flexibility (including:
if a team member gets sick / leaves…. you have built in backup)
- Having people who have “done this before” and bring experience to the table is incredibly valuable
- Having people who have “never done this before” and have other
experience is also incredibly valuable!
- Making sure the entire team is aligned on one set of measured outcomes is what matters more than the structure
Have you mapped out your team like a coach would in sport? Mapped it
to strategy? Thought about how “injuries” would change things?
Maybe now is the time.