Thoughts on team management

I am currently in a software development team that works very differently to other teams that I have been on. This has allowed us to successfully deliver project after project in a timely and efficient manner whilst only being together for a year.

We’ve been able to achieve this after receiving blessings from the Hindu God Ganesha … err actually no. It mostly comes down to how our team is managed, or not managed as it’ll become clear. Using a silly analogy, my high street grinds to a halt every morning due to traffic, the only mornings it has been free flowing is when the traffic lights stop working. There’s nothing to stop the cars so no queues build up. Yes its a dangerous scenario and you hope that most drivers that morning are competent and alert. Management gives order and control to how projects progress but over-management can slow things down.

When you have competent and skillful ‘drivers’ in your team, minimal red tape can really let them flow. There is no real hierarchy in our team of 7, everyone is a team lead and everyone is experienced enough to be trusted. And let me be clear, we don’t have people in the team that don’t exist elsewhere. We all got hired because the company thought we were competent engineers, so they proved it by putting their trust in us. Our manager is the person that understands the business inside out and is in charge for giving and discussing the business requirements. We tackle business problems in small chunks and how we solve those problems is left up to us, the engineers. Whether we write a framework or a dirty script, whether we write tests or not, whether we write the solution in Ruby or Clojure, whether we pair on the problem or whether we re-write solutions from the ground up is our call.

We don’t bank on any golden hammer to solve problems, we’ve used Ruby, JRuby, Clojure, Java, MapReduce using Hadoop, Hive and others I’m probably forgetting, to solve problems in the most appropriate way. It keeps things exciting and interesting, and the whole company is now reaping the benefits of all the work. But none of this would have happened if we were not allowed to explore and do what we thought was best in stead of having old plans, procedures, approved technologies, etc in place to chain down the creative minds of the people that work here.

Some other IT teams in my company still have traditional structures because not all scenarios will fit the working styles my team employs. And this post is in no way suggesting that management is a bad thing, in fact good management is essential to the success of any team, including ours. Good management also involves knowing when you’re getting in the way and when to have faith in the people you hired. From experience I can say working in rigid or a tightly controlled environment makes for a mundane and less fun place to work, and the best employees will look to avoid just those places.

So far it’s been all well and good the way we are working and i’m sure problems will surface in the months/years to come resulting from the way we do things because I know life isn’t that nice (f**k you life). But I’m not sure if they will be big enough to out-weigh the benefits it has to the business. Oh and by the way my company has roughly 200 employees so it’s not a multi-national yet, and what I’ve just said is probably a unrealistic idea in a multi-national (or is it?) but anyway that’s my two cents.

Tags: management