Programmers Are Assholes?

Right now, I’m lucky to work in a great team where everybody is a wonderful human being. However, during the years in software engineering, I’ve encountered a disproportionate number of assholes comparing to other fields or professions. Does coding affect someone’s personality negatively or it’s the other way around? Do computers attract certain asocial elements, so they can put on the headphones and not talk to people? Why there are more assholes in software engineering than in real estate or food&beverage?

Machines are binary in their nature. There’s always a reason why X is not Y. There is usually a strict causality and clear boundaries: true or false, zero or one, genius or idiot. Maybe that’s why people who already have a duality mindset (Steve Jobs early in his career?) are lured into computer science. In the outside world, things are often uncertain, fluid, flexible and colored in shades of grey (and other pallets). However, in the world of functions, expressions and algorithms there is virtually no uncertainty. There’s more of black-and-white contrast, and more “this works” and “this doesn’t work”.

Another path of thought: for somebody to be good at programming, he/she needs to be comfortable with processing meaningless steps — akin to an interpreter or compiler. Indeed, any algorithm for a machine is meaningless, and often to find a bug we must follow each statement line by line. Keeping in mind the meaning of the end task only hurts the human debugger.

So in this cruel world of bits and bites, where incomprehensible labyrinths of code lead to triumphs or tragedies (with nothing in between) … put people first, please don’t be an asshole!

PS: The title really should have been “Why there are more assholes in programing vs. other fields?” But I just couldn’t resist the temptation of using something catchier.

Author: Azat

Techies, entrepreneur, 20+ years in tech/IT/software/web development expert: NodeJS, JavaScript, MongoDB, Ruby on Rails, PHP, SQL, HTML, CSS. 500 Startups (batch Fall 2011) alumnus.

