The curse of being good in IT
No, I'm not talking about fixing "the google" for grandma
Most devs are average, but many strong opinions in IT are shared by people that are better than average. Because of this, there is a gap between what most people need, and what they get told to do.
You may not notice it, but it's very possible you are making your life more difficult than it should be. To avoid the trap of dealing with more complexity than is good for you, you should always re-calibrate whatever you read and hear to your context. This calls for more introspection than you think.
Too good to be helpful
In "Why not tell people to "simply" use pyenv, poetry or anaconda", we briefly touched something that seems like a paradox: most people should not follow the advice recommending those tools, because the devs that recommend them are usually too good at solving problems. Those devs don't realize how much they solve every day.
People trying to follow their path end up hitting a barrage of small issues they now have to solve before even being able to use said tools. Ironically, the tools made to make life simpler can end up actually make it harder.
It's important to keep in mind that most of us sit not far from the middle of the bell curve. Most people are, by mathematical definition, close to average, as skill distribution is not from Taleb’s Extremistan.
In fact, even extraordinary people are usually average (or bad) at most things, and only outliers in a few areas.
Even more, before becoming good at anything, almost everyone has to go through a long phase of being bad, then average.
So most of humanity is average, on average, if we average all the life skills on all the lifetime.
You get the point.
But who writes the tutorials? The docs? Who is blogging about code, tweeting about it, giving advice to their colleagues? Who tries the new tools?
Usually not the average ones in this particular topic, because interest and enthusiasm is strongly correlated with better than average ability in that field. Sometimes it's because the interest drives the practice, and the practice brings the skill. Sometime you are well suited for something, and so it feels good, therefore you develop an interest for it. And sometimes, only passionate people end up doing some particular things, so only they can talk about it in details.
This means there is a lot of overlap between the people that are good at something and the ones that like to share about this thing.
And the people that are good at something:
Have a lot of implicit knowledge. A huge amount in fact.
Often have a blind spot about this implicit knowledge, especially when explaining things that require it.
Endure very little cost in solving many small issues implying this implicit knowledge. They don't even notice it anymore.
Because of this lower cost, can spend more energy in more difficult things that get a very positive ROI for them, but nobody else.
Since they enjoy the field, spending resources fiddling around is not a loss to them, it's a pleasure. In fact, it's part of their identity, consequently they will speak about it more optimistically.
And these people, there are the ones telling the average rest what they should do.
They are the one saying that Nix will change everything (but mutate nothing), S-expressions are the best thing since sliced arrays, and DSL are Damn So Lovable.
Surprisingly, many who make complexity their bread-and-butter think everybody doing the same job as them share similar traits, that they are not special.
However, not everybody can go keyboard only on a border-less tile windows manager, be productive for months, and not burn out. Actually, most people can't.
Scratch that, most devs can't.
Yet a huge amount of content is generated by authors that are too good to be helpful.
Now don't get me wrong, advanced content is very interesting and useful.
That's not the problem.
The problem is that said content is usually not labeled advanced and don’t contain half of what you need to know.
And why would it be?
If you can code a meta-class, why would you mark a tutorial on decorator as advanced?
If you are self hosting a kubernetes clusters, why would you teach people about managing dependencies before introducing pyenv?
Fun fact: in my advanced Python courses, I often have to teach people how to use a debugger. Because it turns out there are thousands of professionals that spent 10 years in the industry figuring out problems by using only print().
For Python it's even more drastic, because the language is very accessible, taught in schools, and used by tons of non-developers. So tons of users are on a Windows machine, and a significant number of them are not comfortable with the terminal.
And they don't care. They get things done. They are paid for it. Their boss is happy.
Just like most companies are not Google, most devs are not Fabrice Bellar.
The average makes the world go round.
When most people are better than you
If you ever feel like tutorials always fail, tools are too complicated, and you must be very dumb because every message in every thread tell you that it works and solve all problems, maybe you are just average.
The solution is to re-calibrate.
Let me give you a real example from a similar situation in my life.
Since I'm a kid, I've been doing regular exercise, and I never could do whatever people told me to do. I would go to a sport club, and I could not do what the others did. Or I could, but I would feel so tired it would affect the rest of my life. Recovery would take so much time. Eventually I would implode, or gave up.
And start again in six months.
I wanted to do a marathon. I trained for a year. I ran. I finished dead last, in 6h30, with the sweeper car pressing me to hop in because the driver wanted to go home. I declined, but the humiliation remained.
My brother trained for 3 weeks, and finished in 4h40.
For all my life, I felt like exercising was not for me.
Then one day it clicked, I realized all the advice in books, clubs or by other people were about what worked for them. And because they were good at it, I was assuming it was always the right thing to do.
But clearly, it was not working for me.
I started to experiment to find the exact dosage I could actually endure, and recover from, in the same way most could.
It turns out it was not a lot. It took time to admit.
Could be I was indeed bad at it.
But suddenly, with this new regimen, I could do it regularly without dying. I started to get the health benefits that everyone was talking about and that I never could get when I did more! I never felt like giving up, because it's was not that hard.
I felt a little ashamed, with my miserable exercises. Every single person seemed better than me. When my friends joined me for a sweat, they would easily pass me by.
Looking at the stats though, a lot of people don't run a marathon at all.
Many don't do sport four times a week.
So I was not that bad, simply not gifted, and... well... average.
Most of us are, for most things at least.
And following exactly the advice of people going to the gym every day is not going to work. You have to re-calibrate to you.
Forget about copying heroes, I'm talking about not copying your friend Joe who did tennis in high school and never stopped. Using performers as an inspiration is great. But re-frame to your context.
I'm writing on technical topics because it's easy for me. I can get thousands of words flowing from just the effort to write the first sentence. My problem is to stop so I can get some sleep, or don’t put my readers to sleep.
If you want to do the same, you should not get thousands of words out in one row. You should try to consistently get something out. But the "something" is highly dependent on who you are, and your context.
The variations can be huge, so don't let your ego get in the way.
For IT it's the same.
Can you really reach a sprint deadline while learning a Dvorak layout?
Can you actually debug a snippets using nested custom-made macros when your customer is writing emails in full caps?
Can you definitely figure out this segfault in production on a Nginx you decided to compile yourself to get +3% of perfs?
What about every week? Month? When you have a new born? When you want to lose weight?
If you are reading this blog, you are likely, statistically, at least a tad above average. Because the average dev rarely read an IT blog, and the average reader doesn't reach this far in such a long article.
In fact, if you considered one day a Dvorak layout, come on, who are you kidding? Drop the imposter syndrome.
But here is the trick: what I just said apply to everything in life, and you have to put the needle in a different place for each different area. Because you may be good at context switching, and terrible a focusing, average at relationship, and excellent at tolerating change. There are many different spectra where you reside, and you must learn where you are at. You may be ready to pay a high price to draw, and little to write a script.
So even if you are quite good at what you do, that doesn't mean you should follow all the advice of all those other people.
Quite the opposite, there are high chances you should not.
You need to re-calibrate all of those to who you really are, and your current situation.
Sure, you may be able to install Arch Linux and maintain it, but is it really what's good for you?
Maybe it is exactly what you need right now in your life.
Maybe what you need is Windows and notepad++.
Probably it is somewhere in the middle, but it doesn't matter.
Remember what Abraham Lincoln said: don't believe anything you read on the internet.
Those things are written out of enthusiasm, interest, ego, ignorance, passion, spite...
Just because all those smart people tell you it's time to use microservices everywhere doesn't mean you should.
Also someone on the other side of the ethernet cable doesn’t know that you may have to endure on the long run, that you could have multiple challenges, that the days have only 24 hours, that you have limited energy.
After all, while you may certainly be able to spend some CPU cycle to remember a squence of 7 keyboard shortcuts instead of using a mouse doesn’t mean you have to. Those cycles are not used somewhere else if you do. There is a limit to muscle memory, plus (re) building it is costly.
And no, using Emacs, a third new JS framework and GraphQL is not a costless decision that has only benefits.
Anybody saying that lies.
I lied myself of lot, painting so many things as better than they are.
After all, this is IT, everything is broken somehow.
KISS has survived for a reason.
So chose wisely.
Your subscribe, I make it worth it