xref: /OK3568_Linux_fs/kernel/Documentation/process/management-style.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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