Blame view

Documentation/ManagementStyle 13.1 KB
609d99a3b   Mauro Carvalho Chehab   Documentation/HOW...
1
  .. _managementstyle:
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
2
3
  Linux kernel management style
  =============================
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4
5
6
7
  
  This is a short document describing the preferred (or made up, depending
  on who you ask) management style for the linux kernel.  It's meant to
  mirror the CodingStyle document to some degree, and mainly written to
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
8
  avoid answering [#f1]_  the same (or similar) questions over and over again.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
10
11
12
13
14
15
16
17
  
  Management style is very personal and much harder to quantify than
  simple coding style rules, so this document may or may not have anything
  to do with reality.  It started as a lark, but that doesn't mean that it
  might not actually be true. You'll have to decide for yourself.
  
  Btw, when talking about "kernel manager", it's all about the technical
  lead persons, not the people who do traditional management inside
  companies.  If you sign purchase orders or you have any clue about the
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
18
19
  budget of your group, you're almost certainly not a kernel manager.
  These suggestions may or may not apply to you.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
20

e11e3643f   Jiri Pirko   docs: fix Managem...
21
  First off, I'd suggest buying "Seven Habits of Highly Effective
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
22
  People", and NOT read it.  Burn it, it's a great symbolic gesture.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
24
25
26
  .. [#f1] This document does so not so much by answering the question, but by
    making it painfully obvious to the questioner that we don't have a clue
    to what the answer is.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
27
28
  
  Anyway, here goes:
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
29
  .. _decisions:
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
31
32
  1) Decisions
  ------------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
  
  Everybody thinks managers make decisions, and that decision-making is
  important.  The bigger and more painful the decision, the bigger the
  manager must be to make it.  That's very deep and obvious, but it's not
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
37
  actually true.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
38

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
39
  The name of the game is to **avoid** having to make a decision.  In
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
40
41
42
43
  particular, if somebody tells you "choose (a) or (b), we really need you
  to decide on this", you're in trouble as a manager.  The people you
  manage had better know the details better than you, so if they come to
  you for a technical decision, you're screwed.  You're clearly not
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
44
  competent to make that decision for them.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
46
  
  (Corollary:if the people you manage don't know the details better than
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
47
48
49
  you, you're also screwed, although for a totally different reason.
  Namely that you are in the wrong job, and that **they** should be managing
  your brilliance instead).
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
50

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
51
  So the name of the game is to **avoid** decisions, at least the big and
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
  painful ones.  Making small and non-consequential decisions is fine, and
  makes you look like you know what you're doing, so what a kernel manager
  needs to do is to turn the big and painful ones into small things where
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
55
  nobody really cares.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
56
57
58
59
  
  It helps to realize that the key difference between a big decision and a
  small one is whether you can fix your decision afterwards.  Any decision
  can be made small by just always making sure that if you were wrong (and
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
60
  you **will** be wrong), you can always undo the damage later by
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
61
  backtracking.  Suddenly, you get to be doubly managerial for making
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
62
  **two** inconsequential decisions - the wrong one **and** the right one.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
64
65
66
67
68
69
  
  And people will even see that as true leadership (*cough* bullshit
  *cough*).
  
  Thus the key to avoiding big decisions becomes to just avoiding to do
  things that can't be undone.  Don't get ushered into a corner from which
  you cannot escape.  A cornered rat may be dangerous - a cornered manager
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
70
  is just pitiful.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
71
72
  
  It turns out that since nobody would be stupid enough to ever really let
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
73
  a kernel manager have huge fiscal responsibility **anyway**, it's usually
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
74
75
76
77
78
79
80
  fairly easy to backtrack.  Since you're not going to be able to waste
  huge amounts of money that you might not be able to repay, the only
  thing you can backtrack on is a technical decision, and there
  back-tracking is very easy: just tell everybody that you were an
  incompetent nincompoop, say you're sorry, and undo all the worthless
  work you had people work on for the last year.  Suddenly the decision
  you made a year ago wasn't a big decision after all, since it could be
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
81
  easily undone.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
82
83
84
  
  It turns out that some people have trouble with this approach, for two
  reasons:
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
85

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
87
   - admitting you were an idiot is harder than it looks.  We all like to
     maintain appearances, and coming out in public to say that you were
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
88
     wrong is sometimes very hard indeed.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
90
   - having somebody tell you that what you worked on for the last year
     wasn't worthwhile after all can be hard on the poor lowly engineers
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
91
     too, and while the actual **work** was easy enough to undo by just
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
92
93
94
     deleting it, you may have irrevocably lost the trust of that
     engineer.  And remember: "irrevocable" was what we tried to avoid in
     the first place, and your decision ended up being a big one after
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
95
     all.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
96
97
98
99
100
  
  Happily, both of these reasons can be mitigated effectively by just
  admitting up-front that you don't have a friggin' clue, and telling
  people ahead of the fact that your decision is purely preliminary, and
  might be the wrong thing.  You should always reserve the right to change
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
101
102
  your mind, and make people very **aware** of that.  And it's much easier
  to admit that you are stupid when you haven't **yet** done the really
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
103
104
105
  stupid thing.
  
  Then, when it really does turn out to be stupid, people just roll their
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
106
  eyes and say "Oops, he did it again".
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
107
108
109
  
  This preemptive admission of incompetence might also make the people who
  actually do the work also think twice about whether it's worth doing or
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
110
  not.  After all, if **they** aren't certain whether it's a good idea, you
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
111
112
  sure as hell shouldn't encourage them by promising them that what they
  work on will be included.  Make them at least think twice before they
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
113
  embark on a big endeavor.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
114
115
116
117
  
  Remember: they'd better know more about the details than you do, and
  they usually already think they have the answer to everything.  The best
  thing you can do as a manager is not to instill confidence, but rather a
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
118
  healthy dose of critical thinking on what they do.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
119
120
121
122
123
  
  Btw, another way to avoid a decision is to plaintively just whine "can't
  we just do both?" and look pitiful.  Trust me, it works.  If it's not
  clear which approach is better, they'll eventually figure it out.  The
  answer may end up being that both teams get so frustrated by the
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
124
  situation that they just give up.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
125
126
127
128
129
  
  That may sound like a failure, but it's usually a sign that there was
  something wrong with both projects, and the reason the people involved
  couldn't decide was that they were both wrong.  You end up coming up
  smelling like roses, and you avoided yet another decision that you could
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
130
  have screwed up on.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
132
133
  2) People
  ---------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
