Ladder of abstraction
Well the title is obviously a tweak of the “ladder of abstraction”. For those who does not know, “ladder of abstraction” refers to the classic essay by Bret Victor. I am kind of stealing this terminilogy for the reader to visualize climbing up and down on the ladder of abstraction to make it easier to explain the nature of different jobs. The main question this blog post deals with is:
- Why do some people love doing X but hate to do X as a job, complaining about having to catch up with trends/ news?
And my answer is those people are working at the “wrong” level of abstraction of their fields.
“I love tech…but I hate my tech career”
As a person working in security, I used to be confused when I hear people complaining how much they have to keep themselves updated and learn the latest tech stacks, the typical quotes of them are:
I spent X years to learning programming language/ framework A, and now I have to learn a new language/ framework B or I will be replaced by those young devs. I hate this.
It is exhausting to work in security as you have to keep up with the latest news such as XYZ company is hacked…
(it might be unbelievable for you the reader, since if you are reading this obviously you are very different from the crowd, but trust me, there are a bunch of such people).
Are they not curious people? Do they not enjoy the technical things they are working on? I used to think so, I thought it is just about personalities, but I was wrong. They ARE curious people and they do enjoy the things they work on, what they complain about is actually the level of details they have to handle.
The guy who complains about having to learn new programming language, he does enjoy programming (well, at least does not hate it), what he hates was the requirements of actually implementing a software while keeping up with the trends. I would boldly say that he should do competitive programming instead of developing CMS systems for his clients. To work as a developer and implement CMS systems is working at a very “low level” of the abstraction ladder - you have to take care of virtually every bits of the software you create, including which languages/ frameworks to use, due to technical or non-technical reasons (Maybe a new language/ framework does give better performance, maybe the market just want to see something that is “up to date” and flashy).
The lower you are working at the abstraction ladder, the faster the world around you changes, and you have to keep up to that. However to do competitive programming, no one cares which language do you use, all you do is almost just to think about how to manipulate the data, if there exists a machine that can run your pseudo codes, you can write pseudo code too - the language/ framework selection factor is abtracted from your task.
For those who complain about having to “keep up with the latest news” (probably working in SOC or similar), similar argument applies, perhaps they should be a researcher of malware techniques.
Of cause, can doing competitive programming or researching malware techniques make a living for them is another story ツ, but the goal of this blog post is to reveal the true reasons of why are some people in kinda love/ hate relation with their professions and the “level of abstraction” embedded in the nature of many jobs.
Don’t get me wrong - I am not suggesting that some work are superior than others, but different people do their best in different types of work, and if someone constantly complaint about his/ her job nature especially about the amount of details, perhaps they are working in the wrong level of abstraction, and they should be aware of their true feeling about the work. Perhaps they should look for a position that allows them to work at higher level of abstraction.
And don’t forget that some people do really love to be drown in details by working at very low levels.