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