I recently came across the term “Alpha Geek” in “The Manager’s Path”.
The Alpha geek is usually an excellent, effective engineer who is driven to always have the right answers, and solve hard problems.
Alrighty! I want to be one! Where do I sign up?
He knows exactly why that thing you’re trying to do won’t work, and when it doesn’t, believe me, he’ll remind you how he told you so. If only you had listened to him and done things his way! At their worst, alpha geeks can’t let anyone else get any glory without claiming some of it for themselves. They are origin of any good ideas but had no part in creating the bad ideas, except that they knew they would fail.
Ummm… I don’t… think… I wanted… this?
The alpha geek can be very rigid about how things should be done and closed off to new ideas that he didn’t come up with. Alpha geeks can’t stand people complaining about systems they built or criticize their past technical decision… Are you eagerly seeking out the gotcha, hunting for mistakes, reluctant to admit that someone else has had a good idea or has written good code?
Ok, wait. Am I one? Do I come out as one?
I love design discussions, I love contesting solutions and have had some very livid arguments with my colleagues on subjective choices. Do I come out as rigid? Someone who takes offence if his mistakes are pointed out?
After getting introduced to the concept, I am now actively thinking if I accept my mistakes or not. It is a fun exercise. It is not like I think I am an alpha geek, but I think I might be unconsciously exhibiting some of the bad characteristics of one. And the problem here is, you will never know you are becoming one until it is too late.
As my friend, and colleague, Priyank Verma pointed out:
We have this partial knowledge of the world, but we have formed very strong opinions based on this partial knowledge. We haven’t been here long enough to see how our decisions in the past have played out (has that multiple inheritance thingy we did last year, which looked super sexy at that time, made it a mess to change stuff in future?). And then we contest design and subjective decisions based on these strong opinions.
And he is right.
I do tend to defend my decisions around code and design and give excuses, where in reality I could have just said that
a) I couldn’t think of it at that time, or
b) I was wrong.
Although I am not that bad, trust me. If someone does prove objectively as to how this other way is better, I happily accept it. I tell the person he is right and the suggested solution is much better. Yes, let’s do this! But in the moments before getting proven wrong, do I behave rigidly like I am the all-knowing senior engineer who is often right?
Changing the way I go about discussions
Rigid. This is not who I am, and I don’t want to be coming off like this unconsciously as well. So now whenever I get into a discussion, I am actively evaluating my stance:
- Am I right, or am I defending myself?
- Am I right, or am I just scared to say I was wrong?
- Am I right, or am I biased against the other person?
Another area where I have started doing this is Code Reviews. I realised that, more often than not, I took the review comments a little too personally, or was affected by them. Which isn’t needed or right. I give hard feedback, I will get it back too, there is nothing personal about it.
At their worst, alpha geeks are like a bad fish in the pond. The rotten apple that can damage the whole crop. You owe it to the people you work with to create and preserve a culture where everyone is open to new ideas and finding the best way out, together 🙂
Here’s to better designs and healthier discussions 🍻
(Originally posted on my Medium account)