134
135
  
  Most people are idiots, and being a manager means you'll have to deal
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
136
137
  with it, and perhaps more importantly, that **they** have to deal with
  **you**.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
138
139
140
  
  It turns out that while it's easy to undo technical mistakes, it's not
  as easy to undo personality disorders.  You just have to live with
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
141
  theirs - and yours.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
143
144
145
146
147
  
  However, in order to prepare yourself as a kernel manager, it's best to
  remember not to burn any bridges, bomb any innocent villagers, or
  alienate too many kernel developers. It turns out that alienating people
  is fairly easy, and un-alienating them is hard. Thus "alienating"
  immediately falls under the heading of "not reversible", and becomes a
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
148
  no-no according to :ref:`decisions`.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
149
150
  
  There's just a few simple rules here:
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
151

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
152
153
154
155
   (1) don't call people d*ckheads (at least not in public)
   (2) learn how to apologize when you forgot rule (1)
  
  The problem with #1 is that it's very easy to do, since you can say
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
156
  "you're a d*ckhead" in millions of different ways [#f2]_, sometimes without
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
157
  even realizing it, and almost always with a white-hot conviction that
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
158
  you are right.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
159
160
  
  And the more convinced you are that you are right (and let's face it,
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
161
162
  you can call just about **anybody** a d*ckhead, and you often **will** be
  right), the harder it ends up being to apologize afterwards.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
163
164
  
  To solve this problem, you really only have two options:
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
165

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
166
167
168
   - get really good at apologies
   - spread the "love" out so evenly that nobody really ends up feeling
     like they get unfairly targeted.  Make it inventive enough, and they
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
169
     might even be amused.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
170
171
172
  
  The option of being unfailingly polite really doesn't exist. Nobody will
  trust somebody who is so clearly hiding his true character.
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
173
174
175
  .. [#f2] Paul Simon sang "Fifty Ways to Leave Your Lover", because quite
    frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't
    scan nearly as well.  But I'm sure he thought about it.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
176

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
177
178
  3) People II - the Good Kind
  ----------------------------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
179
180
181
182
183
184
  
  While it turns out that most people are idiots, the corollary to that is
  sadly that you are one too, and that while we can all bask in the secure
  knowledge that we're better than the average person (let's face it,
  nobody ever believes that they're average or below-average), we should
  also admit that we're not the sharpest knife around, and there will be
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
185
  other people that are less of an idiot than you are.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
186

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
187
  Some people react badly to smart people.  Others take advantage of them.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
188

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
189
  Make sure that you, as a kernel maintainer, are in the second group.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
190
191
192
193
194
195
196
197
  Suck up to them, because they are the people who will make your job
  easier. In particular, they'll be able to make your decisions for you,
  which is what the game is all about.
  
  So when you find somebody smarter than you are, just coast along.  Your
  management responsibilities largely become ones of saying "Sounds like a
  good idea - go wild", or "That sounds good, but what about xxx?".  The
  second version in particular is a great way to either learn something
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
198
  new about "xxx" or seem **extra** managerial by pointing out something the
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
199
200
201
202
203
204
205
  smarter person hadn't thought about.  In either case, you win.
  
  One thing to look out for is to realize that greatness in one area does
  not necessarily translate to other areas.  So you might prod people in
  specific directions, but let's face it, they might be good at what they
  do, and suck at everything else.  The good news is that people tend to
  naturally gravitate back to what they are good at, so it's not like you
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
206
  are doing something irreversible when you **do** prod them in some
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
207
  direction, just don't push too hard.
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
208
209
  4) Placing blame
  ----------------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
