Monday, May 29, 2006

(Not) Managing Software Developers

Manager Secret Sauce


I've managed software developers at various companies, on and off, for about fifteen years. Doing so I've made or watched just about every mistake in the very big book o' management mistakes. So, like many others before me, I thought I'd offer a few observations and tips.

I'm not trying to be comprehensive here. It's just some thoughts, just enough of them to fit in a blog. And wouldn't you know it, they fit exactly. Lucky us! Also, I don't mean to be controversial here. However, given that nearly everything I write seems to generate at least some controversy, I eagerly await seeing how far I miss my mark.

If today's rant seems boringly obvious to you, then you may very well be a rare breed: a good software engineering manager. I say you may be, because knowing these things isn't the same as practicing them effectively. You may do all my Dos and don't all my Don'ts, yet still find some clever way to be an awful manager that I hadn't thought of. The path is fairly narrow, and there are surprisingly many dimensions along which you can make mistakes.

However, I'll offer you one almost magical tip that can help you smooth over nearly any mistake, a tip that can get you through just about any bad situation. I'll tell you the tip right now, with no fanfare or ado. This hint is the most important one I'll offer you today. It's the secret ingredient to Great Manager Sauce. Unfortunately, it's not easy to learn. You either already understand it, down in your bones, or you have years of head-scratching ahead of you. The tip is just one word: Empathy.

If you have true empathy for your engineers, they can forgive almost anything. Which is good, because you will make mistakes. We all do.

Of course, you'll need to be more than a quivering blob of empathy to be a good manager, so I have a few more tips coming your way. But first, if you're reading these tips with an eye towards practicing them, let's revisit why you're interested in management in the first place.

Absolute Power


The catch-22 of software management is that the ones who want it most are usually the worst at it. Some people, for worse or for worst, want to be managers because it gives them power over their peers. There's nothing good that can come of this arrangement: you should never give power to someone who craves it, for reasons that I hope are obvious.

Unfortunately, many tech companies do exactly that, because they don't know any better. And they exacerbate the problem by setting up a bad feedback loop, in which managers get to make all the decisions and effectively have all the power, or at any rate too much of it. A company may say they value their engineers, but if compensation decisions are all made by managers, guess who gets all the compensation? And then everyone sets a long-term goal of becoming a manager, at which point the company is no longer focused on innovation.

If you're an engineer at a company where becoming a manager is considered a promotion, then you only have three choices: become a manager yourself, or leave, or resign yourself to being a second-class employee. It should be obvious — you can work through the math using three sock puppets — that this is an arrangement that pushes a company inexorably towards mediocrity. The best engineers either leave the company or try their hand at management, often with doubly disastrous consequences: they simultaneously lose the company a great engineer and gain them an awful manager.

Every company is subject to nearly invisible forces set up by their organizational and cultural choices, whether deliberate or accidental. Software companies that prize managers above engineers are guided by their own Invisible Hand to become a henhouse of clucky managers pecking viciously at harried engineers. Sadly, most software companies fall into this trap, because they're borrowing traditional ideas about management from non-tech industries, and they're not bright enough to think through the implications, let alone design a better system.

It takes a long time for a big company to die: so long that it's non-obvious that most of them are in fact dying, or at best treading water. We're a hit-driven industry. A few big successes can make it seem like everyone's doing well. But most of them have only had one hit. Go visit most tech companies, and all you'll find is a fussy henhouse parading around an aging goose that laid one or two golden eggs. All their innovation happened in the first act, and now they're focused on "managing for success." But that kind of managing is just staving off insolvency until a real innovator takes their business away. Any tech company overly focused on (or dependent on) its management is probably a good candidate for short-selling.

Many big-company CEOs still wish for the good old startup days where everyone was motivated by idealism, or greed, or both, and worked as hard as they could without the need for management overhead. However, some sort of formal management heirarchy seems to be a necessary evil. I don't think anyone's figured out how to make a no-management structure work for an org with hundrds or thousands of engineers. I do know one great company that's come really close. I won't tell you their name, but you can, um, Google for them. Unfortunately I have neither time, nor space, nor in all likelihood permission to explain their recipe for success with almost no management. You'll just have to take my word for it: if you take all the managers away, great engineers will still build great things. Maybe even faster.