11 thoughts on “Programmers Are Assholes?”

  1. Why I switched to infrastructure, now I’m writing Infrastructure as code and have become a larger asshole

  2. I blame the advent of cloud solutions reqiring lazy developers to step outside their comfort box and having to learn something new for Christ sake. It’s amazing how many IT professionals carry with them the burden and biases of something they learned in a text book and spent the last 5-10 years working on. When they elect to play dumb and decision makers decide to outsource vs getting certifications for their staff, everyone feels the inadvertent impact across the team because the work goes out to the lowest bidder who gets screened by some novice procurement lead. Then when work gets underway, companies rarely set aside enough budget for PM and project sponsors where each agency is firing on different cylinders and change management gaps slip under the radar. Finger pointing starts when things go wrong and outsourced service providers provide half azzed documentation so internal staff can provide a forward strategy. I think it all boils down to laziness on both ends of the spectrum. Coders are either on the edge fearing for their jobs or simply want no part of change. Then when a new CIO comes onboard, the vicious cycle starts all over again when he/she fails to recognize the underlying problem and tears out a solution that hasn’t even had time to mature across the organization. Then end users and partners start beechin at the helpdesk and some BI/ERP/KPI performance monitoring application, which was set up incorrectly in the first place, sends abstract operational reports off to some big wig who doesn’t even challenge the information accuracy. Hence, upper level management walks into a room all sitting around with their thumbs stuck up their butt, gets paralysis through analysis, and janky decisions are made requiring everyone to reinvent the wheel. Welcome to the IT industry!!!

  3. After doing many interviews the last few weeks, I also am amazed at how many pompous idiots are doing development.
    They ask for an approach and if it’s not the exact answer they were expecting, you’re nothing. When the job of programmer is so much more than just coding. It’s productivity, flexibility, able to interpret somebody’s code, and production process control. New development is less the day job than maintenance and improvement.
    Come to think of it, many were millennials – the future is not bright.

  4. One thing that is vitally important to understand in this dialog (which this piece sets up excellently) is that their are behavioral traits we all have that are indicators of being on the Autism Spectrum. There are many books on the subject as you may know and I strongly suggest them.

    I’m a Technology Director who has worked mostly in the creative space of advertising and consumer facing experiences. Not corporate or building B2B applications. I would like to consider myself a creative person and enjoy working with creative directors on the technology components of a large campaign that could include also print, TV and even still radio. I’m not blinded by the bleeding edge of technology because whether we want to believe it or not, the masses are not adopting as early as we are. And sure you can look at all the clever laws and theory’s about technology growth but the impact on real people is limited if not too small to sample. It’s realities like this that shifted my focus away from arrogant technology-first solutions to people, usability, and scale first. Having to focus on people puts you in a different headspace when building consumer technology.

    The roots of understanding people and the neurological configuration required to do so in an average manner with average expectations from others (neurotypicals) is not easy for many creative problem solvers and those of us drawn towards the binary clarity of process based activities. Programming of course but also cooking, music and mechanical work could be considered. It’s worth searching for articles about how adults have coped with highly-functional autism, which was up until recently was separately called Aspergers. For a great Hollywood portrayal of a character with Aspergers, I would suggest Benedict Cumberbatch’s portrayal of Alan Turing in Imitation Game. The Wikipedia article on Aspergers also is very informative.

    Asshole developers, brogrammers and anyone else who gets satisfaction from using knowledge as a weapon, most likely have an undiagnosed behavioral disorder. The biggest thing to remember is that there are millions of people out there that have found live changing help by first understanding that they have a disorder. A runtime error. A bug in the software that can be managed by executing a series of procedures with specialists. It’s not a strictly binary process but it is a series of steps. The changes will not only positively affect the working environment but the impact will be measurable in the personal life as well.

    Wikipedia Asperger

  5. Nice points. I also thought about fake non-conformity when I read about rebelliousness. They dress or behave differently, but conform in a bigger picture of their life… in other word, shallow non-conformity.

  6. This is, in my (sadly long) experience, definitely the case. I think it’s an arrogance that derives from a over-inflated sense of worth and skill combined with a deep seated insecurity probably born out of social awkwardness. The hardest to deal with are those who have only ever concentrated on computing and not come to it from more difficult subjects like science and engineering. I’ve worked with some extremely skilled and intelligent people and they have always been easier to get on with.

    IMHO computing is by far the easiest of all the engineering and science subjects, but these a-hole programmers seem to think it is the most difficult. They think they’re rebellious (they’re not – they’re more often boringly immature), geniuses (they’re not), always right (they miss the bigger picture or get hung up on an irrelevancy), and are generally ungenerous in their knowledge.

  7. Late to the game here, but I thought I would try to share some insight. I’m one of those assholes, or at least I used to be. It was probably the biggest flaw I had, and I worked diligently to correct it over the years. It took about 5 years of trying before now being regarded as a very approachable sr. engineer. I have zero complaints regarding my communication style these days. Whereas 5 years ago, people would actively avoid going to lunch with me, they would surrender in any technical argument almost immediately, and they would talk about me negatively behind my back. Truthfully, I didn’t give a shit. Let me explain why, and how that changed.

    Before I ever took a single class in programming, while I was still in middle school, I “mastered” several languages and technologies. I quote “mastered”, because I only thought I had mastered them, many years later, I now know how little I actually understood. Nonetheless, I was very proficient at learning things on my own, and just had a natural talent for programming. I then started taking classes, first in HS, and then in college. It was ridiculously clear that I was miles beyond all of my classmates. I would routinely finish the entire terms workload in a couple days, and then just spend the rest of the year working on the projects I wanted to. In college, I never attended the labs, barely put in any time, and still got straight A’s. So I was getting some pretty insane ego boosts, but my classmates were all new to it, so no outlet for which to stroke the growing ego.

    Now comes my first job as an intern. I was hired to work at a web services company. It was the only job I applied for, and I got it the day of my first interview. They called me like 20 minutes later and gave me the job. The first few weeks they dumped all kinds of grunt work on me. It was annoying, and I’m obscenely productive when I want to be (average 2-4k LOC a day), so I blew through every single task as fast as I could. My manager was starting to hate me, because he was spending more time figuring out what I was going to do next than he was doing his actual job. Not long after, they trusted me enough to hand me a fairly large project (one that was not handed to some of the more senior engineers). I knocked it out of the park in about 6 weeks. It was infinitely more advanced and well-designed than anything they had built prior. Again, huge ego boost. After that, I was basically given free reign to just build/refactor/replace whatever I thought needed work, and started adding new features as well. So about 1 year into the job, I was basically operating as a Sr. Engineer, but as an intern.

    Now even though the stuff I was producing was more sophisticated than they had previously seen, it was not perfect. The problem to this point was that I had no mentors. I was so far beyond all of my teachers, professors, and classmates that everything I learned was basically from trial and error on my own time with my own projects. Before I had formal training on design patterns, I had actually figured most of them out because they are the natural solutions to the problems they are created for. But I didn’t get all of them exactly right.

    Sadly, I started to think that I just knew better than everyone else. I started to become resistant to other people’s ideas, because 90% of them were just bad. In reality, that 90% figure is still probably true, but the way I handled things was completely wrong. I’ll get to it shortly, but even though 90% of initial ideas are flat out terrible, a good chunk of the time, with a little tweaking, they become brilliant. That’s why brainstorming is so powerful, but not if you shut people down before you get things right.

    So there you have it, the asshole was born. I dominated technical discussions. It was trivial to ensure that things were done the way I wanted them to be done. Developers were unhappy, I was not respected as a human being, just as a productive engineer by my bosses. It wasn’t all bad. I was bulletproof. There was no way in hell I would ever be fired. I blew up at exec level managers on occasion. Some threatened to quit if I was not fired, and still, not a single repercussion. Logically it makes sense. I was providing equivalent output for maybe 8 of their existing engineers and it was showing. I demanded raises, and was nearly always successful. I made some enormous headway in my career during this time.

    So now the transition from being an asshole, to wanting to change. This happened when I started moving into a leadership role, and was more accountable for the business impacts of the code I was working on. I began to realize that a single developer cannot possibly manage and build every aspect of a large application long term. It’s too much stress, too much work, and it consumes you. I reached a breaking point, and there really wasn’t much I could do to get out of it. I had single handedly built a huge complex system, and every time something went wrong, I was the only one who understood it well enough to fix it. So my just beginning leadership role, which I was excited to dive into, slowly devolved into a bug fixing engineer.

    This was the moment I realized that the only way to successfully build something large, is if a group of developers work closely together, all agree on a design, and work equally to achieve it. In this way, everyone has a stake, everyone knows how everything works, and there are ample resources to train new additions to the team. In other words, it’s sustainable and scalable. Luckily I was transitioned onto another project due to outside business forces, and was given a whole new team, new project, and zero negative history. I was also fortunate to receive what I thought at the time as “bullshit corporate ‘professional communication’ training”, but have since realized was a massive influence in my transition. Many of you may know where this comes from, but a single statement did it all “Seek first to understand, then to be understood”.

    For the next few years, I forced myself to stick to that mentality. No more would I dismiss anyone’s ideas before I completely understood what they were thinking, and how they had arrived at that conclusion. Only then, I would begin articulating my response. What I found was that more often than not, the original idea was just stated wrong. The person actually had a great idea, they just didn’t know how to properly communicate it. Sometimes it was a bad idea, or it was misguided or misinformed. Even those ideas were often salvageable. I can’t tell you how many times someone pitched a design idea and after hearing them out, I came back with “well, no, that won’t work for this reason…, but, that’s actually a really great design for this other component over here… let’s explore that some more”.

    This took some getting used to. I had to go from constantly seeking ways to stroke my own ego (which as you might imagine, is quite satisfying, but never enough), to trying to indirectly stroke the egos of my team mates. It takes that “yeah, I know I’m crazy good at what I do. I know others know I’m good at what I do. I don’t need to prove anything. Instead, I’m going to help raise everyone else up. I might even learn a thing or two”.

    People love to be validated. Even if you tweak someone’s ideas into something completely different than they originally proposed, and even if it was effectively tweaked into the design you had in mind all long, as long as you carried the conversation correctly, they will believe it was their idea all along, or at least a team effort. Realistically it’s not often I have to do this anymore. My team these days is great, and they come up with some impressive stuff. But occasionally I do need to maneuver things a little so we don’t do anything completely crazy or reckless. That is my job after all.

    As I began getting better at this, and the team apparently didn’t even notice I was lacking in these skills, life started getting a whole lot easier. Everything was far less stressful, I put in more reasonable working hours, I had healthy relationships with my co-workers, and people were watching my back. The better I got, the smoothing things became. Today, I consider my job to be pretty awesome. I really like my co-workers, we all function as a great team and get a lot of work done, we all teach and learn from each other, and while we recognize that some people outperform others, it’s not thrown in any ones faces (it’s just a fact).

    I still out perform every developer I have ever met, in almost every aspect of my job, and by a very large margin. The key difference today, is that I now appreciate the difference between what a single person can accomplish, and what a well-coordinated team can accomplish. I’m a great dev, I want to accomplish great things. I can’t do that alone, and I know that now. Being an asshole will always be a roadblock to greatness for that reason. I now also have an understanding that I don’t know everything, and I’m not an expert at everything. No one is an expert at everything, or even a lot of things, it’s just a reality. Even someone I regard as a lesser skilled developer, may be much more proficient at C# than I am for example. If we’re working on a project in C#, I want to learn as much from him as a I can, and if he thinks I’m an asshole, or if my ego is so big I can’t bring myself to admitting he knows more, that will never happen. Which is not to say I wouldn’t become more proficient then he is at some point, and maybe faster than he got there, but that’s beside the point. I have a team member who’s great at it, I should leverage that. I don’t need to be the expert all the time.

    That’s the long winded version. I suppose you could boil it all down to the following. Developers who are assholes, probably got that way because they never had someone to look up to. If you always saw yourself as the uber engineer, from childhood all the way up to the professional world, that’s your reality. The longer that went on for, the harder it’s going to be to break out of it. Perhaps with this insight, you might be able to find a way to give your assholes a little push in the right direction. Maybe be a little more tactical with how you craft your next idea pitch, and send it in an email so he has to read the whole thing. When/if they shoot you down, ask for a detailed explanation. Claim you aren’t trying to change his mind, you just genuinely want to understand why it’s a bad idea so you can improve future ideas. If he thinks he’s “mentoring” you into his line of thinking, he’s more apt to listen to your next idea. Just be prepared. Until he comes around, you need to make the asshole think your idea is actually his idea, even though it should likely be the other way around. Well, it’s a good skill to have all around the table I guess.

  8. My worst experience was when I joined a (startup-ish) company with about 100 employes and this guy made a mess out of their realtime notification system. It worked well but it wasn’t very robust (single point of failure) and they used WAY too many different kinds of technologies to make it work – So it was a huge pile of unnecessarily complicated mess (multiple instances written on at least 5 different technologies – They could have done it with just 2 different technologies).

    One week into his code, I was just starting to get my head around it and I had just started implementing a solution – Then basically he recommended to the CTO to fire me because I didn’t write enough code that week! I got fired that same day.

    The company had an environment which fostered arrogant assholes – All the good people got fired quickly because ‘trusted’ assholes were successful at defending their shitty work. The company had a VERY high employee turnover.

    I was pleasantly surprised by how friendly developers form other companies were after that.

  9. I agree, but also would do nothing about it. In fact because so many are, picking up gigs is like taking candy from a baby. Keep it up I say lol. If you can get work being a dbag, more power to you. I know that’s not going to work in the long run, but if you are incapable of learning, then you enjoy the fruits of your labor lol. This seems to be common in the under 30 crowd.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.