210
211
212
213
  
  Things will go wrong, and people want somebody to blame. Tag, you're it.
  
  It's not actually that hard to accept the blame, especially if people
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
214
  kind of realize that it wasn't **all** your fault.  Which brings us to the
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
215
216
217
218
219
220
  best way of taking the blame: do it for another guy. You'll feel good
  for taking the fall, he'll feel good about not getting blamed, and the
  guy who lost his whole 36GB porn-collection because of your incompetence
  will grudgingly admit that you at least didn't try to weasel out of it.
  
  Then make the developer who really screwed up (if you can find him) know
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
221
  **in_private** that he screwed up.  Not just so he can avoid it in the
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
222
223
  future, but so that he knows he owes you one.  And, perhaps even more
  importantly, he's also likely the person who can fix it.  Because, let's
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
224
  face it, it sure ain't you.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
225

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
226
  Taking the blame is also why you get to be manager in the first place.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
227
228
229
  It's part of what makes people trust you, and allow you the potential
  glory, because you're the one who gets to say "I screwed up".  And if
  you've followed the previous rules, you'll be pretty good at saying that
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
230
  by now.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
231

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
232
233
  5) Things to avoid
  ------------------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
234
235
236
237
238
  
  There's one thing people hate even more than being called "d*ckhead",
  and that is being called a "d*ckhead" in a sanctimonious voice.  The
  first you can apologize for, the second one you won't really get the
  chance.  They likely will no longer be listening even if you otherwise
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
239
  do a good job.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
240
241
  
  We all think we're better than anybody else, which means that when
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
242
  somebody else puts on airs, it **really** rubs us the wrong way.  You may
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
243
  be morally and intellectually superior to everybody around you, but
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
244
245
  don't try to make it too obvious unless you really **intend** to irritate
  somebody [#f3]_.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
246
247
248
249
250
251
252
253
254
255
256
  
  Similarly, don't be too polite or subtle about things. Politeness easily
  ends up going overboard and hiding the problem, and as they say, "On the
  internet, nobody can hear you being subtle". Use a big blunt object to
  hammer the point in, because you can't really depend on people getting
  your point otherwise.
  
  Some humor can help pad both the bluntness and the moralizing.  Going
  overboard to the point of being ridiculous can drive a point home
  without making it painful to the recipient, who just thinks you're being
  silly.  It can thus help get through the personal mental block we all
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
257
  have about criticism.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
258

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
259
260
261
262
  .. [#f3] Hint: internet newsgroups that are not directly related to your work
    are great ways to take out your frustrations at other people. Write
    insulting posts with a sneer just to get into a good flame every once in
    a while, and you'll feel cleansed. Just don't crap too close to home.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
263

7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
264
265
  6) Why me?
  ----------
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
266
267
268
269
270
271
272
273
  
  Since your main responsibility seems to be to take the blame for other
  peoples mistakes, and make it painfully obvious to everybody else that
  you're incompetent, the obvious question becomes one of why do it in the
  first place?
  
  First off, while you may or may not get screaming teenage girls (or
  boys, let's not be judgmental or sexist here) knocking on your dressing
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
274
  room door, you **will** get an immense feeling of personal accomplishment
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
275
276
  for being "in charge".  Never mind the fact that you're really leading
  by trying to keep up with everybody else and running after them as fast
7f2b3c65b   Mauro Carvalho Chehab   Documentation/Man...
277
  as you can.  Everybody will still think you're the person in charge.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
278
279
  
  It's a great job if you can hack it.