The Dark Side Of Software Development That No One Talks About
simpleprogrammer.com
simpleprogrammer.com
People are mean and jerks are everywhere. Perhaps somehow society has convinced us otherwise, but there are a lot of terrible people out there.
A lot of people do evil things, a lot of people hurt other people. This is not new and it's not a secret, people for whatever reason are more oblivious to it than they should be or perhaps people are so accepting of inappropriate behavior in our entertainment mediums that we are desensitized to it until it happens to us. I really don't know for sure.
What I do know is not everybody deserves a say in everything. Sometimes people are wrong, or are trolling, or just have no place in the conversation. The right thing to do is to remove those people from the conversation if they aren't being constructive.
Without getting into why, one of the reasons the above is a bit astonishing is that it frequently leads to project failure, and in startups that usually means company failure. You can't depend on simple notions of self-interest even in situations where failure will mean all involved will lose their jobs.
In the same vein as a post linked here ( https://news.ycombinator.com/item?id=6346933 ) I refuse to play audience to someone insisting on being mean. Maybe that's just the way that person is, I can't change that, but I can change who I choose to interact with.
If negative and mean people are happy being just so, they can be that way by themselves.
But I suppose to look on the bright side, I'd rather have somebody be a jerk to my face, even if it is subtle and insidious, than have them pretend to be my buddy and then stab me in the back.
I'll take being surrounded by jerks over trying to navigate some of the intricately constructed, intensely political environments that are common in the business world.
FTA
> It is sort of a “kick the dog” syndrome where software developers who were kicked earlier in life, or even earlier in their careers, tend to feel justified in kicking the programmers who they see beneath them.
This is what I tend to suspect, also.
There is something specific about the way that people in software development can be jerks - passive aggressive behaviour, sometimes a lack of self awareness, a certain type of arrogance or at the very least a lack of empathy.
And this in an area where in many ways there are many similarities which you'd hope fostered friendship and bonding - we're talking about smart people who often share interests.
Maybe it is just that software developers are typical but even if that is the case given levels of intelligence, education and so on I still find it disappointing that we can't be better than that.
Yes.
Generally speaking, I refer to this as "lack of social skills."
I don't mean that as derogatory, although I know it will come across that way. Most developers have grown up around computers, and in a lot of situations have chosen fiddling with computers to socializing with people. As a result, they don't gain important social skills until later in life, if at all. For example, the software architect for my company's software suite is an absolutely brilliant guy. But he's just incredibly awkward around people. When it comes to working in projects, or even simple things like answering questions from less technical people, he's terribly arrogant and condescending. I experience such attitudes from non-developers much, much less often.
That said when I first started in IT I was surprised by how few people conformed to the cliched socially awkward stereotype. Yes it was more noticeable than in a typical a cross section of the general public, but I think that the damage someone being a complete jerk can have in a team context means that even given the difficulty in hiring it's selected out to some degree - you've either got to be really good, or at least be able to hide your true nature at interview.
10-15 years ago the internet was just for geeks, but now everyone uses the internet, and and now business people want to learn how to code instead of locking us up in basements. So I am encouraged that the aggressive know-it-all might be slowly going extinct.
But reference than anecdotes, I'll give references:
David Gordon documents how downsizing produces expertise in sabotaging other rather than efficiency: http://www.amazon.com/FAT-AND-MEAN-Managerial-Downsizing/dp/...
The Gervais Principle perhaps summarizes the predatory new order. http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-o...
But the point is this a somewhat new order. Of course, competition-so-ruthless-it-produces-bad-behavior has been around forever. But some circumstances allow that truly blossom and I think can argue we have those circumstances now.
I'm from the southern US, where people are known for hospitality and politeness, and I often see things said on places like the LKML that make me go, "If you said that to me in person in that way, I'd punch you in the face." And, to be clear, to me, punching the person in the face is not nearly as rude or unacceptable as whatever they said.
I'm trying to get used to the fact that different people have different social norms. I still think people like Linus have _inferior_ social norms, though. (Though he may be an exception, since his style seems to work so damn well.)
The reason why they are brusque is not because 'they have been abused' but because, the tolerance for bullshit is low - because of two things 1) they have seen bullshit bring down otherwise promising projects or ideas, and they don't want that to happen; 2) they percieve that varnishing your emotions or opinions with too much tact increases the cognitive load required by the recipient to 'get to the truth'.
Whether or not being brusque or diplomatic actually is effective is debatable. Nonetheless, I think missing this very important concept is generally bad.
In some fields, like science, having to deal with people who will trash your idea with honest commentary - that makes you think twice about what you are doing - is far, far, far better than having to deal with the silent judgement of a failed experiment that lets you down dispassionately, and wondering, "why didn't anyone care enough to tell me I was stupid to try this".
And no, people who think they are being "brutally honest" while forgetting compassion or even basic fucking manners are not doing so with others' best interests at heart.
They are just being assholes. There are bonafide reasons for that behavior, and they deserve a measure of compassion themselves while receiving that message, but don't try gilding the orifice's behavior.
Being "Brutally Honest" while combining that with tact is a rare communication skill that is an essential part of interacting in polite company. Having that skill and developing it has done more for the effectiveness of my teams than any other skill I have ever developed.
Question: "Do you think I should rewrite this code?"
Honest answer: "Yes, definitely. You've made some mistakes that will make this impossible to maintain, such as...".
Asshole answer: "Yeah, this code looks like shit".
As the author noted, this tendency is symptomatic of people with high intelligence, but questionably intact egos. I left Mensa because I was tired of all the petty bickering resulting from people "being honest" about their opinions; if I had a nickel for every time someone was called a "moron" for stating their political leaning...ugh.
Nobody is above civility and tact.
But something that will, potentially, save me from myself cannot be delivered with tact, compassion and restraint with no delicacy whatsoever with regard to my sensibilities?
If the advice someone gives me is not in the form I can ingest, then what they have done is pleasure themselves publicly at my expense.
This was advice. I hope what I wrote falls into a form that you found ingestible.
It is my perception (and this may or may not be correct) think that people who are often too concerned with seeming nice - are going to be exactly the people who do things like fudge or fake data, and I think it's important to have a strong immune system against those people, at least in my field (science).
To go one step further, saccharine niceness, in my mind, is often coupled with vicious back-stabbing (over-compensation?). I don't want those people around. If you're going to be saying something nasty, say it to my face. Just a matter of respect.
I find that someone who doesn't work well with emotions is typically bad at reasoning too, because the arguments they make end up expressing their feelings in obtuse ways.
This is an interesting explanation. Do you think that people bad at understanding their emotions are less aware or mindful of their unconscious biases?
The upshot is that it gets really tiresome to argue in situations where you've realized this is what's happening. In my experience, most of the time that you see hardcore polarization on an issue, where all appeals to reason seem to fall on deaf ears, it's actually due to some kind of emotional blockage like this. At this point, practicing empathy and asserting firm but flexible boundaries is often the only way out.
So, pay attention to your emotions, they're trying to tell you something.
This is very useful to know, so thanks for the light-bulb moment. It'll be easier to step away from discussions when I can recognize that someone will live and die with their agenda because A) they lack the mindfulness to divorce their emotions from their stance, B) their identity and ego is built upon this stance, and C) no one will let you come by and sweep away their identity/ego without a fight, especially when their emotions, repressed or not, are swarming.
I guess it's easier to trust the judgment someone who's aware of their emotions than someone who's got a glaring blind spot.
Perhaps you misread me. I'm claiming that saccharine niceness goes WITH vicious back-stabbing. Because people who are vicious back-stabbers are going to be inclined to overcompensate with niceness.
>I find that someone who doesn't work well with emotions is typically bad at reasoning too, because the arguments they make end up expressing their feelings in obtuse ways.
I find the opposite. In science, in order to assess your evidence, you often have adopt a somewhat dispassionate stance, and make judgements unclouded by emotion. An inability to process emotion, then, can be a tactical advantage, because it doesn't incur the overhead of compartmentalization (which taxes my brain). And to go to the extreme, I have had had more than one friend who were extremely impaired in their ability to process human emotions (I think the in thing is to label this 'asperger's') who were extremely good at reasoning, as evidenced by the fact that they were brilliant mathematicians, and I don't mean number crunchers - full on propositional logic and proof-crafters.
I don't think we really disagree. I think that if conflict is avoided through saccharine niceness, eventually it will come out as vicious back-stabbing, and vice versa as you've noted. So the two apparent opposites actually go hand-in-hand, they feed each other. But when I say a middle ground I mean something like firm politeness. I don't believe that brutality paired with honesty is a middle ground; it's just an aggressive solution instead of a passive aggressive one.
I think when I say bad at reasoning, I really mean anything that at least partially involves a judgment call. A lot of the scientific process is deciding which experiments to do. Yes, an inability to process emotions is generally going to mean you're suited for working with logic, and as such might excel at proofs, programming, theoretical physics, stuff like that.
But the problem I've noticed is that people's careers often get derailed because of emotional issues: it could be because they're passive, they can't handle anger, they get stepped on or taken advantage of, they have grandiose dreams about their research, they become unwilling to admit they were wrong, etc.
To some people, myself included, frank honesty is respectful. I could be alone here, but I can find passive-aggressiveness, needless euphemisms, and the like to be patronizing. Treating me with kid gloves is like saying, "I have an opinion, but I don't think you are emotionally mature enough to handle it in its raw form."
It's important for "jerks" to be conscious of how their behavior affects their relationships with coworkers. But it's equally important for "nice" people to do the same.
exactly. That is how I feel when someone treats me with kid gloves.
It's impossible (for most of us) to switch this context-reading off, therefore be very careful to use neutral language and emphasize what is not implied if it could be understood that way (unless you do try to tell the person they're stupid - of course you shouldn't lie).
I've had a team break up over this. One teammember used languange he thought was just honest, but managed to insult and demotivate everyone else by making them feel ignorant in everything they did.
TL;DR: It's good to be open and honest, but make sure subtext is not negative (you cannot have no subtext); unless maybe the person you're talking to knows you respect them anyway.
Ah, within reason, you do, especially when people are as rational as we all aspire to be. Those people-skills books people recommend around here tell you how.
I agree with the rest of your post though, just, you can only fix so many emotional misunderstandings before the general atmosphere goes south. Sidestepping and ignoring several insults every time you try to discuss a problem becomes very unnerving after a while. Thing is, those people usually don't notice they're doing it. When you treat them the same way you feel they treat you, they feel hurt. Well, bad months, I should stop here.
I have known programmers who are brutally honest, but they do it because in their mind that is how adults talk to each other and this is how they wish to be treated themselves. Being 'tactful' in their mind is the equivalent of treating the other person like a child, and inherently disrespectful. I can see that point of view even if i don't think it is productive.
And then i have known programmers who are just bullies and mean. The difference is that they bittercoat things, making them sound deliberately worse, and they push people down so they can feel smug. That is not ok.
My problem with this is that we often take what's easy and make it into a virtue. It is easy for us (esp. developers) to take the easy way out and decide that one must act the same no matter the context.
The truth is that your audience matters. Outcomes matter. Did the people in the room hear your message in a way that is going to move them closer to fixing the problem? No? Then you lost. (And your brutal honesty is just going to sound like complaining or anticipatory ass-covering.)
There are some organizations and people that are immune to criticism no matter the form. There are many other organizations and people that will accept criticism if it's phrased correctly for the context.
There can be bad people, and not just programmers, involved in any business enterprise. I try to look out for them and see what's coming when they want to sink a project I am on. I have also found that there are plenty of people who will not acknowledge the simple truth that I am talking about. They will say, "that is insane; how could any actual stakeholder want to see the project fail?" The answer involves looking at the various definitions of evil, which is a fascinating exercise. Sometimes people want to see harm come to others for various reasons, and that is the real world, sometimes.
Another thing I've heard about what some called the "Procrustean bed" of SAP is that it can get terrifically resisted by stakeholders because it insists on rational business processes, and plenty of companies aren't run very rationally.
My family saw that while computerizing one doctor's office in 1980: after the data entry was done, the printer would just not stop in the first accounts receivable cycle. Turned out the office workers sent out a fixed number of bills per month (something like 200?), no matter how many actually needed to be sent. They didn't totally understand what was happening, but they knew "the computer would tell all".
That and a dozen other things like it taught me the importance of making sure the users at the lowest level are really on board. If they want it to fail, you're better off solving that problem, because delivering a working system won't be enough: the people are part of the system.
I recognize that it's up to the managers to straighten these issues out, but they are people too, and often have their own agenda not perfectly aligned with the success of the project.
In the one recalcitrant office the workers never got a chance to really sabotage the effort, since temps did the big block of one time data entry and specialists set up everything. Because the conversion revealed they were in the process of making the office fail due to laziness they were sacked and not in a position to sabotage the system afterwords.
In a lot of fields people will be very polite to your face while stabbing you in the back and turning the knife. In software the jerks are generally very upfront, showing far less "people skills" but at least showing you their cards. And while I like to think I've never been a jerk (you'd have to ask people who worked with me to be sure), I've noticed there tend to be two classes of jerks in software development and it may be important for you to try to recognize the distinction.
The first kind of jerk is the grumpy old coder who shoots down your idea to use the latest wiz-bang tech to rewrite your entire project for the next release. This guy has very little people skills and may not do a great job of explaining his position, so he seems to just be shooting you down for no reason. THIS GUY IS PROBABLY RIGHT, though. And his jerkiness comes from years of battle scars.
The second kind of jerk is the cocky (usually younger) developer who is sure he is right about every decision despite having limited real world experience. At first blush he looks like the other kind of jerk (except that he's probably younger). THIS GUY IS PROBABLY WRONG. And his jerkiness comes from a lack of real-world experience combined with an over-inflated sense of confidence coming out of the school years where he was the smartest guy in his school, but mixed with unacknowledged self doubt. Sometimes this kind of jerk grows up to be the first kind of jerk, but sometimes they remain the second kind of jerk.
I'm a young manager that has older coders and I defer to their wisdom 90% of the time. The other 10% I prod them to explore some of those 'wiz-bang' solutions to discover something that they hadn't thought of before.
I gave two stereotypes, yes, and anyone reading what I wrote should be aware that those are stereotypes and not always or exactly applicable, but I didn't write the original article and if anything I'm breaking up the more general stereotype they gave of "software developers are jerks", though into only two other stereotypes. I also meant to imply there is also a third class, which is developers who just aren't jerks at all. You can be a software developer and have social skills, I've worked with many of these people. Only about 35% of the people I've worked with were actually jerks.
To be clear, I don't think anyone should be a jerk, not even the people who are right when they are being jerks. But given the choice between someone who is going to be a jerk to me upfront in a meeting where I can rebut their arguments if I choose to do so, and someone who will nod and smile to my face and then talk shit behind my back to other coworkers and rally political forces against me, I'll take the first type of jerk any day, and those kinds of jerks are far more common than the other kind when it comes to actual software developers, in my experience.
> However it becomes bad when they refused to learn new (community accepted) ways of doing things that are either REQUIRED or lead to efficiency down the road.
I totally agree, which is why I'm 40 and I know JavaScript very well and I'm familiar with a lot of new frameworks using the language and write a fair amount of JavaScript despite the fact that I think it is a terrible language. And on the flip side of that, my absolute favorite language to code in today is Go, which is very "new" by programming language standards.
> I'm a young manager that has older coders and I defer to their wisdom 90% of the time.
Aren't we mostly agreeing then? I said that guy is "probably right", not "right". 90% is much higher than what I would normally consider "probably".
It isn't a saving grace if someone bullies you 'upfront' on a daily basis - or if they (like you and almost every man in this industry) assume they are right and have more real-world experience and are geniuses.
I've been wondering how the "everyone is special" and "everyone wins!" trends that people have been teaching their children would manifest. This looks like a good example.
If you do anything that other people will see, some of them will criticize you. That's just life and not necessarily a bad thing. There isn't enough room for everyone to be special and winners. In order for someone to win someone else has to lose. So develop a thick skin. You are not your work. If someone is criticizing you instead of your work, then you learn to ignore them. They just want to be mean. If people are criticizing your work then you learn to pick out the real critiques so you can improve the next one.
I guess women should all just get a thick skin and stop thinking they are special. Because any abuse they might perceive is illusory, and their bullies are actually superior in knowledge and are justified in acting like jerks whenever they feel like it. After all, this is a meritocracy, how could it be otherwise? Whatever you get, you deserved.
I agree with the rest, but winning is not always a zero-sum game.
People, on the other hand are emotional and mostly stupid (even the smart ones). They are going to lie to you, even if unintentionally, and you're required to lie to them in return. The person you're meeting might have had their family pet die last night and will react to you in completely irrational ways.
It's no wonder why when your job is to deal primarily with emotionless computers all day that it's tricky to then context switch back to lying and walking on eggshells.
Here's the secret: acknowledge them. Acknowledgement doesn't mean you smile and nod nor does it involve using the sentence structure ..., but... Try to understand their perspective and communicate through that perspective. Instead of asking others to see your perspective, it's much easier to do the reverse. Most arguments and personal qualification of someone being a jerk has to do with communicating from 2 different perspectives with neither side willing to take some time to understand the other perspective.
Most devs are fairly logical creatures. Understanding their perspective shouldn't be hard. However, it does take a bit of practice. If you can't understand where they are coming from, just ask more questions.
I've got a new job.
Like an old manager of mine who told one of my team members in her review, "I'm not giving you a pay rise, but it's not because you're black." I mean, what can you say to that? She was in tears. The guy was so self-centered he didn't even realise that the things he said might cause offence.
To me, he sounds like someone who's very defensive about a topic at work because of the conflict involved. And until I have reason to believe otherwise, I'll assume it's because of one of the two reasons I mentioned above (or both).
I had to fight a lot indifference when I started, now it is the opposite problem, when I say something to people in my team, some of them smarter than me they believe it too much, like I was God or something. The same happens with your product, people trust your reputation.
"Jerk" is such a victim mentality word, in my opinion, when you want to create something that is new, people can't see it like you do. It is as simple as that. Now when you make it and success everybody says that from the first day they believed in you(not true) and after you make some repeated successes they continue not seeing it but they trust you.
The fact is that talking is cheap, and some new developer has no reputation at all, so you will have to prove with code that you can walk your talk.
1. http://www.amazon.co.uk/Dog-Listener-Jan-Fennell/dp/00065323...
The first big thing is that they are expected to be well behaved while I slowly put their food bowl down. If there is a hint of growl or lunging, the food bowl comes back up again and only when they have restrained themselves does the bowl start to go down again - and slower than before. My dogs are seniors now, but they 'understand' that he who giveth the food can - and will - taketh the food if they give me any grief.
The second big thing is that they are expected to give up whatever is in their mouth on command. This requires ongoing training, and also started when they were wee-little pups. They understand that if I put my hand out palm-up, or grip what is in their mouth, and tell them to "release" they are going to loose whatever is in their mouth. If they give it up without a scene, then they get it back in a few moments. If they make a scene, or I have to pry it from their jaws, then they may not get it back. This has helped in situations when they managed to get something they shouldn't have (e.g., a dropped grape).
I had my best friend kill himself on May 31, 1999 when he couldn't find a job and unemployment was running out. He was the best C++ programmer that I knew at the time. He worked at a Startup called Polygon that was mismanaged and abused their employees and then fired them all.
I did all I could to help him find a job, but nobody wanted to take a chance and hire him.
I had many friends I made working IT jobs end up killing themselves because they couldn't find work. Mostly Generation-Xers.
I got suicidal myself sometimes over how management had abused me and treated me. They didn't seem to think I was a human being, just some subhuman third class person they could treat like dirt. Had I worked at a company that treated me a different way I would not have gotten sick and ended up on disability from the stress.
The thing is, all of these, with the exception of that last one, are talked about quite a bit.
It is odd that management claims there is a lack of qualified programmers out there when so many programmers are out of work and qualified. Me, I am told I am overqualified by companies begging the US government to raise the H1B Visa cap because there are not enough qualified programmers to hire. It is a form of bullying and a slap in the face of anyone qualified who wants to earn a decent wage and benefits but is called overqualified because of past salaries they had earned.
Working in an IT department other employees can abuse you, call you names, even physically attack you, and you cannot do anything about it. If you complain to your manager they write you up for 'communication problems'. The average non-IT employee cannot tell the difference between a Microsoft Windows bug or a bug in the custom software that is written and thinks you can fix a bug with Windows or Office, etc. When you tell them you don't have the source code to Windows or Office, they get mad at you. Management tells IT workers to lie to the other employees and tell them you are working on fixing Windows and Office bugs, which is basically lying.
Jean-Paul Sartre
"The people I deal with today will be meddling, ungrateful, arrogant, dishonest, jealous, and surly. They are like this because they can’t tell good from evil."
You USA-nians really have to work on changing your high school culture. Statements like this are so frequent yet so foreign to me... why is aggression and abuse frequent? Why is it tolerated? Why is it aimed towards those with "intelligence and ability"? Why don't you work on changing your society once you grow up? women rights, end of racial segregation, etc. prove that you can change the society you live in in a relatively short period of time. Why you all complain but don't try to change it?
I did have a bad boss once at my first programming job - back in 1987...
> I’m actually working on a much bigger project to distill some of these specific software developer career tips into a bigger package.
Anyway, he's making general and simplistic arguments for whatever reason. Programmers have strong opinions and will argue them vigorously. I agree with Socrates “When the debate is lost, slander becomes the tool of the loser” and we should all not tolerate that, but while the argument is going on, if you can't join in and make yours don't blame the community for being intolerant.
If we were a licensed profession like medicine where you have a third party proof of your competence and you weren't constantly trying to guard your reputation, I bet you that it would lighten people up a lot.
Doctor's and Academic's ego's come from having to maintain the same reputation that a computer person has to maintain.
However, it's worse for the computer monkeys because we have the same level of intellectual capital to master yet we have no license to protect our years of knowledge which makes the industry way more cutthroat and step on your buddy to get ahead in my opinion.
Just my observations.
You've never hung around with doctors outside of the hospital, clearly. Their egos, in general, dwarf any I've encountered in software or hardware.
One of the reasons I dropped that as a possible career, and one reason I like software and systems, for with a modicum of care you can recover from most mistakes.
Male technologists, which make up the majority of the SW development community, tend to be particularly good at the first and bad at the second:
http://www.syntagm.co.uk/design/articles/note1271-hudson.pdf
This research looked at the relationship between empathy and technical work among IT workers. For both women and men, less technical work (i.e. public oriented) tended to have those people with more capacity for empathy. For women, there was a small decline in empathy as the researchers moved towards purely technical work. However, this drop in empathy was far, far sharper for men.
Take your own conclusions about this, including its relation to the presence (or lack thereof) of women in IT.
I have worked on 13 project teams in the last 20 years. Every single team that has had more than 3 people has contained at least one whacko that has made life miserable for everyone else.
That part seems like victim blaming to me. If people are mean to you without reason, you shouldn't put up with it. You should tell someone. Maybe they're approachable and you can confront them directly, or maybe not. But you absolutely should not get used to it or just accept it. You should do something about it.
I say this because the things the author mention aren't exclusive to software development. I do buy that software developers have less people skill on average in dismissing creativity than some professions (say PR) though.
I think the main reason this happens in Software development is that people have big egos and consider themselves more intelligent than others.
> Chances are if you are doing something unique or you propose a new idea, you’ll have more critics than supporters.
In my experience, it's not fellow developers who have issues with new (better) ways of doing things -- it's the non-technical management types who see disruption solely in terms of the effect on office politics.
This is denial of the very real sexism in our industry.
Don't agree with the blog's author though, arseholes being arseholes is a general fact of life and there's no special link between them and programming.
What doesn't kill you...
Life is to short to spend it with jerks!