11 ms·
> A “No Jerks” Policy Must Be Built Into Your Culture. It is entirely possible to be extremely passionate (and even brilliant) without being a jerk. A “no jerk
by abraae 10y ago
> A “No Jerks” Policy Must Be Built Into Your Culture. It is entirely possible to be extremely passionate (and even brilliant) without being a jerk. A “no jerks” policy must be preached and practiced from the highest levels.
Following simplistic rules like this is usually what leaves us knee deep in the proverbial.
Maybe I've been lucky, but I've never worked with anyone who's as much of a jerk as described in the article. In my experience, talented developers are usually intelligent enough that they can make up for their shortcoming in the social area by consciously adapting their behaviour. They're not "normal" but they function well enough to work with others.
I've worked with plenty of jerk-ish, abrasive, opiniated, "take no prisoners" people who can be very fiery in meetings and can be highly critical of other people's work. Yes, they can be a giant pain in the arse - they're just so damn challenging. But in my experience they're normally challenging because they want the company to do better.
But I've seen many times (mainly in large companies) teams that were populated and led by people who were very consensus-based, had superb social skills, and had a genuine drive to succeed - but didn't because there was not enough fire in the team to make the right choices.
To me, the business of software development is way too complex to apply a simple "no jerks" policy. Brilliant jerks are often to be found at the beating heart of successful software.
- Waterluvian 10y agoHey that's me! I had a frustrating moment the other day where a colleague said that float(5) was more explicit and personally preferred in Python than a literal 5.0 I realised I was being pedantic but I genuinely believed in "good craftsmanship" when I really pushed him to change it. I need to get better at this because the social friction I caused may cost more than the poor craftsmanship. But the other part of me is thinking, "c'mon man... Seriously?"
- andreyz4k 10y agoBy the way, float(5) is slower, because it creates two objects instead of one.
- Waterluvian 10y agoI pointed that out but also immediately conceded they it doesn't matter since it was instantiated once at runtime. Which is why I call it craftsmanship. It works the same for all intents and purposes, but c'mon. :)
- hermitdev 10y agoOne of my pet peeves in C++ is seeing: std::string s = ""; It causes calls to strlen and potentially memory allocations. Just use the default constructor!
- MereInterest 10y agoAbsolutely agreed that the default constructor is better style, but won't it be optimized down to the same code anyways?
- sqeaky 10y agoIt used to, but it doesn't anymore, presuming you use a reasonably recent compiler. If you enable optimizations the assembly for that snippet and the default constructor are identical, I last checked on some GCC 5 flavor, but I think it was like this all the way back in GCC 3 something. Compilers can do some pretty fancy things with literals because they know they optimize constants known at compile time.
- hermitdev 10y agoI just started using GCC 5.4 - I'll have to check again. Last I checked was around 4.8, and it was still generating sub optimal code with the empty literal.
- sqeaky 10y agoEnabling the optimizations is important too. If you leave it on the defaults it does a very direct translation to machine code. GCC 7 is available for use now.
- basking2 10y agoI've found the first few chapters of _Crucial Conversations_ extremely useful. Manager-Tools.com speaks very well to relationships being very valuable, worth more than float(5) vs 5.0... though... I really do agree. Float(5)? Really? And 5 should be replaced with IntNoReallyItJustAnInt(5)?? ;)
- flamedoge 10y agoYou don't use Boolean.ToString(b).Equals("true") ?
- throwanem 10y agoWe all have that part. The trick is not to let it make you an asshole. There might be times when that's the right thing to be - satisfying a pedantic quibble over a style preference, to the detriment of morale and team cohesion, is never, ever one of them.
- maineldc 10y agoI have found that it's best to leave coding discussions like that to tools - we use Rubocop and Overcommit and it's a huge PITA every time it points out a minor quibble (we stop commits locally on our machines if new code doesn't pass both) BUT it saves us from having those conversations during code reviews. My general rule of thumb is that if there is a question of style that isn't caught by Rubocop, then it's very likely not worth having. The other upside is that code reviews are higher quality and design focused.
- ktRolster 10y agoI'll be honest, it's pretty hard to see how it matters much either way.
- bigdataanswers 10y agoIsnt this a very python thing. Arent all the "brillant jerks" python and ruby programmers. Java and C/C++ guys are the actually smart dudes that know what they are doing and PHP guys just want to get it working and dont give a fuck.
- mudbutt 10y agoI can't imagine any smart developers using Ruby anyone, I know because I unfortunately work with Rails and anyone with a brain cell has already left. To me deciding to use Rails isn't a very smart decision
- paulddraper 10y agoYeah, idiot GitHub programmers.
- ktRolster 10y agoWhat would you use? Serious question, I'm trying to figure this out.
- zeveb 10y agoYour colleague is clearly wrong. Seriously, 'coërce the integer five to floating point' vice 'the floating point number 5.0'? Does he also prefer to right integers as 'int(float(5))'? The mind boggles, it really does.
- antisthenes 10y agoIt wouldn't even enter my mind to argue about something so trivial. Then again, I'm not a software developer (even though I did write some Python scripts for my workflow in the past).
- falsedan 10y agoThis one's tricky, because you're absolutely right, and telling them that won't help them improve. Try asking them, "hey I must have not read that PEP, can you link me to where that's recommended so I can get in sync?", or "hey I read this guide recently and it recommends doing X because <actual legitimate reasons>", or (best), "I don't understand why this is recommended, where can I learn more" (which hopefully doesn't end up on a holistic learn-the-world journey that ends with a 1-to-1 with your boss where you share your concerns about this developer's performance). "Good craftsmanship" is both subjective AND hard to relate to an increase business value. Better to stick with third-party recommendations, like textbooks or linters.
- quotemstr 10y agoWhy appeal to authority here? Experienced, well-intentioned developers should able to have a discussion of the merits of a particular construct without having to turn the discussion into a citation count contest. FWIW, I'm firmly on the 5.0 side.
- chillacy 10y agoOhhh boy. The problem is when the guy on the float(5) side genuinely believes that this is better code style. At the end of the day you do have to appeal to some system, whether it be to the PEP, or to SOLID design principles, or even to "someone else thinks this is a good idea on stack overflow". Personally I like to go with "is accepted by the community" as opposed to "is accepted by most people in this room" or "Greg thinks it's beautiful".
- falsedan 10y agoIt's not appeal to authority, it's consider the point of view of a disinterested third-party that they may not be aware of and thus can gracefully accept your feedback without losing face.
- SeanDav 10y agoUnless you can prove that one method is significantly faster or the other structurally dangerous, it is just a matter of coding style and opinion. Agree to disagree, or let the lint tool be the referee.
- gvb 10y ago$ python -m timeit 'float(5)' 10000000 loops, best of 3: 0.0776 usec per loop $ python -m timeit '5.0' 100000000 loops, best of 3: 0.00719 usec per loop
- jrs235 10y agoDid you have a typo? Or did you mean to only loop ten million times in the first case and 100 million in the second?
- gvb 10y agoI did the lazy approach and let timeit pick the count. Specifying the number of loops doesn't change the result: $ python -m timeit -n 10000000 'float(5)' 10000000 loops, best of 3: 0.0771 usec per loop $ python -m timeit -n 10000000 '5.0' 10000000 loops, best of 3: 0.00717 usec per loop [timeit] provides a simple way to time small bits of Python code. It has both a Command-Line Interface as well as a callable one. It avoids a number of common traps for measuring execution times. See also Tim Peters’ introduction to the “Algorithms” chapter in the Python Cookbook, published by O’Reilly. Ref: https://docs.python.org/2/library/timeit.html https://docs.python.org/2/library/timeit.html
- deleted 10y ago[deleted]
- Waterluvian 10y agoAm I reading that right: on average it's 10x faster to use a float literal?
- crdoconnor 10y agoThey're still both magic numbers.
- dcposch 10y ago> Brilliant jerks are often to be found at the beating heart of successful software. Exhibit 0: Linus Torvalds
- astrodust 10y agoExhibit B: Steve Ballmer.
- sqeaky 10y agoThere are multiple ways to be a jerk. Clearly Gates succeeded and Ballmer failed. The Gates went on to stop being a jerk. It would be nice to see some example of a Jerk and non-Jerk attempting the same strategy.
- astrodust 10y agoJerks and non-jerks have different approaches to building enterprises. Jerks often rule through intimidation and fear. Non-jerks build loyalty through other mechanisms. The thing is both methods, if applied consistently, produce results. The trouble is the jerk method is a lot less efficient in terms of use of human emotional capital.
- crdoconnor 10y agoNot brilliant. He was simply in the right place at the right time.
- MaxfordAndSons 10y agoThe article is in the context of a business, not an OSS project. It's apples to oranges.
- flamedoge 10y agoTo be fair, Linus is like the last line of defence for Linux. If being a jerk helps remind the strict rules that he envisioned, maybe it's working.
- kurthr 10y agoI agree... usually when a truly brilliant developer is causing more harm than good, it's because they aren't being effectively managed. That doesn't mean managing them is easy, but you want to pick and choose what problems you give them, who they work with, and how they work with customers. Of course, that's not my job :^)
- solipsism 10y agoUsually? The overlap in the Venn diagram between "Truly brilliant developer" and "giant baby who has no social skills" is probably non zero, but I work with many brilliant non-jerks. Perhaps you've been unlucky.
- threatofrain 10y agoAs opposed to intelligence and sociability, among other traits, may be independently varying? If one imagines that intelligence and sociability are merely two of many possible desirable traits, and that top firms with big budgets also see similarly, then eventually those with the highest concentration of desirable traits will be sniped up, leaving firms with lesser budgets to take those with fewer desirable traits of lesser magnitude. The same can be said about customers. Some customers could be described as "10x paying nice customers", vs "10x paying jerk customers", and these could be thought of as merely two of many possible independently varying traits. Eventually, one might suspect that discerning firms will try to keep the best clients, while pushing clients with fewer desirable traits of lesser magnitudes to lesser firms.
- gregtran 10y agoAnd the big win is that it's quite possible to go from "asshole" to "amicable." It's less likely someone goes from "mediocre" to "brilliant." A good manager can go a long way in coaching you professionally, but they can't raise your IQ.
- JoshTriplett 10y ago> In my experience, talented developers are usually intelligent enough that they can make up for their shortcoming in the social area by consciously adapting their behaviour. That's orthogonal to the issue mentioned in the article. For the purposes of "not being a jerk", it doesn't matter if that comes naturally or if you have to devote conscious effort to it; only the resulting behavior matters. > Brilliant jerks are often to be found at the beating heart of successful software. Survivorship bias. Strange policies or properties are often found in successful companies/projects, who often write up articles about them as though those policies contributed to their success, never considering the possibility that they succeeded in spite of them. The same goes for jerks: some companies/projects succeed in spite of the jerks in (or running) them.
- smallnamespace 10y agoOTOH, you can make a pretty strong argument that for, say, MS, Oracle, or Apple, it's precisely the 'jerk-y' qualities of their founders and CEOs that led to their success today. Say what you like about MS's business practices during the 90s, but I think the history shows that a large reason they were able to continue their dominance was because of the unfair and frankly anticompetitive practices that they embraced back then. Bill Gate's willingness to be a jerk was what kept their company on top. Of course, that was directed productively and outward, not destructively inward.
- xiaoma 10y agoIt was directed inward, too. "That's the dumbest fucking idea I've ever heard," was a common phrase at MS in the 90s.
- mixedCase 10y ago>"That's the dumbest fucking idea I've ever heard," How ironic.
- ktRolster 10y agofwiw that kind of phrase isn't necessarily 'jerky.' As long as the person you are saying it to understands that you respect him/her, and are just disagreeing with their idea, then it can be fine. It's a risky communication strategy, but I wouldn't condemn everyone who uses it.
- tn13 10y agoSteve Jobs has been a well known jerk. It helped apple to have him.
- st3v3r 10y agoPlease don't. Our industry is already full enough of assholes who saw part of the Steve Jobs movie and started to think that management is all about berating or "negging" people so they do what you want.
- tn13 10y agoThat is my point. A jerk might be just one side, other side is important too.
- cholantesh 10y agoBetter to say he added value despite being a jerk; there are lots of companies that succeed without having egomaniacal bullies in senior management.
- braveo 10y agoI stopped reading when the blogger started talking about the "brilliant developer who could code circles around us", and then referred to him as a "10x developer". These are stereotypes, and quite often bloggers will make up stories to illustrate a point. Which is fine, but when your point is based upon stereotypes, then I'm not interested. ---- So with that said, I agree with everything you've said. Quite often these abrasive people are making valid points. You know those security scandals that hit (Playstation network getting hacked, etc) where you think to yourself "how the fuck did they manage it so badly, because their fuckup wasn't subtle at all. You KNOW there was an abrasive jerk somewhere in there saying "guys... this is horrible" and he or she got shouted down, shutdown, and/or fired for it.
- spacemanmatt 10y agoThat, or they had a reputation for "moving fast and breaking things" without submitting to any secure practices, and the abrasive jerk who knows security never bothered to apply there in the first place. Or the polite person who knows security, for that matter.
- watwut 10y agoOr there was an abrasive jerk who made them to do the wrong thing. Abrasive jerk was likely to be the one doing then shouting down. Abrasiveness does not make you right, the assumption that the most pushy jerk is right is just wrong.
- braveo 10y agoSince it apparently wasn't obvious: We should be putting "abrasive jerk" in quotes. The point that was being made by both of us is that these abrasive jerks aren't actually abrasive jerks, they're just going against the grain because it's the technically better choice. And then they get labelled as abrasive jerks and ignored, and then queue the scandal when people talk about how horrible the toyota code is (for example).
- watwut 10y ago
- gregtran 10y agoI'd rather have a brilliant jerk than a regular jerk. But regular jerks abound at work because they at least don't make you feel stupid and insulted. And you hit the nail on the head with your experiences. In high school I was neck-and-neck academically with a brilliant jerk. He went to Harvard, is now a millionaire (without inheriting it) and a much nicer person. Competing with him was one of the most formative periods of my life. He made me better, because I learned not to take harsh criticism and hectoring so seriously. Look at what they do (for you), not what they say (to you). I actually wish there were a brilliant jerk like him in my workplace. But there are just regular jerks.
- vlunkr 10y agoMaybe I'm the exception, but I have worked with someone as bad as the article described. He would re-write everyones code when they weren't around, because he didn't consider it good enough, so they were completely de-moralized. Eventually he was assigned solo projects, which became overly complex and were never finished, until he left the company. Management should have noticed earlier how unproductive he was to have around.
- gozur88 10y agoThat doesn't sound so much like a brilliant jerk as a midwit egomaniac, which are pretty common on the ground in programming. I've worked with people like that too, and what they're really doing under the guise of making your code better is rewriting modules because it's less trouble than figuring out how the existing code works. Invariably they break something in the rewrite, too, because they didn't understand the full scope of the problem domain (which, circling back, is why they didn't understand the original code). And of course when you assign them to solo projects they fail. Because they're not very good at software development.
- jmaygarden 10y agoThat's very well put. The "mid-wit egomaniac" is much more destructive than the "brilliant jerk." The jerk at least knows that rewriting working code is expensive and risky.
- vlunkr 10y agoThat's probably pretty accurate. He was really brilliant, and had extremely broad technical knowledge, but he was not as brilliant has he believed himself to be. Since his code was difficult for anyone else to follow, and as mentioned earlier, everything was over-engineered out of existence.
- Smushman 10y agoSuccess can be determined by many different things; but pretty universally in programming not getting the job done correctly (the expected inputs and outputs just aren't there) is an issue. Which confirms your interpretation and labeling of the 'midwit egomaniac'. The sad part - it is not usually immediately clear which kind of jerk your dealing with, since they behave the same! Secondarily, it is not immediately clear to an outsider upon observation which is which either... Summary I drew: There are genuine mental health related conditions that can cause someone to be a jerk AND still be brilliant. When you find that, you have to first separate them off so as not to detract from others work. Secondly if they can't cut it then let them go.
- amorphid 10y agoI tell myself I can work with (almost) anyone who is trying to do better. If someone is intentionally being subversive, that's hard to work with. Humans are difficult, and the people that own that & try anyway are my kind of people.
- ktRolster 10y agoIf someone is intentionally being subversive, that's hard to work with. Yeah, that's true. I'd rather work with an honest jerk than a friendly back-stabber.
- eplanit 10y agoExactly. Some of the most driven (and successful) people act like jerks. Steve Jobs is a noteworthy example: http://thehustle.co/steve-job-insults http://thehustle.co/steve-job-insults http://www.forbes.com/sites/davidcoursey/2011/10/12/steve-jobs-was-a-jerk-you-shouldnt-be/#402777592319 http://www.forbes.com/sites/davidcoursey/2011/10/12/steve-jo... http://bgr.com/2015/06/18/what-its-like-to-work-for-steve-jobs/ http://bgr.com/2015/06/18/what-its-like-to-work-for-steve-jo...
- mabbo 10y ago> I've never worked with anyone who's as much of a jerk as described in the article Maybe it's just that jerks don't affect you as much as they do other people. And that's great- for you. But for the rest of the team around you, those people are awful. Those people are the reason your best teammates decide to move on to new opportunities. You should also consider the old saying 'every team has an idiot, and if you don't know who the idiot is, it's you', and double check that this doesn't also apply to jerks. Maybe the reason you haven't worked with a jerk before (and in fact believe brilliant jerks are just the best) is because you are the jerk. I don't mean to say that as an insult. I was the jerk. I still am the jerk sometimes. It's hard to see, hard to deal with. Maybe you aren't, but it's worth careful examination just in case, no? Otherwise, you're literally making people around you miserable.
- sheepmullet 10y ago> Those people are the reason your best teammates decide to move on to new opportunities. Are they? Most devs I know change jobs to work on more interesting projects, to move into a higher level role, to get a pay bump, to move to a more flexible company, etc. In my experience it is rare for someone to move because of bad colleagues. Bad management? Sure. Bad co-workers? Not really. Why do you work at companies with so many jerks? Perhaps you are the problem.
- frahs 10y agoI think it's possible to be truthful, direct and blunt while still being nice and thoughtful. There's a false association between someone who is a jerk and someone who is willing to disagree.
- WalterBright 10y agoEvery organization needs a rogue here and there - one who will challenge conventional wisdom and authority in confrontational, i.e. jerkish, ways. It's management's job to try to fit them in and put them in the right positions. I'm sympathetic because I'm very socially inept myself.
- WalterBright 10y agoAnd to be sure, if they are talentless jerks, there's no reason to put up with them.
- tlogan 10y agoI belive that "no jerks" policy basically means that everybody needs to be nice and civil with each other. This does not mean that mistakes are allowed and things are done by consensus. The problem with jerks is that they are jerks: people do not like them and it is hard to work with them and that is not good. Nothing else. Sometimes that is ok - but in many cases it is not ok since team and project needs to grow into other areas where that "brilliant jerk" will not be so brilliant.
- quotemstr 10y agoThe problem is that the meaning of "civility" is mutable. Too often, "being civil" or "being nice" or "being respectful" ends up meaning going along with the flow and not challenging the group consensus.