SAN FRANCISCO -- One of the best attended sessions at Google's developer conference here this week -- judging by the crowds standing in the hallway waiting for the doors to open and the number of people who were turned away -- was called, "How to Lose Friends and Alienate People - the Joys of Engineering Leadership."
The talk was a primer from two Google engineers, Brian Fitzpatrick and Ben Collins-Sussman, who found themselves accidentally in charge of teams one day and decided to learn how to lead them rather than resisting the job, as they say most engineers do.
They also got extra insight into the challenges of management because they're friends, and for awhile, Fitzpatrick was in charge of Collins-Sussman.
"Most engineers don't consider managing real work," Fitzpatrick said. "I remember thinking, what did I do all day? I talked to people and I sent e-mail, and it was impossible to measure, other than my general sense of malaise."
Added Collins-Sussman, "You could say, 'Over the quarter the team achieved this, and I think it was partially my fault.'"
Here then is a list from the pair of the top 18 management do's and don'ts. Please leave us comments if you'd like to add your own.
* Try to be everybody's friend. Be involved with your team - eat lunch with them, maybe, so you know what they talk about -
but remember that sometimes you need enough distance from them to be able to function as the stick instead of the carrot.
* Treat your team members like children, or they will behave like children.
* Micromanage, which you will have to do if you hire the wrong people. Try to hire people who are smarter than you are, because they'll motivate themselves.
* Ignore low or problem performers - if you do, the best people on your team will leave. Try to intervene early with low performers so you can manage them either up or out.
* Ignore human problems. Collins-Sussman's "scary story" was of a manager who lacked so much empathy, he refused to let one of his employees work at home part-time after the employee's wife had a baby. "People have kids all the time," the manager reportedly said.
* Blame team members publicly - speak to them in private if there's a problem, and ask them why they think the problem happened and what they think should be done.
* Be honest and direct. Don't use the confusing "compliment sandwich" when one of your employees is having a problem - for engineers, it would go, "[compliment], your code sucks, [compliment]," Fitzpatrick said.
* Stay calm. Your team will be calmer too.
* Listen and be a sounding board. Don't try to jump in and fix things without being asked.
* Accept questions. Questions may be motivated by curiosity, not criticism.
* Delegate. Resist trying to do things for team members because you can do them faster or better.
* Assign your new team members a mentor, or mentor them yourself.
* Shield your team from distractions so they can focus.
* Have enough self-confidence to raise problems you can't handle with your managers.
* Write a mission statement with your team, as corny as it sounds, so they all know what they're supposed to be doing.
* Lose your ego. Managing people is about giving them an opportunity to learn and grow. It's not about you.
* Work to replace yourself -- if the team is working well and you can step back, you're done.
By the way, Fitzpatrick and Collins-Sussman think Google does a good job of managing engineers, because the company treats them like adults and expects them to get their work done without handholding.
Google also avoids "employee of the month" awards, which several people in the audience -- many of them managers -- said were demoralizing to the rest of the company. Instead, Google offers "peer bonuses" to employees whose peers report that they've done exceptionally good work. Sometimes the bonuses are kept quiet, so that only the employee, the manager and the peer who chose the employee know.