Looking back at my work over the years, I can probably say that the ugliest and shittiest code has always made me the most money. Why? End-users couldn't care less what the code looks like. If you are faced with an opportunity you write an ugly glued-together MVP, show it and get it working. It was only after making money that the code got cleaned-up and polished.
The same is the case with "temporary" tools that you write here and there. Ugly piles of smelly manure until you decide to clean them up.
Of course, as you gain experience you can write less "smelly" code from the very start, that's only to be expected.
I can also probably say with almost absolute certainty that projects where I took the approach of writing a "Monument to Computer Science" almost never made me any money.
I find that for some people programming can be very personal. Criticism can really affect them. Perhaps this is also something that you get past with experience. And, while I always strive to write good, clean and efficient code, I, personally, realized a long time ago that the very first priority is to put food on the table and grow the business or support the growth of the company where you are employed.
People who get off on criticizing others for anything (not just their code but anything at all) are, regardless of their standing within their community, simply despicable.
A lot of these people are also cowards. Not saying that these guys are. I don't know them. But I'll bet they would not stand in front of a real crowd of people (you know, they kind that you can touch and see) with Heather in the same room and make those comments. Why is it that some people might have restraint and manners in public but can turn into perfect assholes behind a keyboard?
This is one of those "You can't un-ring a bell" situations.
The other one I like is the equating of such acts to tearing open a pillow full of feathers atop a mountain. To undo your actions you have to go to every corner of that mountain and gather all the feathers. In other words, it's very easy to utter just a few nasty words and cause someone pain and even harm. It is orders of magnitude harder to undo that.
In my opinion, an apology simply isn't enough. I don't know what might constitute equitable reparations, but apologies in blogs are just too easy. The author sleeps well at night while the victim still has to deal with the feathers spread all over the mountain that is the Internet.
N.B: It is important to note that Corey did reach out to Heather personally (see his post on this thread). This, of course, makes him a gentlemen and I am sure Heather feels much better. Nothing beats real one-on-one human contact. Bravo.
I think you're making the same mistake that the OP made - not considering that there was a person at the other end. People make mistakes, including acting like assholes, but they are still people at the end of the day.
Much like how the original post states, Steve Klabnik, Corey Haines and David Cramer's comments on this repository are out there, and now that includes the mob against them and their apologies after realising that numerous people were angry at them. Now that this shitstorm has spread to Hacker News and elsewhere it's something that all four parties will have associated to their online persona.
>The author sleeps well at night while the victim still has to deal with the feathers spread all over the mountain that is the Internet.
This read like a hyperbole to me. Heather has received a lot of support and positive attention because three guys made abusive tweets about her code. This incident will blow over very quickly (as most internet drama is want to do) and in the end Heather will come out as the vindicated victim while the other three guys will try to maintain their reputation.
I would argue that this is a great PR moment for Heather. Heck, I wish some well-known figures in the Ruby community would tear apart my OSS contributions so I could get some free publicity.
Not to mention that a little bit of adversity breeds resilience. If you're coddled from all criticisms, you deal less well with other stressors.
Done right, frank and forthright exchange of opinions is faster than couching things in friendly terms. Look at the way Torvalds, Jobs, and Gates worked - these guys happen to be the keystones of the 'big three'. It consumes a lot of time, couching a negative opinion in soft, cuddly terms to 'avoid offense', and having a bit of resilience can smooth over rough corners in communication.
It consumes a lot of time, couching a negative opinion in soft, cuddly terms to 'avoid offense'
No, it emphatically does not, and the assumption that it does (and that it is thus not "worth" trying to not be an asshole) is one of the more pervasive diseases among "computer people". If you sufficiently internalize that there is another human being at the other end of the line, basic humanity should lead toward communication with that in mind.
Not to mention the fact that Torvalds, Jobs and Gates all used their frank and forthright exchange with people they worked with, whom they knew, and who knew the deal in working for them. That is quite different from blasting opinions at strangers over twitter.
I'm more responding to the idea that it's reprehensible to be exposed to harsh comments than the idea it's bad making them in the first place. I've never read the twitter involved and sure, it's probably awful. But that happens in the world. Catch public transport enough and you'll encounter it. Go shopping enough and you'll encounter it. Having some resilience is not a bad thing.
In my personal experience, people with low resilience are also the people who avoid reading news about bad events and current affairs, because it upsets them. So they lead more of a fantasy life. I don't think ignoring problems in the hope that they'll go away is the right way to be.
EDIT: I've now read the tweet and the total offending commentary is 'eyes bleeding'. That's it. Compare to the reams that have been written in this post about how insincere his apology is and what a prick he is. If he was to write up a blog post about how he'd ended up sobbing because HN had been so mean, the comments here would probably not be 'sorry, that was mean of us', they'd be mostly 'you deserved it', like moral crusaders. There's a lot of hypocrisy going on in this thread.
I've spent many a year working in support and also as a medical technician working with patients, and a year or so doing TA work. I've done a lot of hand-holding when getting a point across, and I've always done well in performance reviews. I'm quite aware of the human on the other end of the line. I'm here to tell you that it does take extra time. 'Manners cost nothing' is a not a statement referring to time.
There is also a difference between being rude and being frank. And there is a continuum of response between 'trying not to be an arsehole' and 'being an arsehole' - it's not a binary choice.
Why does being frank suddenly mean you've lost 'basic humanity'? That kind of opinion is a disease in itself.
If you sufficiently internalize that there is another human being at the other end of the line, basic humanity should lead toward communication with that in mind.
"Sufficiently internaliz[ing]" the emotions of another human being may be difficult or impossible for many who are drawn to the computer field due to the way their brains are wired, either due to childhood bullying stunting their empathic development, or to things like autism spectrum disorders.
For people in that situation, suggesting a pragmatic mental model may be more helpful than saying, "You're a jerk, and you're wrong," which might come across as like saying to a deaf person, "You never listen, and you're wrong."
Could we stop with the Asperger's fetishism? The vast majority of people in technical fields do not have any autism spectrum disorders. The vast majority of people who are jerks do not have any autism spectrum disorders, either. Most people who act like jerks (in both technical and non-technical fields) are just that: jerks.
Autism-type disorders don't just manifest as asshole behavior, and certainly not as just snarky inconsiderate behavior. They affect interpersonal interactions in general.
Saying that jerks in tech fields have autism spectrum disorders makes as much sense as saying MBAs have sociopathic disorders. "When I hurt my coworker's feelings, it's because I'm autistic. When my boss hurts mine, it's because he's a psychopath." Yeah right.
I didn't limit my comment to Asperger's syndrome, and at no point was I making excuses. My point is that saying "You're a jerk" is not a solution to the problem, whether it's caused by ASD, psychopathy, whatever. If you had read and considered my final paragraph, you would see that I did propose a solution.
Edit 2: My suggestion of a "pragmatic mental model" of others' emotions is influenced by the existence those who are able to learn to read emotion by analyzing facial expressions (e.g. https://news.ycombinator.com/item?id=4630989).
You didn't limit it to Asperger's but you basically limited it to Asperger's-like syndromes. (i.e. "due to the way their brains are wired".) References to bullying and whatever else are superfluous when you're basically chalking it up to equivalent syndromes (regardless of the particular names).
And yes, there are some individuals who legitimately have Asperger's or some other disorder that affects their interactions. However, this is a rarity, and it's unhealthy that our industry talks about these things as if they are the normal case. It does the industry a disservice when we accept inappropriate behavior and don't call it out as inappropriate and unacceptable. Most people who act like jerks do not have any kind of diagnosable disorder. In fact, most people who act like jerks are just normal people who are not normally jerks, but occasionally act that way for various reasons.
I disagree that your proposal is meaningful. I say this partly because you didn't actually propose anything concrete, but mostly because this is only useful for someone who wants to change the way they interact. This requires that these people admit that their behavior is inappropriate, so we should start there. Then we can move to conversation about how to change if they agree that they should.
Imagine if we were having this conversation about racism or sexism. Would you be dismissing the behavior as a result of a syndrome or bullying or whatever? Would you propose that we should be suggesting a "pragmatic mental model"?
As for the "fundamental attribution error", you're just as guilty as anyone else. "He's doing that because he's got Asperger's" is no more situational than "He's doing that because he's a jerk". A situational explanation might involve the anonymization of Internet interactions or the dehumanization that comes from discussing a person's code vs the person.
You didn't limit it to Asperger's but you basically limited it to Asperger's-like syndromes. (i.e. "due to the way their brains are wired".)
Only aspies have wires in their brains? ;-) I mean "wired" in a more general sense: one's predispositions, preferences, learned behaviors, adaptations, instincts, acquired skills, etc. I'm making the assertion that people who are drawn to computers, especially those who began at a young age, have differently wired brains from the population average, and that this preference for computing fields may be associated with reduced capacity for empathy. Whether it's due to developmental or congenital causes is irrelevant.
This requires that these people admit that their behavior is inappropriate, so we should start there.
You're already talking about someone who is acting like a jerk. Becoming confrontational is the last thing I would expect to convince anyone to want to change their behavior, much less a "jerk."
Imagine if we were having this conversation about racism or sexism. Would you be dismissing the behavior as a result of a syndrome or bullying or whatever? Would you propose that we should be suggesting a "pragmatic mental model"?
"Dismissing" isn't the right word. Again you seem to assume that I intend to excuse inappropriate behavior and that I expect it to continue. That is not the case. I am proposing a more rational, less reactive approach to persuading people to be more considerate. And I would indeed make a similar proposal if we were discussing undesirable behavior against a legally protected class, vs. a piece of code.
Is this a new analog of Godwin's law? If you wouldn't talk about it w/r/t race or sex or gender, you can't talk about it at all?
As for the "fundamental attribution error", you're just as guilty as anyone else. "He's doing that because he's got Asperger's" is no more situational than "He's doing that because he's a jerk". A situational explanation might involve the anonymization of Internet interactions or the dehumanization that comes from discussing a person's code vs the person.
I would consider those to be less situational explanations, at least the way you've worded them. I've avoided reading the original tweets at issue, so all I'm aware of is that the metaphor of bleeding eyes was used, which is common and inoffensive among nerds. If anything, that suggests that the original offender wasn't "being a jerk," but rather unaware that they were interacting in a space in which their metaphors would be interpreted differently than they expected.
>I'm making the assertion that people who are drawn to computers, especially those who began at a young age, have differently wired brains from the population average, and that this preference for computing fields may be associated with reduced capacity for empathy.
And I'm saying that this is not true. Sure, there some very small proportion of the computing industry that have trouble with empathy, but there is a very small proportion of the population in general that has this problem. Even if the computing field had twice as many people with this issue as the general population, it would still be a small portion of the overall computing field. (And I seriously doubt that it's twice the average. I've never seen anything substantive demonstrating that it is more prevalent at all.)
> You're already talking about someone who is acting like a jerk. Becoming confrontational is the last thing I would expect to convince anyone to want to change their behavior, much less a "jerk."
First, there are many different levels of "confrontation". Telling someone that they've hurt your feelings can be viewed as confrontational, but is much different than yelling at someone and calling them an asshole. Second, if someone is unwilling to acknowledge that their behavior is inappropriate, they are certainly not going to try to change. Someone who sees no problem with their behavior sees no reason to alter it.
> "Dismissing" isn't the right word. Again you seem to assume that I intend to excuse inappropriate behavior and that I expect it to continue. That is not the case. I am proposing a more rational, less reactive approach to persuading people to be more considerate.
You're proposing that we concede that asshole behaviors by people in the tech world are largely due to an inability to empathize. I don't think there's any basis in fact for this claim, so this can not inform an rational approach to resolving the problem.
> a piece of code.
Code doesn't have feelings, and the inappropriate behavior was not toward the code.
> Is this a new analog of Godwin's law? If you wouldn't talk about it w/r/t race or sex or gender, you can't talk about it at all?
Is every metaphor now somehow a meta-invocation of Godwin's law?
Let's talk about racism, though. It's absolutely true that there are people with syndromes (e.g. Tourette's) who shout racial slurs because of their diseases. It is not, however, useful to bring up Tourette's in a conversation about racism, because while it does explain why a tiny portion of society might appear racist to the uninformed, it says nothing at all about the actual issue, because the vast, vast majority of racists do not have Tourette's.
> I would consider those to be less situational explanations, at least the way you've worded them.
You think that explanations that involve situational context are less situational than explanations that are entirely internal to personality? I really don't understand how you can make this claim.
> I've avoided reading the original tweets at issue, so all I'm aware of is that the metaphor of bleeding eyes was used, which is common and inoffensive among nerds.
It's common. That doesn't make it inoffensive. If I say that your clothes are making my eyes bleed, then I'm telling you that your clothes are horrible to a level that has caused me physical damage. This is offensive.
Human minds are much more diverse than most people accept or realize. For example, consider these comments from someone who has no visual imagination: http://lesswrong.com/user/lindagert/overview/
I think this is often overstated. Every generation thinks today's kids "have it easy" and "are soft." In previous times it was more about the physical or about working with your hands. Now because the world is more about the mental and social we accuse kids of being emotionally soft.
When you think about it though, imagine growing up with today's technology. Think about how bad Facebook can make you feel, when everyone seems to be having a good time and living perfect lives (because that's what they want you to see). Or how public life and the possibility of embarrassment, awkwardness, and ridicule can now follow us everywhere. Now remember how stressful being a teenager and going to high school can be on its own. I really don't know how kids today handle it.
I totally agree with you about code not always (or never) being perfect in the real world.
You are also correct in it was disrespectful and wouldn't happen if they were face to face.
BUT I do think an apology is enough, regardless of being called out on the internet. An asshole behind a keyboard doesn't use the same keyboard to say how they were wrong.
People make mistakes and when you do it on the internet it quickly amplifies.
You may say I am a little bias because I have met Corey in person. He was boarding a plane and I ran up and introduced myself after having heard one of his talks. He took his time while others boarded and was very courteous and friendly. So I trust in his apology and that he isn't an asshole in person or behind a keyboard.
Well, you are probably right. I don't know him, which means that I am operating with imperfect data. I still contend that a little more than an apology on a blog is in order. Perhaps a phone call or an in-person meeting if practical. If I am reading this correctly the comments affected Heather to the point that she had to cry. Not cool.
So robomartin is happy? Good. The important thing here is that robomartin is satisfied that this incident has played out according to his guidelines on how such matters should be resolved.
Public versus private though. If my adviser came in with a printout of something I wrote and told me, "This is garbage and unworthy of the electrons used to send it to me," I would be OK with that -- but if he stood up at a conference, put it on a projector, and said, "My student wrote this worthless crap" I would be (rightly) angry about it. Insulting someone's work to their face in a private setting is not nearly as bad as publicly demeaning their work.
One, I still think telling someone that something they have done sucks is harder to do in person than online. But two, the point is that the incident in question was pretty much "you suck because your code sucks."
Telling someone their hard work and best efforts suck DOES hurt their feelings. If you don't recognize that and go around telling people their work sucks, then you might be an asshole.
>>>Telling someone their hard work and best efforts suck DOES hurt their feelings.
And so what? You think books don't get bad reviews? Movies? TV shows? School tests? It's part of life. Take the hit, move on. Do better if you must.
EDIT to add: When it comes to one-on-one being told your work sucks, the best response I think is this: "OK, if it sucks, tell me how, because I'm not yet able to see it and I'd rather not suck." That's better than just stewing in hurt feelings and never improving or knowing how to improve.
There's this little dog that lives next door to me who is always ready to bark at any one (dog or person) that passes, even if they're far bigger than he is.
Wow, that little guy has such a pair he can hardly walk!
Of course, if he weren't so aggressive, I'd be able to bring him along for long walks with us, scritch him behind the ears when we pass by, etc..
Our other neighbors have two dogs I take running with me now and then; not him, though.
My own dog, interestingly enough, doesn't back down when he runs at her (as a lot of dogs do, actually, even bigger ones). She doesn't attack him back, either -- she just doesn't even take him seriously (though he's trying...), and she feints and jumps, ducks and tries to play -- and he generally runs off after a pass or two of this; he realizes she's not backing down, and he gives up.
So she handles the confrontation that's needed with good humor and aplomb, without running away or even dropping to his level and getting nasty.
She hasn't got a pair, of course, but I can really respect how she handles him.
Preach on. I will also point out that a lot of coders don't know the different between code that is "ugly" and code that simply hasn't been prematurely optimized.
Corey did take a lot of time to apologize again and again on Twitter. I think he dealt with the situation quite well, considering the douchiness he (and the others) exhibited.
No kidding -- I checked his twitter stream to see what this looked like, and stopped scrolling after a few pages of nothing but apologies.
Sucks to make these kinds of mistakes; I've been thoughtlessly cruel before in my life (though never with the amazing and horrible amplification that the internet provides, thank goodness), and it's a nasty feeling indeed when it all sinks in.
I don't know about you but people make mistakes. What counts is how they handle it. Unlike the others in this drama, Corey actually owned up to it instead of just posting a lame non-apology.
A general point and not meant as a criticism of you, but is there a gender-neutral way to express "This, of course, makes him a gentleman" as you use in your final paragraph? Or a clear female equivalent? It seems "This, of course, makes her a lady" does not mean the same thing at all, and an obvious alternative (either non-gendered, or symmetrical to "gentleman") does not readily spring to mind when, one feels, it ought to.
"End-users couldn't care less what the code looks like."
This should be on a poster.
End-users don't care about any of the behind the scenes stuff that developers sometimes get completely distracted by — they care if it works. If it solves their problem and does what they want/need it to do, then it works ... if not, it doesn't. What goes on behind that? Irrelevant to them.
```If you are faced with an opportunity you write an ugly glued-together MVP, show it and get it working. It was only after making money that the code got cleaned-up and polished.```
I'm wondering how much this can be reduced by using frameworks. Is it necessary when using Rails conventions to produce something that is garbage on the first pass?
The same is the case with "temporary" tools that you write here and there. Ugly piles of smelly manure until you decide to clean them up.
Of course, as you gain experience you can write less "smelly" code from the very start, that's only to be expected.
I can also probably say with almost absolute certainty that projects where I took the approach of writing a "Monument to Computer Science" almost never made me any money.
I find that for some people programming can be very personal. Criticism can really affect them. Perhaps this is also something that you get past with experience. And, while I always strive to write good, clean and efficient code, I, personally, realized a long time ago that the very first priority is to put food on the table and grow the business or support the growth of the company where you are employed.
People who get off on criticizing others for anything (not just their code but anything at all) are, regardless of their standing within their community, simply despicable.
A lot of these people are also cowards. Not saying that these guys are. I don't know them. But I'll bet they would not stand in front of a real crowd of people (you know, they kind that you can touch and see) with Heather in the same room and make those comments. Why is it that some people might have restraint and manners in public but can turn into perfect assholes behind a keyboard?
This is one of those "You can't un-ring a bell" situations.
The other one I like is the equating of such acts to tearing open a pillow full of feathers atop a mountain. To undo your actions you have to go to every corner of that mountain and gather all the feathers. In other words, it's very easy to utter just a few nasty words and cause someone pain and even harm. It is orders of magnitude harder to undo that.
In my opinion, an apology simply isn't enough. I don't know what might constitute equitable reparations, but apologies in blogs are just too easy. The author sleeps well at night while the victim still has to deal with the feathers spread all over the mountain that is the Internet.
N.B: It is important to note that Corey did reach out to Heather personally (see his post on this thread). This, of course, makes him a gentlemen and I am sure Heather feels much better. Nothing beats real one-on-one human contact. Bravo.