And even companies brave enough to try flat management still need to find a few good managers. But the management catch-22 I opened this section with makes finding good managers a bit problematic. If you simply line everyone up and ask anyone who wants the job to take one step backwards, you wind up with two rows: a row of bad managers who want the job, and a row of bad managers who don't. It's hard to find good software managers and it's hard to grow them. I'm afraid I have to leave the task of acquiring good managers out of scope for today, and instead focus on how you might go about becoming a better manager if you already have the job, or think you might someday.

So You Want To Be A Manager


If you want to manage badly enough, then you will manage, badly enough. Hence, before you jump in, stop and think about why you want it. Are you tired of engineering, or were you perhaps never very good at it? If so, technical management isn't much of an escape, because your engineers will know, and they won't respect you. Do you want to manage because you want authority? If so, it's a trap: you'll still be on a leash held by the folks above you.

Or maybe you just want to be a little higher in the pecking order, so you can peck downhill? If so, then you're what we call, colloquially speaking, a "pecker".

Think hard about why you want to be a manager. I've worked with a hundred managers with a hundred different motivations, and all of the underlying reasons, including my own, seem suspicious to me now. Especially now that I work for a company that works, and well, with almost no managers or management overhead. Now that I've seen it working, I question the motivations of anyone who wants to manage.

I'm suspicious of all the mother-hen types: they want to nurture their teams, but tend to smother them. And I'm suspicious of the overly-organized types: they want to bring process to chaos, but process stifles invention, and it can be used to disguise incompetence for an entire career. I'm suspicious of empire builders; too often they lower their hiring bar. I've heard or seen a hundred reasons for becoming a manager, and I now view all of them with suspicion, because each reason is a potential psychological problem waiting to manifest itself on a soon-to-be-unhappy engineering team.

I know plenty of good managers, even great ones, and none of them are managing. They're leading, and there's a world of difference. You've heard a hundred clichéd descriptions of leadership, but you probably also know at least one or two people you consider great leaders, so you know intuitively how it can work via their examples. And if you know enough great leaders, you know there are vastly different styles at work.

I won't try to characterize those styles here; it would take us too far afield. But I think the best managers don't want to manage: they want to lead. In fact most leaders probably don't think about it much, at least at first, because they're too busy leading: rushing headlong towards a goal and leading everyone around them in that direction, whether they're on the team or not. Leadership stems from having a clear vision, strong convictions, and enough drive and talent to get your ideas and goals across to a diverse group of people who can help you achieve them. If you have all that, you're close. Then you just need empathy so you don't work everyone to death. If you're a great leader, you can put the whip away; everyone will give you everything they've got.

Put in that light, management no longer seems so glamorous, does it? Ironically, "I want to be a manager" is just about the worst sentiment a would-be manager could possibly express, because the statement has absolutely nothing to do with leadership. A leader doesn't fixate on management, which is after all just a bureaucratic framework that attempts to simulate leadership through process and protocol. Great teams building great things don't worry about process. They just build whatever it is as fast as they can.

The more HR-oriented a tech organization becomes, with manager training and manager forms and manager evaluations and manager this and that, the harder it is for a real leader to get any work done. Often as not, the actual leaders in the organization (at all levels, from individual contributors up through senior VPs) tend to be very slightly unpopular with HR, because they're always bending the rules and not doing things strictly by the book.

The true leaders in an organization are seeing the world through a very different set of eyes: the eyes, almost, of someone reading a story unfolding, except they're the ones writing the story. They can see clear as day how the world should be different in some way, and they're doing whatever it takes to get from here to there. And they're enlisting all the help they can get along the way, because getting others on board with your ideas is one of the best ways to accomplish your goals. They'll align their own goals with yours if they agree with you strongly enough.

Great companies recognize that leadership is orthogonal to management, and that people can be highly influential leaders with or without direct reports. The management heirarchy isn't generally helping the leaders. If you're lucky enough to have truly great leaders in your org, the best thing you can do is get out of their way and let them lead.

