Engineers Who Are Jerks

13 points by throwawayjerk ↗ HN
If you've ever been on an engineering team, sometimes people can be abrasive and hard to deal with.

Have you ever been that guy? How did you work on yourself to change?

Asking for a friend

15 comments

[ 2.1 ms ] story [ 43.4 ms ] thread
I got older. As I got older, I got more empathy - maybe partly just from getting older, but partly also by working on myself. I prayed and meditated a lot, trying to figure out why I was chasing the things I was chasing. The ego boost of being a jerk is one of those things I was sometimes chasing. Why? What was I really looking for there?

I also got married. And then I had kids. I got to see, up close and in my face, the damage that being a jerk did to other people - people I cared about, people that I either had to just continue to look at the damage or try to pick up the pieces. Seeing the hurt on peoples' faces quickly took the fun out of being a jerk.

I also got married and had kids and have gotten older and realized being a jerk is selfish.

I started thinking about other people and what they could be going through. Physical and mental health, especially for parents, those with aging parents, those who've experienced loss.

Every person is a universe.

Berating someone for not reading the docs, which takes effort (!), became painful and a source of shame.

What is "hard to deal with"?

I definitely can be hard to deal with if you try to run BS by me. Things like unnecessary refactors for example really rub me the wrong way.

I think that sometimes hard NO is the only right answer. "No, we don't need to do this, it's unnecessary, it can introduce bugs, and it wastes reviewers time. Not LGTM". I can see how this can be seen as "abrasive" and "hard to deal with". But sometimes swallowing your ego and abandoning a change is the right answer.

I hear you! I think that a hard NO sometimes can be misunderstood or just straight up not understood at all.

I once got a PR review that said “doesn’t confirm to SOLID principles” Well, being self taught I didn’t know what the heck was he talking about, what part of my PR was he talking about or anything else! In the complete opposite side of the spectrum one of the most effective engineers I’ve meet (it was scary seeing how many story points he finished per sprint!) left comes more along the lines of “have you considered using a lambda function for this? It might make the code more readable and we wouldn’t need to go through the list 4 times. Here’s a way you could implement it: ~actual working rewrite of my function as a lambda function!~ Lmk if it doesn’t makes sense!”.

That teammate helped me grow more than anything else in that company, and the egregious mistakes I used to make, I only made them once!

So yeah, I think that there are occasions where NO is the only correct answer, but there are definitely multiple ways to say no.

If it is narcissism (never their fault, poor self-esteem, big external ego, manipulative, entitlement, can create a good impression then backstab) then it depends on whether it is a friend, or yourself.

If your friend has narcissist tendencies, the usual advice is to very carefully extricate yourself, there is little hope of change. See https://youtube.com/@SurvivingNarcissism Skip first 40 seconds and the last 2 minutes of his vids.

If it is you, then seek the opinions of others on your faults, without hitting back with excuses. We can easily see faults in others. It is hard to see faults in ourselves, and even harder to change our behaviours. See https://m.youtube.com/watch?v=CUp5iBYroBA

I probably have been that guy. Especially when younger, and very 'in the weeds' of code. It was laced with my opinions about how to solve the problem. I thought my main outcome was some "pure" sense of well implemented code that stood the test of time. I really prided myself on my craft. Who were these interlopers coming in to my perfect paradise and fouling the place up?

Then I became more senior and realized:

(a) it turns out not everyone thinks like me and what I think is 'pure' (surprise surprise!)

(b) holding tightly to my attitude of good code, means I live by some attitude that only I can solve the problem. Which is a sure way to get overworked and burn out.

(c) it's also cool + fulfilling to level other people up and grow them. And often they want to learn. Because then they bring their other fun + hard problems to you, and you also don't have to maintain the original stuff forever - see point (b)

(d) I was embarrassingly wrong enough to need to learn some humility

(e) Related to (d) I won't grow if I always think the same

My guess is that in my case, I experienced some early narcissism - basically all teenagers and young adults - but grew out of it. Especially as I matured, had more leadership roles, and had kids

Note though that even to this day, I get the "grumps" when I have to manage some sudden opinion not in line with mine. I eventually swallow my pride and it usually is an educational moment.

I've learned I'd rather have a well loved piece of code held together with duct tape and bailing wire with the misery shared with the team, then my own perfect, isolated place where only I understand how things work.

I’ve been abrasive and cold and was intimidating, due to a mix of my physical size, my assertiveness and tone. I had just left the military world. The civilian world was much more laid back.

Somebody just politely informed me. I had no idea. I worked on it.

I was USMC infantry, and I have PTSD. I've been working on it for it for years and I'm still having a hard time. Remote work is a huge blessing. I can sit and think about my responses and temper them. That doesn't work as well face-to-face.
The military taught me that most things aren't personal. Unfortunately, most people seem to take most things very personally. I'm still struggling to find balance.
Why would I change? I'm perfect! It's the rest of the team that needs to change, or get fired.
I feel like I have 2 personalities at work: 1. Serious personality. I want to be relentless in achieving the best possible solution within our constraints. Good enough, isn't good enough when we can do better with the same resources and time. In meetings, I'll push people, argue and present data that's contrary to the proposal. At the same time, once we make a decision, we move on and don't revisit old decisions unless something happens that fundamentally changes our assumptions. My mental model is that these professional interactions should be devoid of any personal biases and even heated discussions shouldn't be taken personally.

2. Leisure personality. When I'm not talking about work, chatting about restaurants, vacations, etc. I'm more interested in learning about my co-workers. What they like doing in their free time, etc.

I tend to not let the 2 mix in the same interaction. Recently, I've gotten this feeling that people may have a hard time distinguishing these 2, especially in a remote first world. Generally in a non-remote world, there are enough small conversations before / after meetings that people realize that my serious side, isn't my only side. I care about you as an individual, but we still have professional pride.

Uff, I might have been that guy! I think it came about from my first couple of tech jobs in which I was either working alone or was the most knowledgeable one on the team and thus pretty much anything I said happen. When I came to work with teams I’d “care too much” as in I’d want functions to be called in a certain way, or logic to be split is X or Y way, or some other random thing to be implemented in a specific way.

Not only was that, I’m sure, very annoying to my coworkers but it also brought be a lot of anxiety. I had this stupid idea that “I knew” and others only “knew” as long as they agreed with my knowledge.

I’ve come to realize that that is quite stupid and a huge source of stress that I could just cut away!

As a policy nowadays I accept pretty much any opinions or changes to my PR as long as is not something that actually affect the product. I remember once having elevating a disagreement all the way to the CTO about a variable name! so, no, a coworker things that X should be called Y? For sure! That we should use .forEach instead of a for loop? No problem! I don’t own that code, we as a team do, and thus I no longer “care”. Don’t get me wrong, I still have opinions and share those as needed, but I’ve come to realize that there are many ways to accomplish the same thing, that “elegance” is not really a value that business holds in high regard (business == $$), and that getting stuff done and getting along makes me as an engineer very valuable to the company.

I nitpick on my personal projects, I write “elegant” (at least my definition of it) code for my editor config file, and I’m way happier that way!

I have met very competent people that are a bit arrogant, and personally (while I recognize it is not ideal) I think I can deal with that. What I find more difficult is to deal with incompetent people who, on top of it, are arrogant.

If you are going to be arrogant you better be sure you are indeed a rock star :) Not that I recommend it.