The curse of the gifted programmer (2000)
lwn.net
lwn.net
I hang my head in shame at this. I'm lucky, though, that the other members of the D team talked me into using modern tools like github and bugzilla. I'm grateful for that.
P.S. yes, I really did use email as a patch queue and database.
Happy days.
https://libvirt.org/git/?p=libvirt.git;a=blob;f=src/conf/dom...
Fortunately most companies have their stuff in order.
(I assume that isn't what you/that CEO mean though)
(My apologies if this isn't of interest - I'm not trying to be pedantic, but the misusage suggests that English is a not your first language. Most people I know who have learned English as secondary language are interested in these kinds of usage corrections.)
It isn't. I'll try to remember, thank you.
I once saw a guy who wrote a robust e-store web app in C. Not C++, but C. Tons of complexity, and it worked fine, but then when I dived in to work on it, it was a nightmare. He told me "You want main_app.version3.old.c, That's the one that gets compiled and pushed to the production server. Not main_app.c, that one's old and we don't use it anymore." He built a build system from scratch, did his own version control in his head, and kept everything in one monolithic C file.
Of course, he was the shittiest software developer I've ever seen. Just a brilliant programmer. He needed a manager the way a jet needs a pilot. Sadly, he was 30 years my senior, and not amenable to being told what to do, so after a long talk with our CEO, we decided to let him go. He was the only one who knew how our system work, but I built a comparable one using best practices and open-source software in less than a month.
http://git.annexia.org/?p=c2lib.git http://git.annexia.org/?p=pthrlib.git http://git.annexia.org/?p=rws.git http://git.annexia.org/?p=monolith.git
It actually does stuff that even current frameworks cannot achieve, such as providing long-lived stateful web apps entirely in HTML (no JS required), although you are entitled to doubt if that matters these days since JS has won and is available pretty much everywhere.
The best thing about it was that it was so fast, because the code + data of a small web app would fit entirely in the L1 cache of the CPU.
What? This was the norm back in the day. It's not like all those Perl programmers writing CGIs or later PHP programmers writing PHP apps were using JS to tie it all together.
Or am I misunderstanding what you mean?
Of course you can imagine ways for this to fail - restarting the webserver wasn't very nice for your users for example. Also you needed a smart front end which would direct user sessions back to the same web server instance. (And since it used cooperative threads, each core would be running a separate web server -- but this was 15 years ago when multicore machines were not too common).
Also I think it's worth saying that I'm not trying to belittle your accomplishment, as it may have come across that way. Writing your own framework in the language you used to handle logic proved to be somewhat prescient of you, it's what numerous other projects ended up doing (Rails, Mojolicious, etc) for multiple reasons, which I'm sure you were able to take advantage of. I remember my own tests using ApacheBench ca. 2005 to test simple CGI performance vs mod_perl performance vs PHP vs Perl's HTTP::Daemon implementation with forking. When the workload is small, and the routing needs are simple, it's amazing how much overhead the webserver includes.
It was possible to write safe code in that framework, and in fact we did write a lot of code used daily by tens of thousands of UK schoolchildren until quite recently.
[1] Invoking https://en.wikipedia.org/wiki/Greenspun's_tenth_rule although I like to think our code was very minimal, elegant and not too buggy.
Attempting to write a web framework in C is great!
Even though you end up building the high-level programming constructs, C web dev is still just too hard compared to other alternatives. Because of this it is not possible to build a large community around it, which I would say is the most crucial part of today's web framework like Django/Rails.
Hey, I wrote my first CGI script in Pascal, so I know it's not impossible. And nothing I've written since then has been so fast. ;-)
But so much stuff like GZIP delivery, POST parsing, cookies, etc will require you to write enormous functions, with countless "gotcha" edge cases, just to reinvent the wheel.
Using it in production for anything complex (like a web store selling digital downloads), is just nuts.
It's also so bad at expressing literal values that I've seen a serious recommendation to write literal strings and parse them instead ( http://www.tedunangst.com/flak/post/string-interfaces ).
The type system doesn't even do generics, never mind higher kinds. Maybe you could keep a web framework small enough that that wouldn't be too big a deal.
It's worth noting that another web framework I wrote a couple of years later was written in OCaml[1].
[1] https://savannah.nongnu.org/projects/modcaml - also dead upstream, and there are now much better choices for OCaml web apps.
Curse Of The Gifted (2000) 606 points
luu 2 years ago 365 comments
https://news.ycombinator.com/item?id=7219872 Eric S. Raymond - The Curse of the Gifted (2000) 243 points
vinutheraj 6 years ago 59 comments
https://news.ycombinator.com/item?id=1167754 The curse of the gifted programmer (ESR's email to Torvalds) 95 points
semmons 6 years ago 38 comments
https://news.ycombinator.com/item?id=1221756It's interesting to compare the quality of discussion over the years. In this case, I think the more recent ones come out looking pretty good.
The first two comments on this thread were definitely snarkier and more aggressive. Part of me thinks there were advantages to the earlier culture of HN, though. People were more likely to be challenged on their statements, and forced to defend their beliefs.
> When you were in college, did you ever meet bright
> kids who graduated top of their class in high-school
> and then floundered freshman year in college because
> they had never learned how to study?
Yeap. I also met a few who thought they were smart, then gained a secret terror that they were secretly stupid because they found CS hard.Some things you have to work at before you learn them.
What a thing!
ESR might have been wrong on the specific item at hand (I have not read the whole thread, and he, ESR was wrong on a lot of things over the years) but some of his arguments are definitely right - at least seen from a "gifted something" who flopped in uni ;)
Personally, for years I had been completely ignoring everybody who framed something as "a better alternative to talent" (wtf?) or said the magic words "you are smarter than me". They correlated too well with "stupid ideas I knew (or quickly checked) to be wrong".
Nowadays I'm trying to fish for useful information even in messages which push my bullshit-o-meter out of scale, but it takes work.
If you want to maximize your chance of being treated seriously, stick to constructive arguments about the problem at hand, not some generic unfalsifiable wisdom.
Of course, there's a fine line between stroking and patronizing, though.
It works until you get to those with really big egos who take pride in dismantling such tricks and gaming others by pretending to fall for their games. These need higher levels of gaming.
But in the end, if you truly think that something is a good idea for everyone involved, just explain why.
If this exchange, or a similar one, had not taken place, would things be the way they are today? Or would the predictions of this email have come to fruition?
I suspect that if I were even a little dumber (and mind you: I'm bright, but not that bright, ya know?) I'd probably be homeless instead of doing pretty damn well as a developer. Then again, maybe I'd be better motivated if couldn't achieve 7-8/10 results on a 5/10 level of effort. Only trouble is when I need to hit 9 or 10 on a deadline...
Weird thing is, I have a phenomenal work ethic on projects that involve physical labor, and not just the purely mindless kind, provided I'm not the only one working on the project—if it's solely up to me to start it and follow through on my own, it won't happen until I have one of my "I feel like I can conquer the world!" days when I inexplicably feel full of energy and confidence and motivation, and I only get those a handful of times a year. Anyway, point is, that tells me it's not some pervasive defect in my very being. I can have a great work ethic, without even trying, really, under the right circumstances, and I feel good when I do—I don't work grudgingly in those cases.
Curious if you've observed similar things in yourself.
As for modifying my behavior and fighting laziness: I've found I've gotten a bit better at this naturally as I've grown older (now early 30s) and sometimes actually win the battle of wills with myself, but my main insight has been that if I'm serious about something I must engineer my environment for success. Sorry to say it, but if other things are taking up time you want to spend on something else, your best solution may be to mercilessly eliminate distractions as you find them while also making it easier to choose to do the things you wish you would do by putting the tools and materials you need (if any) somewhere convenient. Like, sell-your-gaming-computer/consoles—pretty extreme. Or at least put them somewhere really out of the way. Maybe find some way to unplug it all and stick it in a closet, and always put it back when you're done.
It's tough, but it works.
Given this discovery, I dream of a world where I can live in one house engineered for learning and productivity most of the time and another with all the distractions I enjoy the rest of the time. If only houses weren't so expensive, heh.
Short of that, you can commit to only engaging in your distractions in the best possible way. "I can watch movies or TV or play video games, but only ones of high artistic merit or great significance". "If I want to switch windows away from work and read crap on my laptop, that 'crap' must be a classic from Project Gutenberg." "If I pull out my phone for no immediate purpose, the only thing I can do is run through flash cards, or Duolingo". That kind of thing. It's usually harder (though far from impossible) to over indulge with restrictions like that in place, provided you can stick to it—such media is chewier, less addictive. Doesn't make you feel as bad afterward. Steak and asparagus versus cotton candy.
For my part, HN will probably have to go soon, and I may start unplugging my Internet a few days a week. I'll have to experiment with the latter, we'll see how it goes.
Everything you said rings true with me. From the effort/result ratio to waiting for the "feeling" to get things done all the way to the age.
I've been thinking about ways to fix this, though, I'm more looking into figuring out why I behave this way rather than how I can work around it.
Seems to me like, this type of behavior stems from the childhood (up until college) where being a relatively smart person allows one to keep afloat (and even shine sometimes) without spending much effort.
Then you hit college and you face the fact that you have to put the effort in, you can't just get by anymore. You sorta learn to struggle through a bit of "learning how to study" but still not at the level where you feel like you owned your studies, more like enough to get back to that 8/10 result on average. Put simply, you are now doing 5/10 effort for 8/10 results while it used to be 1-2/10 effort for the same result.
Then you move on to the real world (tm) where the effort is sometimes just as important as the result. Even if that's not the case for you, you just realize 8/10 results are sometimes not enough (for your employer, for personal satisfaction, for whatever reason).
This, combined with the fact that your pride now firmly lies in your level of intelligence, makes self-improvement really hard. How? First, you don't wanna do the easy stuff, because, well it's not worth your intelligence; so you dream of doing the hard stuff. Reading complicated books, learning a new language what have you. Then, you start unconsciously delaying doing/learning the hard stuff. You only do those if it's part of your job so you have to. You delay it, I think, because the fact that you may not accomplish those deeds in the short amount of time you think you should, proving yourself that you're not as smart as you think you are. That, is like the ghost at the end of the dark hallway. You don't even wanna risk getting into that state of mind. "I just don't have the time" or "I really haven't spent much effort on this" is a much better excuse for you than "I'm just not smart enough. Need to work harder/longer on this".
Don't know if that's the case for you, but it feels like it is for me. I'm trying to let myself go to fix this basically. It's okay to not be brilliant. It's okay to fail, make mistakes, suck at certain things while being just okay at other things. There is no implicit need to be excellent at everything you do. More importantly, "too proud to be dumb" is a bad mindset to be in. Even if you are as smart as you think you are, you are not fully utilizing your capacity by restricting yourself due to a fear of slightest failure/mistake.
That said, the ideas that you are trying sound interesting. Maybe they could also help taming this subconscious beast by my conscious idealist.
> Seems to me like, this type of behavior stems from the childhood (up until college) where being a relatively smart person allows one to keep afloat (and even shine sometimes) without spending much effort.
> Put simply, you are now doing 5/10 effort for 8/10 results while it used to be 1-2/10 effort for the same result.
Oof, yeah. It wasn't until years later that I realized my primary and secondary school experiences had led me to categorize having to study to understand something both as a kind of failure and as something akin to cheating, of all things. It's not a way of thinking I'd settled on consciously and not something I'd have framed in those terms until I spent some time reflecting on my thoughts, but sure enough, that was what my stupid, stupid mind had been doing. Totally bizarre.
> This, combined with the fact that your pride now firmly lies in your level of intelligence, makes self-improvement really hard. How? First, you don't wanna do the easy stuff, because, well it's not worth your intelligence; so you dream of doing the hard stuff. Reading complicated books, learning a new language what have you. Then, you start unconsciously delaying doing/learning the hard stuff. You only do those if it's part of your job so you have to. You delay it, I think, because the fact that you may not accomplish those deeds in the short amount of time you think you should, proving yourself that you're not as smart as you think you are. That, is like the ghost at the end of the dark hallway. You don't even wanna risk getting into that state of mind.
I get that. I also have to watch myself very carefully or I'll end up making lists and ranking things and researching and never actually do the activity those actions are supposed in service of.
> "I just don't have the time" or "I really haven't spent much effort on this" is a much better excuse for you than "I'm just not smart enough. Need to work harder/longer on this".
Bingo.
> Don't know if that's the case for you, but it feels like it is for me. I'm trying to let myself go to fix this basically. It's okay to not be brilliant. It's okay to fail, make mistakes, suck at certain things while being just okay at other things. There is no implicit need to be excellent at everything you do. More importantly, "too proud to be dumb" is a bad mindset to be in. Even if you are as smart as you think you are, you are not fully utilizing your capacity by restricting yourself due to a fear of slightest failure/mistake.
My approach to fighting this lately has been to deliberately seek things I know I'm awful at and work on them at least until I see improvement. Pick up a new instrument, write a program unlike anything I'm familiar with, take dancing lessons (coming up this Summer!). Eventual mastery isn't the point—just improvement. I know you're supposed to specialize in this modern economy of ours and just keep improving skills you're already good at, but I need this kind of thing, I think. It's like failure therapy.
Quite the opposite, it seems it was an opinion evolved through experience.
https://lkml.org/lkml/2000/8/22/52
Linus point was apparently about avoiding crappy interfaces when one goes about having common code just because it looks like they do the same thingy. He seems mindful enough that sharing code is hard.
https://lkml.org/lkml/2000/8/23/47
On the contrary, a raw talented engineer would usually jump into the opportunity to refactor and share common code, without realizing when the challenge is above one's ability.
In this aspect, even a few decades of experience in software (fragmented in many separate projects) can be less valuable than a single 5 year stretch in the same code base.
http://www.sandimetz.com/blog/2016/1/20/the-wrong-abstractio...
I feel like I've had the issue he describes happen to me in multiple facets of life, at different points.
College? Check - There definitely was a point where I couldn't cruise and catch up by cramming. High school was a joke in comparison with some of the learning challenges I finally encountered.
Task management? Hah! Todo lists are for old people. I cruised by on this one for a LONG time due to (at least my own perceived) pretty large short-medium term memory before personal life + work life (and moving up the chain) meant that there's no way I'd remember everything that needed tending to unless I adopted some sort of system.
More guilty one? Tests. For better or for worse, I worked professionally in an environment where we a) had a compiler, b) had a QA group, and c) managed to put out a lot of working software without a test suite. It definitely made me finally give in to "code should have at least SOME test suite, if not a pretty comprehensive one" after much kicking and screaming. To this day, in my mind, I harbor feelings that it's possible to pump out largely working (i.e. with a defect rate not much worse off than any other project, because no software is without any) software incredibly faster and make the users/customers/people who wanted the thing built happy WITHOUT writing tests. That said, I also know it's completely irresponsible and not scalable to do so.
That's something that doesn't happen automatically. If you approach tests as something you have to do because somebody told you to, and I think this is pretty common, then your tests are probably not going to be great, and it's not going to help your code...
But if a team really takes to heart the whole principle of testing, and start to design things with testing in mind... then they start to ask questions up front like "how will we really know that this works?" and "how can we isolate this component so that we can test it independently?" and "how can we write fast tests for this?" and "can we make this into more of a pure, simple data structure?" and so on and so on.
Especially this one: "How can we get the important business logic here to be a clear and distinct module with verifiable correctness?"
And that's a cascade of wonderful benefits. Enforcing a culture of "you must write tests" might possibly help with QA, especially in the more obvious cases of algorithmic correctness, but the true benefits are so much deeper.
https://lkml.org/lkml/2000/8/22/12 (quote from Linus' post)
`It's true that "simple and tested code means less bugs". And quite often, code sharing will imply that the code gets (a) more complex and (b) has cases that people who make changes will never be able to test.
No, I'm not saying that sharing is bad. Sharing is good. But anybody who makes a blanket statement like "sharing reduces bugs" is full of crap.
Good and clear interfaces reduce bugs. Avoiding complexity reduces bugs. Using your brain before you code something up reduces bugs.
But making a very complex driver that handles ten different variations on the same hardware? No. That does _not_ reduce bugs. It's quite often more efficient to have two people work on two drivers that are independent of each other, than to have two persons working on the same driver. Alan put it well at some point: the way to create working open source software is to minimize the amount of communication needed.`
I think he's veeeeery reasonable in this. This reminds me "Wrong Abstraction" article. https://news.ycombinator.com/item?id=11032296 Sometimes it is better to create two separate things than create some weird obscure abstraction which cover all the cases.
Problem is people's approach to your gifts, first; your parents. If they say continuously that you are gifted, very smart, very beautiful, adorable etc and you can do anything you want because you are so smart, you are most likely doomed later in life.
Now, my step-son about to finish high school. His mother, always complimented him starting from kindergarten. He was smart all along, did all problems from his mind easily without much effort. His parents and teachers complimented him everyday. He was happy, and proud of himself to be smart, his parents were also proud.
High school required more disciplined work. He couldn't make it, too many distractions around. He was thought to be a very special person when he grow up, but now, he is below average, and sadly, he accepts that even though he had the potential. I see how he will fail more in college, and can't help.
My only difference from him was that he is failing in high school, I failed in university.
I have a small daughter, 4 years old, and I am afraid as hell not to spoil her. She looks very smart and gifted. I always say she is not gifted, she is just normal. I don't want her to be very special person when she grow up, I want her to be happy and healty, that's all. Only thing I am trying to do is not to say her that "she is gifted, she is very smart".
I don't know how to solve his brother's problem. Looks it is very late.
> I see how he will fail more in college, and can't help.
> My only difference from him was that he is failing in high school, I failed in university.
Help yourself first, man. Figure out how to beat your own distractions. Reach your potential. You can do it, and then your example will inspire him (or at least show him the way). You owe it to your son, and you owe it to yourself.It's not a "You are talented or not". Sure some people start out with an advantage but everyone has to hone their skills through practice and effort.
It sounds like the kids hit high school, and you're already like "it's too late for'im, he's doomed!" That's quite the rough judgement to pass on someone who is still happy about growing some pubes. That has happened to me, and I'll tell you, it's no fun.
Second, academic skills aren't all that different from any other skills. Some people have picked them up by accident, some got them from their parents, and some idiots thought that gifted kids don't need these things, and we didn't protest either, because we were smart beyond our years, not wise. Thing is, you look at what the kids that get it right do, and you can pick them up within a couple of months. Cal Newport[0] wrote some decent books on it, mostly based on studying honours fraternity students and their study habits.
Third, don't make the kid feel inadequate because he lacks those skills. Being treated as the prodigal prodigy isn't a fun place to be, and really, what is he missing? Educational pedigree isn't all what it's hyped up to be any more. Tech people are increasingly self taught, and other industries that still rely on degrees to do the weeding are cutting left and right. Paralegals? Poof. Traders? Poof.
So what's there to be afraid of? Challenge your step-son, demonstrate to him the need to pick up those skills, and he'll probably figure it out. Show your support for him. You've already singled him out from the other 90% of kids, might as well help him get to the fun end of the bell curve.
A book won't change a person's life, but https://books.google.is/books/about/The_Adventures_of_Johnny... is a short manga (might not be suitable for the 4-year old but maybe the university student). Lesson 4 is "Persistence trumps talent.".
A summary of the lessons in the book : http://www.danpink.com/2013/05/the-6-essential-lessons-of-a-...
Short version: I failed my "high school exams" after coasting for so long I didn't know how to learn. I became afraid of trying in case I failed. So I didn't try and embraced failure. Worked as a chef for long hours and little money.
Turns out it's never too late to take control of your life and do something else. I went to uni at 23 via a foundation course (requiring no exams). I got a good job, am working towards a professional qualification and was sponsored through an MSc.
It's never too late, but it is often to early to reach your potential
My brother's a smart kid too. He ended up getting the lowest grades in living memory at our school, totally bombed high school.
Now he's finishing a CS degree at Columbia.
Going over it, he told me he never saw me study anything. I went off to Oxford before him, and he figured he'd do what I did. (What he didn't see was my late night homework sessions.) Only after many years did he get his act together.
Learning is really only about effort. You get a lot of people pretending it's easy so they can get that "smart" label, even through college. Don't let them fool you. Remember there's nothing at all, all the way through college, that isn't public knowledge that you can acquire just by reading and trying for yourself.
https://news.ycombinator.com/item?id=7219872
And here is a good comment:
https://news.ycombinator.com/item?id=7220508
From it: "Eric writes using vague generalizations about age and experience; Linus writes with specifics about his experience with the kernel."
And: "Also, compare this message from Linus earlier in that thread https://lkml.org/lkml/2000/8/22/52 with a post of his from yesterday: https://lkml.org/lkml/2014/2/10/575, especially regarding abstraction."
I've seen a few people go through this process (and experienced it myself) at various stages in their careers and everyone has a rough patch after hitting that wall. Eventually they admit that what they've been doing is no longer working, and they become better engineers because of it. But it's tough when you're in the middle of it, and for a while your work definitely suffers.
The specifics matter a lot here. ESR was trying to get his patchset for his rather complex configuration/menu language into the kernel (to be used to configure kernel configs/options) which seemed to have to do more with ESR's need to be perceived as a "kernel hacker" rather than any concrete problem. Fortunately, Linus said no. ESR responded with some weird tirade which had nothing to do with the matters being discussed. Luckil
If you're a "lone gunman" you'll have to accept you're limiting yourself to things you can make in your available, very limited time.
1) A truck that was as impossible to destroy as it was hated
2) I never really heard what they were fixing, I did hear a lot of cuss words referring to said item.
Just before I joined, the CEOs nerves had taken a bad hit when CTO had power cable to only laptop with source for product stretched out at ideal tripping height, he runs to get something, trips over cable, smashes laptop...
Mind you he destroyed my nerves as well... <sigh>
Edit: Prize to anyone who can guess how "Deployment by RAID" worked...
What if you only have on site production servers? :-)
1. Upload files/binaries/assets to a single server 2. Yank out one of the hard drives from the RAID array 3. Insert new HDD and wait for the array to rebuild 4. Goto 2
Maybe not every one of us is a hugely gifted reserve of untapped potential. Maybe some of us are just people with shitty habits and a reluctance to change.
Pete Carroll preach about it and emphasize it in his team. Elon Musk also talked about the usefulness of sound fundamentals when it comes to learn about any fields of knowledge.
> It's a stupid lie, and one we should ignore at all times it comes up.
> Make good interfaces. THAT will reduce bugs.
Showing that Linus is abrasive, but he's also right.It never did and he never grew up. LOL.
He mentioned code sharing and using his inbox as a queue, was this pre-source control? Stupid question, but does anyone have any context to what it was like when this was written?
I would also point that people focus on snarky comments but forget how much value the commenters bring. If you can't equal that just shut up and listen.
There's a reason why women are leaving tech in droves and why there aren't as many African or Latino engineers. The very people who are toxic are often blind to the fact themselves. How many more fine African American engineers being driven out because they couldn't bear the micro-aggression from caucasian workers?
> You are a brilliant implementor, more able than me
> the best one in the Unix tradition since Ken Thompson himself
> genius that you are
> You're our chosen benevolent dictator and maybe the second coming of Ken
> we respect you and like you
If someone said things like that about me, I would be very, very happy.ESR's email conveys strong negative feedback—as Linus needed—and in the most deeply respectful and complimentary way I've ever seen in an "email rant". Especially from ESR lol. It's very clear that he means it from a heartfelt place and intends it to be productive.
If you read that email and feel snark from it, that's projection on your part, and it speaks to an uncomfortability with criticism in your world view. You might find life happier if you see that people give negative feedback not to shit on you or snark, but because they care and want to see you succeed.
These days, now that people define themselves, people will have their identities wrapped up in the things they make and do. In that case, I'm not sure there's a simple way to keep things from getting personal. That's a job for a rabbi, priest, pastor, mentor, or counselor, not a boss or coworker.
See also: discussing politics, money, diet, weight, etc.
And, yes, I'm disappointed to come to that conclusion. It seems to mean that we have to continually "handle", patronize, and manipulate people for the greater good. I'd rather treat everyone with respect and transparency. I also think I'm not particularly good at dissembling.
I do have a large development team I'm overseeing and every fucking time it's some old dinosaur on the team saying shit like Linus , 'back in my day you werent even born'. Well of fucking course. This just shows how out of touch the previous generation of developers are with the newer generation. I'm glad that 50+ old engineers are no longer around and have tough time getting hired. Frankly people born out of post-Sputnik all share this kind of high mightyness I'm seeing in the industry, shunning all new conventions for rigid old values.
Software is about concensus folks, it's not a follow the leader to the cliff. That's North Korea.
I think in most cases like these, where people are offended by criticism, the problem is primarily a mismatch of social expectations, rather than either party being obnoxious or thin-skinned.
That said, in this case I tend to agree that ESR is doing an fairly good job at presenting his criticism in a constructive way, and it's certainly not too aggressive for Torvalds of all people.
Eric wasn't shitting on Linus. He was damning with high praise -- telling him that he was so damned smart, eventually it would bite him in the ass unless he adopted practices that normal programmers needed just to manage. Were I to receive such a message I would feel simultaneously chuffed and challenged.
Anyway, Linus could take it -- he's certainly dished out worse.
Tumblrina culture has made it taboo to actually criticize anyone with stern words -- unless you are calling them out for perceived racism, sexism, or some other breach of political orthodoxy.
So, criticizing people based on sex, race, and politics shouldn't be perceived as taboo? We blame Marissa for buying Tumblr? What kind of logic is that?