Any time I hear someone say "I want to be a manager", I just want to smack them. But maybe it's just me.

Management in the Real World


It's wonderful when we have great leaders and visionaries around to lead the charge, but in practice our lives at tech companies are usually a bit more mundane than that. Also, a visionary who's too fired up (read: product manager) can develop a habit of discounting the laws of physics — laws about time, in particular — and asking you to give birth to a brand-new baby every 2 weeks.

You need the visionaries or you'll have one dull company, but it's also good to have people around who represent rationality. This is where actual managers come in, or at least they should.

Let's put aside what I said about leadership earlier, because great leaders and perfectly tuned teams are fairly rare. A more typical situation is that you're a new manager who has inherited a bunch of miserable engineers maintaining some crufty old legacy code for a product that's losing market share but is still generating enough revenue to fund your group, albeit with no room for new headcount. Sound familiar?

In situations like that, true leadership is still possible and desirable, but there are enough constraints to make it more of a long-term goal. You can't just drop the ball and send your team charging off in some new direction; you have existing products and customers to deal with.

This is where those management tips come in handy. Because if you're a bad manager, you've got serious problems ahead of you. The tech industry is still growing fast enough that good engineers won't stick with you if they're unhappy. Bad engineers might, but then you've got another set of problems.

If you don't know whether you're a bad manager, then you're a bad manager. It's the default state, the start-state, for managers everywhere. So just assume you're bad, and start working to get better at it. It's actually a pretty good assumption, because you are going to make some mistakes, even after you have lots of experience. Even if you're a good manager, you can always get better at it. And let's face it: you might actually be an awful manager. Most managers are average or below average, so statistically it's a pretty good bet that you're one of them. And it's not as if your team or your peers would ever tell you, so how would you really know?

OK, got it. We're bad managers. Let's get better at it.

Sadly, listing all the possible ways you could go wrong as a tech manager would fill fat books. There's no way to give you a reasonable list in a blog entry. So we'll have to stick with meta-tips: that is to say, tips about how to figure out how to be a better manager. Teaching us to fish so we can eat for a lifetime, and all that.

I've given you three pretty good ones so far. The first was empathy. That's all about having the rather deep realization that people are all pretty much like you in many ways, and their feelings matter a lot more than you probably think. I don't know how to teach empathy. Maybe get yourself a dog or cat, preferably not a pit bull, and then learn to love it. Once you realize just how much you and your dog or cat are alike, you'll be getting close. For instance, we all like to eat. You'd probably be surprised at how much time good managers spend thinking about food for the team, at least at companies that don't have catered lunch and dinner every day. I.e., yours.

Like I said, it's a meta-tip. Get in touch with the right side of your brain, all touchy-feely and stuff, and you'll suddenly start having all kinds of great ideas that make you a better manager.

That, and maybe one or two ideas that could get you fired and/or thrown in jail. So one concrete base-level tip would be to pay very close attention to your company's HR policies. They basically boil down to "don't do anything your mom wouldn't do." 'nuff said.

The second meta-tip was not to get into management at all. Be a leader, and try to do so at a non-dysfunctional organization. Then if management is thrust on you, your priorities will be... if not right, then at least better than they'd have been if you'd been dying to be a manager.

And my third meta-tip is to assume you're a bad manager, because you really can't go wrong with that assumption. Look for things you're doing wrong. Look for ways to improve. If you're not looking, you're probably not going to find them.

Management is hard. I'm serious. Just when you think you've got it all figured out, you'll run into some bizarre new situation. Or they'll give you more responsibility, or a harder problem space. Something always comes up. If nothing does come up — if things are all running smoothly and you're hardly having to work at it — then you've got a more insidious problem on your hands: if it all seems easy, then your company is probably sailing smoothly towards insignificance. Because I guarantee you that your competitors are working really, really hard. So in a sense, good management is hard by definition: the challenge is to balance pushing hard with the good of the team. Again: fuel for fat books here. No space to discuss it. But you get the idea.

How To Manage


Tune in next time. Blogs are so episodic; it just drives you nuts, doesn't it? Plus I'll probably disappear for another month, playing some video game.

