Linux kernel management style¶
This is a short document describing the preferred (or made up, dependingon who you ask) management style for the linux kernel. It’s meant tomirror theprocess/coding-style.rst document to somedegree, and mainly written to avoid answering[1] the same (or similar)questions over and over again.
Management style is very personal and much harder to quantify thansimple coding style rules, so this document may or may not have anythingto do with reality. It started as a lark, but that doesn’t mean that itmight not actually be true. You’ll have to decide for yourself.
Btw, when talking about “kernel manager”, it’s all about the technicallead persons, not the people who do traditional management insidecompanies. If you sign purchase orders or you have any clue about thebudget of your group, you’re almost certainly not a kernel manager.These suggestions may or may not apply to you.
First off, I’d suggest buying “Seven Habits of Highly EffectivePeople”, and NOT read it. Burn it, it’s a great symbolic gesture.
[1]This document does so not so much by answering the question, but bymaking it painfully obvious to the questioner that we don’t have a clueto what the answer is.
Anyway, here goes:
1) Decisions¶
Everybody thinks managers make decisions, and that decision-making isimportant. The bigger and more painful the decision, the bigger themanager must be to make it. That’s very deep and obvious, but it’s notactually true.
The name of the game is toavoid having to make a decision. Inparticular, if somebody tells you “choose (a) or (b), we really need youto decide on this”, you’re in trouble as a manager. The people youmanage had better know the details better than you, so if they come toyou for a technical decision, you’re screwed. You’re clearly notcompetent to make that decision for them.
(Corollary:if the people you manage don’t know the details better thanyou, you’re also screwed, although for a totally different reason.Namely that you are in the wrong job, and thatthey should be managingyour brilliance instead).
So the name of the game is toavoid decisions, at least the big andpainful ones. Making small and non-consequential decisions is fine, andmakes you look like you know what you’re doing, so what a kernel managerneeds to do is to turn the big and painful ones into small things wherenobody really cares.
It helps to realize that the key difference between a big decision and asmall one is whether you can fix your decision afterwards. Any decisioncan be made small by just always making sure that if you were wrong (andyouwill be wrong), you can always undo the damage later bybacktracking. Suddenly, you get to be doubly managerial for makingtwo inconsequential decisions - the wrong oneand the right one.
And people will even see that as true leadership (cough bullshitcough).
Thus the key to avoiding big decisions becomes to just avoiding to dothings that can’t be undone. Don’t get ushered into a corner from whichyou cannot escape. A cornered rat may be dangerous - a cornered manageris just pitiful.
It turns out that since nobody would be stupid enough to ever really leta kernel manager have huge fiscal responsibilityanyway, it’s usuallyfairly easy to backtrack. Since you’re not going to be able to wastehuge amounts of money that you might not be able to repay, the onlything you can backtrack on is a technical decision, and thereback-tracking is very easy: just tell everybody that you were anincompetent nincompoop, say you’re sorry, and undo all the worthlesswork you had people work on for the last year. Suddenly the decisionyou made a year ago wasn’t a big decision after all, since it could beeasily undone.
It turns out that some people have trouble with this approach, for tworeasons:
admitting you were an idiot is harder than it looks. We all like tomaintain appearances, and coming out in public to say that you werewrong is sometimes very hard indeed.
having somebody tell you that what you worked on for the last yearwasn’t worthwhile after all can be hard on the poor lowly engineerstoo, and while the actualwork was easy enough to undo by justdeleting it, you may have irrevocably lost the trust of thatengineer. And remember: “irrevocable” was what we tried to avoid inthe first place, and your decision ended up being a big one afterall.
Happily, both of these reasons can be mitigated effectively by justadmitting up-front that you don’t have a friggin’ clue, and tellingpeople ahead of the fact that your decision is purely preliminary, andmight be the wrong thing. You should always reserve the right to changeyour mind, and make people veryaware of that. And it’s much easierto admit that you are stupid when you haven’tyet done the reallystupid thing.
Then, when it really does turn out to be stupid, people just roll theireyes and say “Oops, not again”.
This preemptive admission of incompetence might also make the people whoactually do the work also think twice about whether it’s worth doing ornot. After all, ifthey aren’t certain whether it’s a good idea, yousure as hell shouldn’t encourage them by promising them that what theywork on will be included. Make them at least think twice before theyembark on a big endeavor.
Remember: they’d better know more about the details than you do, andthey usually already think they have the answer to everything. The bestthing you can do as a manager is not to instill confidence, but rather ahealthy dose of critical thinking on what they do.
Btw, another way to avoid a decision is to plaintively just whine “can’twe just do both?” and look pitiful. Trust me, it works. If it’s notclear which approach is better, they’ll eventually figure it out. Theanswer may end up being that both teams get so frustrated by thesituation that they just give up.
That may sound like a failure, but it’s usually a sign that there wassomething wrong with both projects, and the reason the people involvedcouldn’t decide was that they were both wrong. You end up coming upsmelling like roses, and you avoided yet another decision that you couldhave screwed up on.
2) People¶
Most people are idiots, and being a manager means you’ll have to dealwith it, and perhaps more importantly, thatthey have to deal withyou.
It turns out that while it’s easy to undo technical mistakes, it’s notas easy to undo personality disorders. You just have to live withtheirs - and yours.
However, in order to prepare yourself as a kernel manager, it’s best toremember not to burn any bridges, bomb any innocent villagers, oralienate too many kernel developers. It turns out that alienating peopleis fairly easy, and un-alienating them is hard. Thus “alienating”immediately falls under the heading of “not reversible”, and becomes ano-no according to1) Decisions.
There’s just a few simple rules here:
don’t call people d*ckheads (at least not in public)
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“you’re a d*ckhead” in millions of different ways[2], sometimes withouteven realizing it, and almost always with a white-hot conviction thatyou are right.
And the more convinced you are that you are right (and let’s face it,you can call just aboutanybody a d*ckhead, and you oftenwill beright), the harder it ends up being to apologize afterwards.
To solve this problem, you really only have two options:
get really good at apologies
spread the “love” out so evenly that nobody really ends up feelinglike they get unfairly targeted. Make it inventive enough, and theymight even be amused.
The option of being unfailingly polite really doesn’t exist. Nobody willtrust somebody who is so clearly hiding their true character.
[2]Paul Simon sang “Fifty Ways to Leave Your Lover”, because quitefrankly, “A Million Ways to Tell a Developer They’re a D*ckhead” doesn’tscan nearly as well. But I’m sure he thought about it.
3) People II - the Good Kind¶
While it turns out that most people are idiots, the corollary to that issadly that you are one too, and that while we can all bask in the secureknowledge that we’re better than the average person (let’s face it,nobody ever believes that they’re average or below-average), we shouldalso admit that we’re not the sharpest knife around, and there will beother people that are less of an idiot than you are.
Some people react badly to smart people. Others take advantage of them.
Make sure that you, as a kernel maintainer, are in the second group.Suck up to them, because they are the people who will make your jobeasier. 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. Yourmanagement responsibilities largely become ones of saying “Sounds like agood idea - go wild”, or “That sounds good, but what about xxx?”. Thesecond version in particular is a great way to either learn somethingnew about “xxx” or seemextra managerial by pointing out something thesmarter person hadn’t thought about. In either case, you win.
One thing to look out for is to realize that greatness in one area doesnot necessarily translate to other areas. So you might prod people inspecific directions, but let’s face it, they might be good at what theydo, and suck at everything else. The good news is that people tend tonaturally gravitate back to what they are good at, so it’s not like youare doing something irreversible when youdo prod them in somedirection, just don’t push too hard.
4) Placing blame¶
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 peoplekind of realize that it wasn’tall your fault. Which brings us to thebest way of taking the blame: do it for someone else. You’ll feel goodfor taking the fall, they’ll feel good about not getting blamed, and theperson who lost their whole 36GB porn-collection because of yourincompetence will grudgingly admit that you at least didn’t try to weaselout of it.
Then make the developer who really screwed up (if you can find them) knowin private that they screwed up. Not just so they can avoid it in thefuture, but so that they know they owe you one. And, perhaps even moreimportantly, they’re also likely the person who can fix it. Because, let’sface it, it sure ain’t you.
Taking the blame is also why you get to be manager in the first place.It’s part of what makes people trust you, and allow you the potentialglory, because you’re the one who gets to say “I screwed up”. And ifyou’ve followed the previous rules, you’ll be pretty good at saying thatby now.
5) Things to avoid¶
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. Thefirst you can apologize for, the second one you won’t really get thechance. They likely will no longer be listening even if you otherwisedo a good job.
We all think we’re better than anybody else, which means that whensomebody else puts on airs, itreally rubs us the wrong way. You maybe morally and intellectually superior to everybody around you, butdon’t try to make it too obvious unless you reallyintend to irritatesomebody[3].
Similarly, don’t be too polite or subtle about things. Politeness easilyends up going overboard and hiding the problem, and as they say, “On theinternet, nobody can hear you being subtle”. Use a big blunt object tohammer the point in, because you can’t really depend on people gettingyour point otherwise.
Some humor can help pad both the bluntness and the moralizing. Goingoverboard to the point of being ridiculous can drive a point homewithout making it painful to the recipient, who just thinks you’re beingsilly. It can thus help get through the personal mental block we allhave about criticism.
[3]Hint: internet newsgroups that are not directly related to your workare great ways to take out your frustrations at other people. Writeinsulting posts with a sneer just to get into a good flame every once ina while, and you’ll feel cleansed. Just don’t crap too close to home.
6) Why me?¶
Since your main responsibility seems to be to take the blame for otherpeoples mistakes, and make it painfully obvious to everybody else thatyou’re incompetent, the obvious question becomes one of why do it in thefirst place?
First off, while you may or may not get screaming teenage girls (orboys, let’s not be judgmental or sexist here) knocking on your dressingroom door, youwill get an immense feeling of personal accomplishmentfor being “in charge”. Never mind the fact that you’re really leadingby trying to keep up with everybody else and running after them as fastas you can. Everybody will still think you’re the person in charge.
It’s a great job if you can hack it.