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