But at least I'm not doing performance reviews.

Seriously, though, this blog has gone on long enough, so I'll have to leave the non-meta tips for another blog. For now, just remember. Empathy. If you have that, then even without the vision, the rest should follow nicely. You can go far just by being nice.

Friday, May 05, 2006

Oblivion

So I haven't been blogging lately, because Oblivion doesn't have that feature. On the plus side, though, I've been leveling completely out of control because I was stupid enough to have Athletics as one of my primary skills.

If you don't know what I'm talking about, consider yourself lucky. As in, your luck attribute is maxed at 100. Because the game is so damned addictive that when you're not playing, you wind up looking outside and thinking "man, that lighting model is really realistic!" before you remember you're not actually playing at that particular moment. And then you get all bummed, because you're not playing Oblivion.

Oblivion is the latest in a series of very long games called "The Elder Scrolls", from Bethesda. It's a single-player first-person RPG, or "Role-Playing Game" for those of you who've lived under a rock for the past 30 years. RPGs are a genre defined by its immersively intense realism. For instance, when you're hurling fireballs at vampires, you can hardly tell them apart from real fireballs and vampires.

Bethesda called this latest incarnation "Oblivion" because it sounded better than "core dump" or "segmentation fault", but it has the same basic connotations. "Oblivion" is where the game sends your Windows sessions, at least if you're unfortunate enough to be running the game on any computer manufactured before the year 2017.

Crashes? *gasp* -- I bet you'll never guess what programming language it's written in.

Anyhoo, the frequent crashes are tolerable, because the game lets you save anywhere you want, and you can tell when it's getting ready to crash by watching the frame rate, which goes from frames per second to seconds per frame. The game also has a nice autosave feature, so that when a mountain lion rips your throat out, and you're lying on your back trying to subdue the lion by spurting blood all over it, the game reassures you with: "Autosave successful."

For those of you who played Morrowind, you'll find Oblivion to be comfortingly similar. There are a few differences, of course. One is that Oblivion's countryside is beautiful, whereas Morrowind was a hideous island dominated by volcanoes and disease storms and mud flats and rotting undead zombies, much like a C++ users convention.

In fact, walking around in Oblivion is one of the most appealing aspects of the game. You get so caught up admiring the beautiful flowers and trees and birds and ancient ruins and whatnot that you usually fail to notice the lightning bolt from the imp behind you until it fries the back of your head. Fortunately, you can always revert back to that autosave with the lion.

On the other hand, while Oblivion's scenery has grown breathtakingly lovely, the increased realism hasn't been so kind to the NPCs (Non-Player Characters, for you Rock People) in the game. The graphics have improved to the point where you can now see every last throbbing vein and clogged pore in their wrinkled, hung-over faces. And they all have a nasty habit of standing too close to you when they talk, so you also get an insider's view of their nostrils. Why did they have to make everyone so ugly? It's like the soap-opera director said of Moe the Bartender: "I wanted Mary-Ann-on-Gilligan's-Island ugly, not ugly ugly!"

Plus, in order to achieve the realistic facial expressions during conversations, they evidently had to make all the characters look vaguely alike, as if they all had one parent in common. So they're worse than merely ugly: they're ugly relatives. The game's supposed to be an escape from reality, but at times it feels more like an escape to Arkansas.

But it's cool that they have such realistic facial expressions when they talk to you, so I suppose it's worth it. The NPCs' expressions generally change to match what they're saying. And, just like in real life, the characters will often seem to be staring fixedly at a zit in the middle of your forehead, because yes, you guessed it: you're ugly too. That is, unless you spent a long time customizing your character's face before you started playing, as I did. My wife and I spent well over an hour agonizing over every last detail of my (female) character's face, and she turned out pretty cute. But most of the in-game characters are just plain old fugly.

In addition to painfully realistic characters, the game also has extensive voice acting. Every single interaction with every character in the game is voice-acted, which is truly amazing, at least at first. Eventually it becomes a little annoying because there are only a few voice actors, and you quickly start recognizing their voices. "Oh, it's Mr. Rogers again." "Oh, there's Boris from Snatch again."

