1*4882a593Smuzhiyun.. _managementstyle: 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunLinux kernel management style 4*4882a593Smuzhiyun============================= 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunThis is a short document describing the preferred (or made up, depending 7*4882a593Smuzhiyunon who you ask) management style for the linux kernel. It's meant to 8*4882a593Smuzhiyunmirror the :ref:`process/coding-style.rst <codingstyle>` document to some 9*4882a593Smuzhiyundegree, and mainly written to avoid answering [#f1]_ the same (or similar) 10*4882a593Smuzhiyunquestions over and over again. 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunManagement style is very personal and much harder to quantify than 13*4882a593Smuzhiyunsimple coding style rules, so this document may or may not have anything 14*4882a593Smuzhiyunto do with reality. It started as a lark, but that doesn't mean that it 15*4882a593Smuzhiyunmight not actually be true. You'll have to decide for yourself. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunBtw, when talking about "kernel manager", it's all about the technical 18*4882a593Smuzhiyunlead persons, not the people who do traditional management inside 19*4882a593Smuzhiyuncompanies. If you sign purchase orders or you have any clue about the 20*4882a593Smuzhiyunbudget of your group, you're almost certainly not a kernel manager. 21*4882a593SmuzhiyunThese suggestions may or may not apply to you. 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunFirst off, I'd suggest buying "Seven Habits of Highly Effective 24*4882a593SmuzhiyunPeople", and NOT read it. Burn it, it's a great symbolic gesture. 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun.. [#f1] This document does so not so much by answering the question, but by 27*4882a593Smuzhiyun making it painfully obvious to the questioner that we don't have a clue 28*4882a593Smuzhiyun to what the answer is. 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunAnyway, here goes: 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun.. _decisions: 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun1) Decisions 35*4882a593Smuzhiyun------------ 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunEverybody thinks managers make decisions, and that decision-making is 38*4882a593Smuzhiyunimportant. The bigger and more painful the decision, the bigger the 39*4882a593Smuzhiyunmanager must be to make it. That's very deep and obvious, but it's not 40*4882a593Smuzhiyunactually true. 41*4882a593Smuzhiyun 42*4882a593SmuzhiyunThe name of the game is to **avoid** having to make a decision. In 43*4882a593Smuzhiyunparticular, if somebody tells you "choose (a) or (b), we really need you 44*4882a593Smuzhiyunto decide on this", you're in trouble as a manager. The people you 45*4882a593Smuzhiyunmanage had better know the details better than you, so if they come to 46*4882a593Smuzhiyunyou for a technical decision, you're screwed. You're clearly not 47*4882a593Smuzhiyuncompetent to make that decision for them. 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun(Corollary:if the people you manage don't know the details better than 50*4882a593Smuzhiyunyou, you're also screwed, although for a totally different reason. 51*4882a593SmuzhiyunNamely that you are in the wrong job, and that **they** should be managing 52*4882a593Smuzhiyunyour brilliance instead). 53*4882a593Smuzhiyun 54*4882a593SmuzhiyunSo the name of the game is to **avoid** decisions, at least the big and 55*4882a593Smuzhiyunpainful ones. Making small and non-consequential decisions is fine, and 56*4882a593Smuzhiyunmakes you look like you know what you're doing, so what a kernel manager 57*4882a593Smuzhiyunneeds to do is to turn the big and painful ones into small things where 58*4882a593Smuzhiyunnobody really cares. 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunIt helps to realize that the key difference between a big decision and a 61*4882a593Smuzhiyunsmall one is whether you can fix your decision afterwards. Any decision 62*4882a593Smuzhiyuncan be made small by just always making sure that if you were wrong (and 63*4882a593Smuzhiyunyou **will** be wrong), you can always undo the damage later by 64*4882a593Smuzhiyunbacktracking. Suddenly, you get to be doubly managerial for making 65*4882a593Smuzhiyun**two** inconsequential decisions - the wrong one **and** the right one. 66*4882a593Smuzhiyun 67*4882a593SmuzhiyunAnd people will even see that as true leadership (*cough* bullshit 68*4882a593Smuzhiyun*cough*). 69*4882a593Smuzhiyun 70*4882a593SmuzhiyunThus the key to avoiding big decisions becomes to just avoiding to do 71*4882a593Smuzhiyunthings that can't be undone. Don't get ushered into a corner from which 72*4882a593Smuzhiyunyou cannot escape. A cornered rat may be dangerous - a cornered manager 73*4882a593Smuzhiyunis just pitiful. 74*4882a593Smuzhiyun 75*4882a593SmuzhiyunIt turns out that since nobody would be stupid enough to ever really let 76*4882a593Smuzhiyuna kernel manager have huge fiscal responsibility **anyway**, it's usually 77*4882a593Smuzhiyunfairly easy to backtrack. Since you're not going to be able to waste 78*4882a593Smuzhiyunhuge amounts of money that you might not be able to repay, the only 79*4882a593Smuzhiyunthing you can backtrack on is a technical decision, and there 80*4882a593Smuzhiyunback-tracking is very easy: just tell everybody that you were an 81*4882a593Smuzhiyunincompetent nincompoop, say you're sorry, and undo all the worthless 82*4882a593Smuzhiyunwork you had people work on for the last year. Suddenly the decision 83*4882a593Smuzhiyunyou made a year ago wasn't a big decision after all, since it could be 84*4882a593Smuzhiyuneasily undone. 85*4882a593Smuzhiyun 86*4882a593SmuzhiyunIt turns out that some people have trouble with this approach, for two 87*4882a593Smuzhiyunreasons: 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun - admitting you were an idiot is harder than it looks. We all like to 90*4882a593Smuzhiyun maintain appearances, and coming out in public to say that you were 91*4882a593Smuzhiyun wrong is sometimes very hard indeed. 92*4882a593Smuzhiyun - having somebody tell you that what you worked on for the last year 93*4882a593Smuzhiyun wasn't worthwhile after all can be hard on the poor lowly engineers 94*4882a593Smuzhiyun too, and while the actual **work** was easy enough to undo by just 95*4882a593Smuzhiyun deleting it, you may have irrevocably lost the trust of that 96*4882a593Smuzhiyun engineer. And remember: "irrevocable" was what we tried to avoid in 97*4882a593Smuzhiyun the first place, and your decision ended up being a big one after 98*4882a593Smuzhiyun all. 99*4882a593Smuzhiyun 100*4882a593SmuzhiyunHappily, both of these reasons can be mitigated effectively by just 101*4882a593Smuzhiyunadmitting up-front that you don't have a friggin' clue, and telling 102*4882a593Smuzhiyunpeople ahead of the fact that your decision is purely preliminary, and 103*4882a593Smuzhiyunmight be the wrong thing. You should always reserve the right to change 104*4882a593Smuzhiyunyour mind, and make people very **aware** of that. And it's much easier 105*4882a593Smuzhiyunto admit that you are stupid when you haven't **yet** done the really 106*4882a593Smuzhiyunstupid thing. 107*4882a593Smuzhiyun 108*4882a593SmuzhiyunThen, when it really does turn out to be stupid, people just roll their 109*4882a593Smuzhiyuneyes and say "Oops, not again". 110*4882a593Smuzhiyun 111*4882a593SmuzhiyunThis preemptive admission of incompetence might also make the people who 112*4882a593Smuzhiyunactually do the work also think twice about whether it's worth doing or 113*4882a593Smuzhiyunnot. After all, if **they** aren't certain whether it's a good idea, you 114*4882a593Smuzhiyunsure as hell shouldn't encourage them by promising them that what they 115*4882a593Smuzhiyunwork on will be included. Make them at least think twice before they 116*4882a593Smuzhiyunembark on a big endeavor. 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunRemember: they'd better know more about the details than you do, and 119*4882a593Smuzhiyunthey usually already think they have the answer to everything. The best 120*4882a593Smuzhiyunthing you can do as a manager is not to instill confidence, but rather a 121*4882a593Smuzhiyunhealthy dose of critical thinking on what they do. 122*4882a593Smuzhiyun 123*4882a593SmuzhiyunBtw, another way to avoid a decision is to plaintively just whine "can't 124*4882a593Smuzhiyunwe just do both?" and look pitiful. Trust me, it works. If it's not 125*4882a593Smuzhiyunclear which approach is better, they'll eventually figure it out. The 126*4882a593Smuzhiyunanswer may end up being that both teams get so frustrated by the 127*4882a593Smuzhiyunsituation that they just give up. 128*4882a593Smuzhiyun 129*4882a593SmuzhiyunThat may sound like a failure, but it's usually a sign that there was 130*4882a593Smuzhiyunsomething wrong with both projects, and the reason the people involved 131*4882a593Smuzhiyuncouldn't decide was that they were both wrong. You end up coming up 132*4882a593Smuzhiyunsmelling like roses, and you avoided yet another decision that you could 133*4882a593Smuzhiyunhave screwed up on. 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun2) People 137*4882a593Smuzhiyun--------- 138*4882a593Smuzhiyun 139*4882a593SmuzhiyunMost people are idiots, and being a manager means you'll have to deal 140*4882a593Smuzhiyunwith it, and perhaps more importantly, that **they** have to deal with 141*4882a593Smuzhiyun**you**. 142*4882a593Smuzhiyun 143*4882a593SmuzhiyunIt turns out that while it's easy to undo technical mistakes, it's not 144*4882a593Smuzhiyunas easy to undo personality disorders. You just have to live with 145*4882a593Smuzhiyuntheirs - and yours. 146*4882a593Smuzhiyun 147*4882a593SmuzhiyunHowever, in order to prepare yourself as a kernel manager, it's best to 148*4882a593Smuzhiyunremember not to burn any bridges, bomb any innocent villagers, or 149*4882a593Smuzhiyunalienate too many kernel developers. It turns out that alienating people 150*4882a593Smuzhiyunis fairly easy, and un-alienating them is hard. Thus "alienating" 151*4882a593Smuzhiyunimmediately falls under the heading of "not reversible", and becomes a 152*4882a593Smuzhiyunno-no according to :ref:`decisions`. 153*4882a593Smuzhiyun 154*4882a593SmuzhiyunThere's just a few simple rules here: 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun (1) don't call people d*ckheads (at least not in public) 157*4882a593Smuzhiyun (2) learn how to apologize when you forgot rule (1) 158*4882a593Smuzhiyun 159*4882a593SmuzhiyunThe problem with #1 is that it's very easy to do, since you can say 160*4882a593Smuzhiyun"you're a d*ckhead" in millions of different ways [#f2]_, sometimes without 161*4882a593Smuzhiyuneven realizing it, and almost always with a white-hot conviction that 162*4882a593Smuzhiyunyou are right. 163*4882a593Smuzhiyun 164*4882a593SmuzhiyunAnd the more convinced you are that you are right (and let's face it, 165*4882a593Smuzhiyunyou can call just about **anybody** a d*ckhead, and you often **will** be 166*4882a593Smuzhiyunright), the harder it ends up being to apologize afterwards. 167*4882a593Smuzhiyun 168*4882a593SmuzhiyunTo solve this problem, you really only have two options: 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun - get really good at apologies 171*4882a593Smuzhiyun - spread the "love" out so evenly that nobody really ends up feeling 172*4882a593Smuzhiyun like they get unfairly targeted. Make it inventive enough, and they 173*4882a593Smuzhiyun might even be amused. 174*4882a593Smuzhiyun 175*4882a593SmuzhiyunThe option of being unfailingly polite really doesn't exist. Nobody will 176*4882a593Smuzhiyuntrust somebody who is so clearly hiding their true character. 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun.. [#f2] Paul Simon sang "Fifty Ways to Leave Your Lover", because quite 179*4882a593Smuzhiyun frankly, "A Million Ways to Tell a Developer They're a D*ckhead" doesn't 180*4882a593Smuzhiyun scan nearly as well. But I'm sure he thought about it. 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun3) People II - the Good Kind 184*4882a593Smuzhiyun---------------------------- 185*4882a593Smuzhiyun 186*4882a593SmuzhiyunWhile it turns out that most people are idiots, the corollary to that is 187*4882a593Smuzhiyunsadly that you are one too, and that while we can all bask in the secure 188*4882a593Smuzhiyunknowledge that we're better than the average person (let's face it, 189*4882a593Smuzhiyunnobody ever believes that they're average or below-average), we should 190*4882a593Smuzhiyunalso admit that we're not the sharpest knife around, and there will be 191*4882a593Smuzhiyunother people that are less of an idiot than you are. 192*4882a593Smuzhiyun 193*4882a593SmuzhiyunSome people react badly to smart people. Others take advantage of them. 194*4882a593Smuzhiyun 195*4882a593SmuzhiyunMake sure that you, as a kernel maintainer, are in the second group. 196*4882a593SmuzhiyunSuck up to them, because they are the people who will make your job 197*4882a593Smuzhiyuneasier. In particular, they'll be able to make your decisions for you, 198*4882a593Smuzhiyunwhich is what the game is all about. 199*4882a593Smuzhiyun 200*4882a593SmuzhiyunSo when you find somebody smarter than you are, just coast along. Your 201*4882a593Smuzhiyunmanagement responsibilities largely become ones of saying "Sounds like a 202*4882a593Smuzhiyungood idea - go wild", or "That sounds good, but what about xxx?". The 203*4882a593Smuzhiyunsecond version in particular is a great way to either learn something 204*4882a593Smuzhiyunnew about "xxx" or seem **extra** managerial by pointing out something the 205*4882a593Smuzhiyunsmarter person hadn't thought about. In either case, you win. 206*4882a593Smuzhiyun 207*4882a593SmuzhiyunOne thing to look out for is to realize that greatness in one area does 208*4882a593Smuzhiyunnot necessarily translate to other areas. So you might prod people in 209*4882a593Smuzhiyunspecific directions, but let's face it, they might be good at what they 210*4882a593Smuzhiyundo, and suck at everything else. The good news is that people tend to 211*4882a593Smuzhiyunnaturally gravitate back to what they are good at, so it's not like you 212*4882a593Smuzhiyunare doing something irreversible when you **do** prod them in some 213*4882a593Smuzhiyundirection, just don't push too hard. 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun4) Placing blame 217*4882a593Smuzhiyun---------------- 218*4882a593Smuzhiyun 219*4882a593SmuzhiyunThings will go wrong, and people want somebody to blame. Tag, you're it. 220*4882a593Smuzhiyun 221*4882a593SmuzhiyunIt's not actually that hard to accept the blame, especially if people 222*4882a593Smuzhiyunkind of realize that it wasn't **all** your fault. Which brings us to the 223*4882a593Smuzhiyunbest way of taking the blame: do it for someone else. You'll feel good 224*4882a593Smuzhiyunfor taking the fall, they'll feel good about not getting blamed, and the 225*4882a593Smuzhiyunperson who lost their whole 36GB porn-collection because of your 226*4882a593Smuzhiyunincompetence will grudgingly admit that you at least didn't try to weasel 227*4882a593Smuzhiyunout of it. 228*4882a593Smuzhiyun 229*4882a593SmuzhiyunThen make the developer who really screwed up (if you can find them) know 230*4882a593Smuzhiyun**in private** that they screwed up. Not just so they can avoid it in the 231*4882a593Smuzhiyunfuture, but so that they know they owe you one. And, perhaps even more 232*4882a593Smuzhiyunimportantly, they're also likely the person who can fix it. Because, let's 233*4882a593Smuzhiyunface it, it sure ain't you. 234*4882a593Smuzhiyun 235*4882a593SmuzhiyunTaking the blame is also why you get to be manager in the first place. 236*4882a593SmuzhiyunIt's part of what makes people trust you, and allow you the potential 237*4882a593Smuzhiyunglory, because you're the one who gets to say "I screwed up". And if 238*4882a593Smuzhiyunyou've followed the previous rules, you'll be pretty good at saying that 239*4882a593Smuzhiyunby now. 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun5) Things to avoid 243*4882a593Smuzhiyun------------------ 244*4882a593Smuzhiyun 245*4882a593SmuzhiyunThere's one thing people hate even more than being called "d*ckhead", 246*4882a593Smuzhiyunand that is being called a "d*ckhead" in a sanctimonious voice. The 247*4882a593Smuzhiyunfirst you can apologize for, the second one you won't really get the 248*4882a593Smuzhiyunchance. They likely will no longer be listening even if you otherwise 249*4882a593Smuzhiyundo a good job. 250*4882a593Smuzhiyun 251*4882a593SmuzhiyunWe all think we're better than anybody else, which means that when 252*4882a593Smuzhiyunsomebody else puts on airs, it **really** rubs us the wrong way. You may 253*4882a593Smuzhiyunbe morally and intellectually superior to everybody around you, but 254*4882a593Smuzhiyundon't try to make it too obvious unless you really **intend** to irritate 255*4882a593Smuzhiyunsomebody [#f3]_. 256*4882a593Smuzhiyun 257*4882a593SmuzhiyunSimilarly, don't be too polite or subtle about things. Politeness easily 258*4882a593Smuzhiyunends up going overboard and hiding the problem, and as they say, "On the 259*4882a593Smuzhiyuninternet, nobody can hear you being subtle". Use a big blunt object to 260*4882a593Smuzhiyunhammer the point in, because you can't really depend on people getting 261*4882a593Smuzhiyunyour point otherwise. 262*4882a593Smuzhiyun 263*4882a593SmuzhiyunSome humor can help pad both the bluntness and the moralizing. Going 264*4882a593Smuzhiyunoverboard to the point of being ridiculous can drive a point home 265*4882a593Smuzhiyunwithout making it painful to the recipient, who just thinks you're being 266*4882a593Smuzhiyunsilly. It can thus help get through the personal mental block we all 267*4882a593Smuzhiyunhave about criticism. 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun.. [#f3] Hint: internet newsgroups that are not directly related to your work 270*4882a593Smuzhiyun are great ways to take out your frustrations at other people. Write 271*4882a593Smuzhiyun insulting posts with a sneer just to get into a good flame every once in 272*4882a593Smuzhiyun a while, and you'll feel cleansed. Just don't crap too close to home. 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun6) Why me? 276*4882a593Smuzhiyun---------- 277*4882a593Smuzhiyun 278*4882a593SmuzhiyunSince your main responsibility seems to be to take the blame for other 279*4882a593Smuzhiyunpeoples mistakes, and make it painfully obvious to everybody else that 280*4882a593Smuzhiyunyou're incompetent, the obvious question becomes one of why do it in the 281*4882a593Smuzhiyunfirst place? 282*4882a593Smuzhiyun 283*4882a593SmuzhiyunFirst off, while you may or may not get screaming teenage girls (or 284*4882a593Smuzhiyunboys, let's not be judgmental or sexist here) knocking on your dressing 285*4882a593Smuzhiyunroom door, you **will** get an immense feeling of personal accomplishment 286*4882a593Smuzhiyunfor being "in charge". Never mind the fact that you're really leading 287*4882a593Smuzhiyunby trying to keep up with everybody else and running after them as fast 288*4882a593Smuzhiyunas you can. Everybody will still think you're the person in charge. 289*4882a593Smuzhiyun 290*4882a593SmuzhiyunIt's a great job if you can hack it. 291