My fascination for fish tanks at one point in my life is well known to all who know me. When I owned the fish tank I spent hours reading the big fat fish encyclopedia and other fish-tank-management (my term :)) books. My objective: To create a self sustaining tank that I would never have to clean or maintain.
“Why can’t this darn thing turn into an eco-system of itself?” - I often wondered. I read about how the eco-system in a real river works and figured that a Fish tank had everything it needs to turn into a self-sustaining eco-system by itself after I had read something in those lines. The fishes could eat the plants, the plants could use what the fishes leave behind, as manure – you know – the whole tiny replica of a real life fresh water eco-system.
I was actually starting to think about simulating the whole running water thing the way it happens in real rivers... I was obsessed; not with actually maintaining the tank but in making sure that I would never have to maintain it! :)
Memories came back to life years later today as an engineer during an interview mentioned this as one of his long term goals:
“I want to manage my own team”.
After some discussion and playing with words (I do this with people I'm friendly with) he was a little confused about what he wanted. Here’s what he was basically saying:
- I want a team. My team! And I want to manage them.
- I don’t believe in hierarchies! It'll be an open friendly team... It’ll be my team with no hierarchies.
Here’s what I was hearing:
- Let’s have just 1 level of hierarchy. I’ll be the one who manages everyone else and everyone else can be my junior.
- I hate hierarchies. :)
I was just kidding! Seriously, this guy is awesome and I was just pulling his leg. He knows it!
But for now, I think I’ll stop playing with words and get back to fish-tanks and software... and my obsession with both of them, which is what I'm comfortable talking about.
At age 12 what I was trying to do with my fish-tank, was this - I was trying to develop an eco-system that I would not have to manage. I soon realized that this was very difficult to achieve with a fish-tank. Doing the same thing with product / software development team is relatively easier. Here’s why:
- Fishes by their very design aren’t as intelligent as software developers.
- Fishes suck at communication. They don’t even speak the same language we do.
- Fishes can’t ask for help when they are failing (or when the tank beings to suck), fishes can’t shout, yell... ok, I think you get the idea. :)
Coming back to the point, jokes apart, I don’t feel that a software team that needs to be managed can survive in the long run. A team that automatically forms a self sustaining, self managing unit, much like that eco-system in the fish-tank, has much higher chance of success.
At work, I've seen multiple teams of three to ten really awesome developers do just that and complete projects successfully without ever feeling the need of being "managed' by someone. I feel privileged to have worked with some of those teams. During the project, we would move in as a team, where everyone had his set of specialization and knew what each one of us would do. We were all think-skinned developers who would shout if we had a problem.
This brings me back to the more important question - "Can you even Manage smart people?" - In a smart, self sustaining, self managing team, a manager is just like a servant of the rest of the team! When needed, he moves in, cleans up the mess and move out. It just involves ensuring that everyone has everything they need to function so they are on one single track. Doesn't sound very glamorous when I put it that way, does it?
Mature methodologies like Scrum don't even refer to them as managers. Mature organizations like Yahoo have a better name for them - they call them the single wringable neck. :) - Ken Schwaber remarks:
The Product Owner job is incredibly difficult. Almost all people fulfilling the Product Owner role are surprised by how much work it is. Historically, Product Owners were questioned by the development organizations about their requirements...They are responsible for elucidating these requirements as needed, decomposing these requirements on an ongoing basis, changing them to optimize return on investment, and even meeting with development teams frequently to tell them what is needed and to review what they have done. The Product Owner has gone from someone who could blame development if a project failed to someone who is responsible for the success or failure of the project. At Yahoo, this person is called the “single wringable neck.”
Managing a team is not as glamorous as a lot of young engineers make it sound; The trick (much like managing a fish-tank) is developing a team that doesn't have to be managed! And by the way, while we're at it - may I also suggest we change the term "My Team" to "The Project Team"? :) And yes, if you are a young developer who really wants to manage the life cycle of a product; I definitely wish you luck and success in due course of time.