And for some reason many of the voice actors, particularly the men, apparently think they're sounding dramatic when they randomly and violently modulate their intonation. In practice, however, when a voice ACTOR does this!?, with UPs and doooowns and lows and *sudden* -HIGHS-, it sounds more like he or she has a choke-chain tied around his or her testicles, and he or she keeps tripping on it.

But really... aside from the frequent crashes and frightfully ugly characters and comical voice acting, the game is just awesome. They do all kinds of things I've never seen in a video game before, and you probably haven't either.

For one thing, the monster AI is exceptionally good. Enemies use all sorts of evasion tactics and generally fight almost as well as human opponents. And they no longer stay in their areas: they'll chase your ass right out of the dungeon and all the way into town. I know this because my character is a "light armor" specialist, which means I get frigging pounded (and I mean *hard*) by everything in the game, including sewer rats. I honestly don't think there would be any detectable difference if I took off all my armor and fought with the nude mod applied. So I specialize in fighting while running backwards at top speed, which generally moves us into a new area where I can attract even more monsters.

The cool thing is that when monsters run outside, they'll fight pretty much anything that moves. If an Imperial Guard is riding by, or some random townsperson, or even another monster, chances are pretty good that the monsters chasing you will suddenly be chasing them. I've even stopped my horse to watch an Imperial Guard romp on a troll. I'd have offered to help, but... you know... I had this, um, excuse.

For the record, Trolls in Oblivion are just green apes. They evidently went through the whole Zoo (I've encountered rats, wolves, bears, and mountain lions outdoors so far), and then at the last minute they decided that trolls are cooler than apes, so they turned 'em green and that was that. It's sort of a sad take on Tolkien, if you ask me. Or Norweigian trolls, which are even further removed from their Oblivious counterparts.

Anyway, as you can clearly see, this is one of my it's-Friday hence let's-get-hammered rants, so I didn't really have much of a point, except to say that if you're not playing Oblivion, then I highly, nay strongly recommend that you don't start, or you'll suddenly develop an aversion to Real Life, and who knows how long it'll last. Probably until you're fired, I'm guessing, at which point Real Life will become at least passingly interesting again, although not in any happy way.

Oblivion is... what can you say? It's a great game. A great, big game. A big, crashy game. Yes. Oblivion is a crashy game. It's a case study in why the world shouldn't be using C++. But in spite of that, they did a great job. As is always the case in the game industry, they spent too much time on the graphics and not enough time on the gameplay — I still think I'll ultimately log far more hours in Nethack than any Bethesda game — but it's still very cool, and I'm having fun with it.

It's not their fault, of course: they have to impress critics in a very short time, during the first conference where the game is demoed. So everyone spends their time making the game look realistic. Fortunately, there really is a game behind Oblivion, and it's a fun one: graphics can't carry a game on their own, no matter what the 12-year-olds might claim on the newsgroups.

You'd think single-player games are on the decline, but MMORPGs haven't figured out that the vast majority of their potential market hates subscriptions, and yet would gladly pay their life savings for cheats and hints and ways to differentiate themselves in the mass of unwashed players. Someday they'll get this, maybe, and the massivey-multiplayer game industry will be based off advertisements and micropayments, the way everything else on the internet is these days. Someday. Maybe.

But also don't forget: single-player games have the distinct advantage that they're, well... single-player. They're all about you. Like my friend Brunson says: when you hear an NPC talking about the exploits of some hero, you know it's about you. You don't have to deal with all the assholes you run into in multiplayer games, and believe you me, I don't use the term "asshole" lightly. MMORPGs bring out the worst in 12-year-olds, or perhaps they bring out the 12-year-old in adults. Whatever. The point is that when you play a single-player game it can have a plot, and you don't have to compete for resources with anyone but yourself, and there are definite plusses there.

I wonder if someday someone will figure out how to combine the best of single-player with the best of (massively) multi-player. Who knows.

Anyway, um, if you don't hear from me for a while, you know where I'll be. Working for my employer on stuff I'm being paid for, of course! Jeez!

Only two more working days 'til Monday... I think I'll go clean out some goblin caves. Know what I mean?