The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/Documentation/ManagementStyle

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 9e1fcbb3571825ad01e2f8ebf43793af


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.