1.. _managementstyle:
   3Linux kernel management style
   6This is a short document describing the preferred (or made up, depending
   7on who you ask) management style for the linux kernel.  It's meant to
   8mirror the CodingStyle document to some degree, and mainly written to
   9avoid answering [#f1]_  the same (or similar) questions over and over again.
  11Management style is very personal and much harder to quantify than
  12simple coding style rules, so this document may or may not have anything
  13to do with reality.  It started as a lark, but that doesn't mean that it
  14might not actually be true. You'll have to decide for yourself.
  16Btw, when talking about "kernel manager", it's all about the technical
  17lead persons, not the people who do traditional management inside
  18companies.  If you sign purchase orders or you have any clue about the
  19budget of your group, you're almost certainly not a kernel manager.
  20These suggestions may or may not apply to you.
  22First off, I'd suggest buying "Seven Habits of Highly Effective
  23People", and NOT read it.  Burn it, it's a great symbolic gesture.
  25.. [#f1] This document does so not so much by answering the question, but by
  26  making it painfully obvious to the questioner that we don't have a clue
  27  to what the answer is.
  29Anyway, here goes:
  31.. _decisions:
  331) Decisions
  36Everybody thinks managers make decisions, and that decision-making is
  37important.  The bigger and more painful the decision, the bigger the
  38manager must be to make it.  That's very deep and obvious, but it's not
  39actually true.
  41The name of the game is to **avoid** having to make a decision.  In
  42particular, if somebody tells you "choose (a) or (b), we really need you
  43to decide on this", you're in trouble as a manager.  The people you
  44manage had better know the details better than you, so if they come to
  45you for a technical decision, you're screwed.  You're clearly not
  46competent to make that decision for them.
  48(Corollary:if the people you manage don't know the details better than
  49you, you're also screwed, although for a totally different reason.
  50Namely that you are in the wrong job, and that **they** should be managing
  51your brilliance instead).
  53So the name of the game is to **avoid** decisions, at least the big and
  54painful ones.  Making small and non-consequential decisions is fine, and
  55makes you look like you know what you're doing, so what a kernel manager
  56needs to do is to turn the big and painful ones into small things where
  57nobody really cares.
  59It helps to realize that the key difference between a big decision and a
  60small one is whether you can fix your decision afterwards.  Any decision
  61can be made small by just always making sure that if you were wrong (and
  62you **will** be wrong), you can always undo the damage later by
  63backtracking.  Suddenly, you get to be doubly managerial for making
  64**two** inconsequential decisions - the wrong one **and** the right one.
  66And people will even see that as true leadership (*cough* bullshit
  69Thus the key to avoiding big decisions becomes to just avoiding to do
  70things that can't be undone.  Don't get ushered into a corner from which
  71you cannot escape.  A cornered rat may be dangerous - a cornered manager
  72is just pitiful.
  74It turns out that since nobody would be stupid enough to ever really let
  75a kernel manager have huge fiscal responsibility **anyway**, it's usually
  76fairly easy to backtrack.  Since you're not going to be able to waste
  77huge amounts of money that you might not be able to repay, the only
  78thing you can backtrack on is a technical decision, and there
  79back-tracking is very easy: just tell everybody that you were an
  80incompetent nincompoop, say you're sorry, and undo all the worthless
  81work you had people work on for the last year.  Suddenly the decision
  82you made a year ago wasn't a big decision after all, since it could be
  83easily undone.
  85It turns out that some people have trouble with this approach, for two
  88 - admitting you were an idiot is harder than it looks.  We all like to
  89   maintain appearances, and coming out in public to say that you were
  90   wrong is sometimes very hard indeed.
  91 - having somebody tell you that what you worked on for the last year
  92   wasn't worthwhile after all can be hard on the poor lowly engineers
  93   too, and while the actual **work** was easy enough to undo by just
  94   deleting it, you may have irrevocably lost the trust of that
  95   engineer.  And remember: "irrevocable" was what we tried to avoid in
  96   the first place, and your decision ended up being a big one after
  97   all.
  99Happily, both of these reasons can be mitigated effectively by just
 100admitting up-front that you don't have a friggin' clue, and telling
 101people ahead of the fact that your decision is purely preliminary, and
 102might be the wrong thing.  You should always reserve the right to change
 103your mind, and make people very **aware** of that.  And it's much easier
 104to admit that you are stupid when you haven't **yet** done the really
 105stupid thing.
 107Then, when it really does turn out to be stupid, people just roll their
 108eyes and say "Oops, he did it again".
 110This preemptive admission of incompetence might also make the people who
 111actually do the work also think twice about whether it's worth doing or
 112not.  After all, if **they** aren't certain whether it's a good idea, you
 113sure as hell shouldn't encourage them by promising them that what they
 114work on will be included.  Make them at least think twice before they
 115embark on a big endeavor.
 117Remember: they'd better know more about the details than you do, and
 118they usually already think they have the answer to everything.  The best
 119thing you can do as a manager is not to instill confidence, but rather a
 120healthy dose of critical thinking on what they do.
 122Btw, another way to avoid a decision is to plaintively just whine "can't
 123we just do both?" and look pitiful.  Trust me, it works.  If it's not
 124clear which approach is better, they'll eventually figure it out.  The
 125answer may end up being that both teams get so frustrated by the
 126situation that they just give up.
 128That may sound like a failure, but it's usually a sign that there was
 129something wrong with both projects, and the reason the people involved
 130couldn't decide was that they were both wrong.  You end up coming up
 131smelling like roses, and you avoided yet another decision that you could
 132have screwed up on.
 1352) People
 138Most people are idiots, and being a manager means you'll have to deal
 139with it, and perhaps more importantly, that **they** have to deal with
 142It turns out that while it's easy to undo technical mistakes, it's not
 143as easy to undo personality disorders.  You just have to live with
 144theirs - and yours.
 146However, in order to prepare yourself as a kernel manager, it's best to
 147remember not to burn any bridges, bomb any innocent villagers, or
 148alienate too many kernel developers. It turns out that alienating people
 149is fairly easy, and un-alienating them is hard. Thus "alienating"
 150immediately falls under the heading of "not reversible", and becomes a
 151no-no according to :ref:`decisions`.
 153There's just a few simple rules here:
 155 (1) don't call people d*ckheads (at least not in public)
 156 (2) learn how to apologize when you forgot rule (1)
 158The problem with #1 is that it's very easy to do, since you can say
 159"you're a d*ckhead" in millions of different ways [#f2]_, sometimes without
 160even realizing it, and almost always with a white-hot conviction that
 161you are right.
 163And the more convinced you are that you are right (and let's face it,
 164you can call just about **anybody** a d*ckhead, and you often **will** be
 165right), the harder it ends up being to apologize afterwards.
 167To solve this problem, you really only have two options:
 169 - get really good at apologies
 170 - spread the "love" out so evenly that nobody really ends up feeling
 171   like they get unfairly targeted.  Make it inventive enough, and they
 172   might even be amused.
 174The option of being unfailingly polite really doesn't exist. Nobody will
 175trust somebody who is so clearly hiding his true character.
 177.. [#f2] Paul Simon sang "Fifty Ways to Leave Your Lover", because quite
 178  frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't
 179  scan nearly as well.  But I'm sure he thought about it.
 1823) People II - the Good Kind
 185While it turns out that most people are idiots, the corollary to that is
 186sadly that you are one too, and that while we can all bask in the secure
 187knowledge that we're better than the average person (let's face it,
 188nobody ever believes that they're average or below-average), we should
 189also admit that we're not the sharpest knife around, and there will be
 190other people that are less of an idiot than you are.
 192Some people react badly to smart people.  Others take advantage of them.
 194Make sure that you, as a kernel maintainer, are in the second group.
 195Suck up to them, because they are the people who will make your job
 196easier. In particular, they'll be able to make your decisions for you,
 197which is what the game is all about.
 199So when you find somebody smarter than you are, just coast along.  Your
 200management responsibilities largely become ones of saying "Sounds like a
 201good idea - go wild", or "That sounds good, but what about xxx?".  The
 202second version in particular is a great way to either learn something
 203new about "xxx" or seem **extra** managerial by pointing out something the
 204smarter person hadn't thought about.  In either case, you win.
 206One thing to look out for is to realize that greatness in one area does
 207not necessarily translate to other areas.  So you might prod people in
 208specific directions, but let's face it, they might be good at what they
 209do, and suck at everything else.  The good news is that people tend to
 210naturally gravitate back to what they are good at, so it's not like you
 211are doing something irreversible when you **do** prod them in some
 212direction, just don't push too hard.
 2154) Placing blame
 218Things will go wrong, and people want somebody to blame. Tag, you're it.
 220It's not actually that hard to accept the blame, especially if people
 221kind of realize that it wasn't **all** your fault.  Which brings us to the
 222best way of taking the blame: do it for another guy. You'll feel good
 223for taking the fall, he'll feel good about not getting blamed, and the
 224guy who lost his whole 36GB porn-collection because of your incompetence
 225will grudgingly admit that you at least didn't try to weasel out of it.
 227Then make the developer who really screwed up (if you can find him) know
 228**in_private** that he screwed up.  Not just so he can avoid it in the
 229future, but so that he knows he owes you one.  And, perhaps even more
 230importantly, he's also likely the person who can fix it.  Because, let's
 231face it, it sure ain't you.
 233Taking the blame is also why you get to be manager in the first place.
 234It's part of what makes people trust you, and allow you the potential
 235glory, because you're the one who gets to say "I screwed up".  And if
 236you've followed the previous rules, you'll be pretty good at saying that
 237by now.
 2405) Things to avoid
 243There's one thing people hate even more than being called "d*ckhead",
 244and that is being called a "d*ckhead" in a sanctimonious voice.  The
 245first you can apologize for, the second one you won't really get the
 246chance.  They likely will no longer be listening even if you otherwise
 247do a good job.
 249We all think we're better than anybody else, which means that when
 250somebody else puts on airs, it **really** rubs us the wrong way.  You may
 251be morally and intellectually superior to everybody around you, but
 252don't try to make it too obvious unless you really **intend** to irritate
 253somebody [#f3]_.
 255Similarly, don't be too polite or subtle about things. Politeness easily
 256ends up going overboard and hiding the problem, and as they say, "On the
 257internet, nobody can hear you being subtle". Use a big blunt object to
 258hammer the point in, because you can't really depend on people getting
 259your point otherwise.
 261Some humor can help pad both the bluntness and the moralizing.  Going
 262overboard to the point of being ridiculous can drive a point home
 263without making it painful to the recipient, who just thinks you're being
 264silly.  It can thus help get through the personal mental block we all
 265have about criticism.
 267.. [#f3] Hint: internet newsgroups that are not directly related to your work
 268  are great ways to take out your frustrations at other people. Write
 269  insulting posts with a sneer just to get into a good flame every once in
 270  a while, and you'll feel cleansed. Just don't crap too close to home.
 2736) Why me?
 276Since your main responsibility seems to be to take the blame for other
 277peoples mistakes, and make it painfully obvious to everybody else that
 278you're incompetent, the obvious question becomes one of why do it in the
 279first place?
 281First off, while you may or may not get screaming teenage girls (or
 282boys, let's not be judgmental or sexist here) knocking on your dressing
 283room door, you **will** get an immense feeling of personal accomplishment
 284for being "in charge".  Never mind the fact that you're really leading
 285by trying to keep up with everybody else and running after them as fast
 286as you can.  Everybody will still think you're the person in charge.
 288It's a great job if you can hack it.