Congrats! You’re hired. Welcome to the team!
Thanks! So am I part of the Developers’ team now?
Yes you are.
Great! What is our first task?
Your first task is to develop a new feature.
Wait a minute. Did you say ‘My task’?
Yes.
But aren’t we supposed to be a team?
We are not supposed to be a team: we are indeed a team.
Then why is it “my task” instead of being “our task”?
Because the rest of the team have other tasks to do.
If we are a team, how come we don’t share one task until it’s finished and then we move on to another task as a team?
Because it’s more effective to work this way.
Really?
Having one task for each person, we don’t end up with any person being idle.
Oh, I see… Do you consider football a team work?
Certainly!
You do know that in football there is only one ball, don’t you?
Of course!
And do we agree that if there is only one ball, only one person can have the ball’s control at a given time, don’t we?
Yes, I guess so.
Do you consider, then, the rest of the players are idle while only one person has the ball’s control?
Not at all!
Then why do you think that the developers would be idle if they worked as a team instead of working as isolated individuals?
I see where you’re going. And you know what? I never liked soccer in the first place: I always thought that sport was bad designed: there should be 22 balls, one for each player.
I think I got the perfect motto for our team: one for you, and all for you!
That does it: you’re fired!
Yeah, I know I’m hired, why are you repeating it?
You were hired, with an H, and now you’re fired with an F !!
Ohhh, I’ll miss being part of this wonderful team…
Of course, this hilarious dialogue is fiction, and it has been stereotyped and exaggerated in order to zoom in one of the many cliches that populate company’s jargon: we are continuously hearing phrases that, in one way or another, surround the concept of “the importance of working as a team”. But, is programming really a team work or more of an individual job? Is it all this teamwork talk important, or is it just propaganda, politic correction that doesn’t define reality on a daily basis? Is being autonomous (self-sufficient) the opposite of being a team-person? Does being a team-oriented person makes you a dependent and weak professional? Is it possible to reach a point in which both skills -team-orientation and autonomy- can merge together, complementing each other, thus adding up more real value to the team?
Like almost everything else, I guess it depends.
We are bombed in the media with the successes of sports teams -sailing, basketball, football, etc.- and it’s very tempting to draw up a quick analogy between those feats and the successes that a software development team could achieve if they behaved likewise. But is that really possible? Does software development lend itself to such a strategy of action similar to those team strategies and coordination applied on sports?
Some people think that a software development team is more often than not a different animal. But is it? Or is it just that we’ve accepted as the usual norm a paradigm in which we, as programmers, are treated as individual resources that must tackle individual tasks, in a one-to-one relationship between developer/task, so to speak? Where are the boundaries? Where does the team work begin and where does the individual work start? Is being part of a team just a question of being coordinated with the rest of the team? Is it possible to reframe that paradigm, pairing and grouping more often, so that the accomplishments and growth of a team are real and not only tasks developed by individuals in isolation that just happen to belong nominally to the same team?
It just came to my mind the image of a police patrol: they always work, at least, in pairs, don’t they. Probably for security reasons. Wouldn’t it be equally wise to apply that same principle in software development? Why does pair programming still feel like such an exceptional and even exotic thing to do?
Agile to the rescue
All these thoughts occured to me one day, walking my dogs in the country. We were going through these beautiful fields of sunflowers when I saw this gorgeous sunflower that stood out from the rest. For some reason I immediately thought: wow, that’s what a team should be like!
This is one of the cases in which an image is worth a million words. So there you are: the Agile Sunflower!