I’m an idealist who loves to daydream. For example – what would I do if I were a manager? I work as a “lead software architect”, a fancy title that means I’m still just a developer. (Which has its pros and cons.) Here’s the entirely theoretical lessons I learned from watching others manage, and reading pieces on leadership on the Internet:
First I’d assume that our team is a group of hard-working, intelligent, rational, professional, self-managing grown-ups who do their own independent thinking and are happy to take responsibility. We all want to do a great job and want the company and our colleagues to be great, too. Each of us has unique strengths, sees things that others overlook, and has an opinion that matters as much as everyone else’s. The team organizes itself, everyone takes on the next thing that’s important to work on.
In this environment, management mostly means helping to remove impediments which the team finds keep them from being productive. Interactions with other parties (other departments, customers) need to be scheduled and organized. Information must flow freely and tools work smoothly. The team needs help setting up spaces to review, reflect, encourage and criticize each other’s work. An occasional conflict needs mediation. Decisions have to be made in time (often by the team, but someone’s got to drive the decision making process).
I’d make almost all company information transparent, make sure that everyone has an up-to-date overview of the company financials and the work everyone’s currently doing. And of the work that lies ahead: all the features and deadlines we promised to our customers and partners. Sales people would be asked to bring photos and reports from their visits to potential clients. Developers would, where possible, publish screencasts of their work. We’d tell each other more stories of our day-to-day work, and help everyone see the big picture. This, I’m convinced, would make us grow together, increase motivation, uncover hidden problems and improve our decision making.
And we’d obsess over what is delivered, not over processes and rules. I’d try to spark a passion for the customer, to get everyone closer to the customer, closer to the problem. Make it our own problem, either because we’re using the thing ourselves or because we’re personally being held responsible by a customer. Ain’t it funny how priorities change when a developer visits a customer and brings back a list of things to do, knowing he’ll have to return in two weeks and report on the progress?
Other essentials: Be honest, admit your own faults freely but don’t point others’ out. Be understanding and forgiving and kind. Help others to focus and learn and grow. Find the right combination of pragmatic, elegant simplicity and quality/excellence – we’ll need both for our products to survive.
Let’s hope that I’ll never become a manager… I sure wouldn’t be able to live up to these ideals! (Hey, maybe the leader position can rotate between team members?)