management-style.rst 13.1 KB
Newer Older
1 2
.. _managementstyle:

3 4
Linux kernel management style
=============================
L
Linus Torvalds 已提交
5 6 7 8

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
9
avoid answering [#f1]_  the same (or similar) questions over and over again.
L
Linus Torvalds 已提交
10 11 12 13 14 15 16 17 18

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
19 20
budget of your group, you're almost certainly not a kernel manager.
These suggestions may or may not apply to you.
L
Linus Torvalds 已提交
21

J
Jiri Pirko 已提交
22
First off, I'd suggest buying "Seven Habits of Highly Effective
23
People", and NOT read it.  Burn it, it's a great symbolic gesture.
L
Linus Torvalds 已提交
24

25 26 27
.. [#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.
L
Linus Torvalds 已提交
28 29 30

Anyway, here goes:

31
.. _decisions:
L
Linus Torvalds 已提交
32

33 34
1) Decisions
------------
L
Linus Torvalds 已提交
35 36 37 38

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
39
actually true.
L
Linus Torvalds 已提交
40

41
The name of the game is to **avoid** having to make a decision.  In
L
Linus Torvalds 已提交
42 43 44 45
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
46
competent to make that decision for them.
L
Linus Torvalds 已提交
47 48

(Corollary:if the people you manage don't know the details better than
49 50 51
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).
L
Linus Torvalds 已提交
52

53
So the name of the game is to **avoid** decisions, at least the big and
L
Linus Torvalds 已提交
54 55 56
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
57
nobody really cares.
L
Linus Torvalds 已提交
58 59 60 61

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
62
you **will** be wrong), you can always undo the damage later by
L
Linus Torvalds 已提交
63
backtracking.  Suddenly, you get to be doubly managerial for making
64
**two** inconsequential decisions - the wrong one **and** the right one.
L
Linus Torvalds 已提交
65 66 67 68 69 70 71

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
72
is just pitiful.
L
Linus Torvalds 已提交
73 74

It turns out that since nobody would be stupid enough to ever really let
75
a kernel manager have huge fiscal responsibility **anyway**, it's usually
L
Linus Torvalds 已提交
76 77 78 79 80 81 82
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
83
easily undone.
L
Linus Torvalds 已提交
84 85 86

It turns out that some people have trouble with this approach, for two
reasons:
87

L
Linus Torvalds 已提交
88 89
 - 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
90
   wrong is sometimes very hard indeed.
L
Linus Torvalds 已提交
91 92
 - 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
93
   too, and while the actual **work** was easy enough to undo by just
L
Linus Torvalds 已提交
94 95 96
   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
97
   all.
L
Linus Torvalds 已提交
98 99 100 101 102

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
103 104
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
L
Linus Torvalds 已提交
105 106 107
stupid thing.

Then, when it really does turn out to be stupid, people just roll their
108
eyes and say "Oops, he did it again".
L
Linus Torvalds 已提交
109 110 111

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
112
not.  After all, if **they** aren't certain whether it's a good idea, you
L
Linus Torvalds 已提交
113 114
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
115
embark on a big endeavor.
L
Linus Torvalds 已提交
116 117 118 119

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
120
healthy dose of critical thinking on what they do.
L
Linus Torvalds 已提交
121 122 123 124 125

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
126
situation that they just give up.
L
Linus Torvalds 已提交
127 128 129 130 131

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
132
have screwed up on.
L
Linus Torvalds 已提交
133 134


135 136
2) People
---------
L
Linus Torvalds 已提交
137 138

Most people are idiots, and being a manager means you'll have to deal
139 140
with it, and perhaps more importantly, that **they** have to deal with
**you**.
L
Linus Torvalds 已提交
141 142 143

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
144
theirs - and yours.
L
Linus Torvalds 已提交
145 146 147 148 149 150

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
151
no-no according to :ref:`decisions`.
L
Linus Torvalds 已提交
152 153

There's just a few simple rules here:
154

L
Linus Torvalds 已提交
155 156 157 158
 (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
159
"you're a d*ckhead" in millions of different ways [#f2]_, sometimes without
L
Linus Torvalds 已提交
160
even realizing it, and almost always with a white-hot conviction that
161
you are right.
L
Linus Torvalds 已提交
162 163

And the more convinced you are that you are right (and let's face it,
164 165
you can call just about **anybody** a d*ckhead, and you often **will** be
right), the harder it ends up being to apologize afterwards.
L
Linus Torvalds 已提交
166 167

To solve this problem, you really only have two options:
168

L
Linus Torvalds 已提交
169 170 171
 - 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
172
   might even be amused.
L
Linus Torvalds 已提交
173 174 175 176

The option of being unfailingly polite really doesn't exist. Nobody will
trust somebody who is so clearly hiding his true character.

177 178 179
.. [#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.
L
Linus Torvalds 已提交
180 181


182 183
3) People II - the Good Kind
----------------------------
L
Linus Torvalds 已提交
184 185 186 187 188 189

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
190
other people that are less of an idiot than you are.
L
Linus Torvalds 已提交
191

192
Some people react badly to smart people.  Others take advantage of them.
L
Linus Torvalds 已提交
193

194
Make sure that you, as a kernel maintainer, are in the second group.
L
Linus Torvalds 已提交
195 196 197 198 199 200 201 202
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
203
new about "xxx" or seem **extra** managerial by pointing out something the
L
Linus Torvalds 已提交
204 205 206 207 208 209 210
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
211
are doing something irreversible when you **do** prod them in some
L
Linus Torvalds 已提交
212 213 214
direction, just don't push too hard.


215 216
4) Placing blame
----------------
L
Linus Torvalds 已提交
217 218 219 220

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
221
kind of realize that it wasn't **all** your fault.  Which brings us to the
L
Linus Torvalds 已提交
222 223 224 225 226 227
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
228
**in_private** that he screwed up.  Not just so he can avoid it in the
L
Linus Torvalds 已提交
229 230
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
231
face it, it sure ain't you.
L
Linus Torvalds 已提交
232

233
Taking the blame is also why you get to be manager in the first place.
L
Linus Torvalds 已提交
234 235 236
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
237
by now.
L
Linus Torvalds 已提交
238 239


240 241
5) Things to avoid
------------------
L
Linus Torvalds 已提交
242 243 244 245 246

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
247
do a good job.
L
Linus Torvalds 已提交
248 249

We all think we're better than anybody else, which means that when
250
somebody else puts on airs, it **really** rubs us the wrong way.  You may
L
Linus Torvalds 已提交
251
be morally and intellectually superior to everybody around you, but
252 253
don't try to make it too obvious unless you really **intend** to irritate
somebody [#f3]_.
L
Linus Torvalds 已提交
254 255 256 257 258 259 260 261 262 263 264

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
265
have about criticism.
L
Linus Torvalds 已提交
266

267 268 269 270
.. [#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.
L
Linus Torvalds 已提交
271 272


273 274
6) Why me?
----------
L
Linus Torvalds 已提交
275 276 277 278 279 280 281 282

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
283
room door, you **will** get an immense feeling of personal accomplishment
L
Linus Torvalds 已提交
284 285
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
286
as you can.  Everybody will still think you're the person in charge.
L
Linus Torvalds 已提交
287 288

It's a great job if you can hack it.