Forces you to at least admit to yourself that you probably lack a lot of knowledge. Makes you humble and hopefully qurious.
We have used too many levels of abstractions
21–30 of 564 posts
Re: We have used too many levels of abstractions
#22Programmers too often add indirections which don't provide abstraction:
* The programmer wants to POST an object to a web server.
* The programmer also wants to think about it at the level of POSTing an object to a web server.
* And yet the programmer creates an HttpClient.java and an AbstractClientManager.java an ClientManager.java.
* These extra classes are just pointless indirection - not only do they not prevent the programmer from needing to reason about POSTs, but they actively make it harder to do so.
In contrast, if you have a collection type (Set, History, Permissions) and want to treat it as a monoid, that's a huge leap in abstraction, with only one level of indirection.Re: We have used too many levels of abstractions
#23this is the kind of thing you say during an interview, get rejected and then wonder if you just experienced ageism instead of any introspection about your own rant
A charitable interpretation of the article is of course a balance is what actually matters. It is good, on some level, that abstractions free up developers or whoever to focus on the business instead of just tiny little details. Their example, however, proves you need escape hatches sometimes, and you need to have a mind for the details at times, and right now the balance is far in the "abstract everything" direction…
I know Javascript, React and Express like the back of my hand. I can solve absolutely any problem I've run into with that stack, I can't even remember the last time I was stuck on something. But I've ended up on like 5 projects in a row with stuff like Typescript, NextJS and NestJS because they are red hot on the fad scale right now. Despite that, I still don't feel like I know much about them because I set that bar reasonably high, and out of all the people forcing me to use tech I don't want to use, none of them even come close to reaching that bar.
I'm sick of asking fairly basic questions about frameworks and libraries I'm not as familiar with, and getting back "oh, I dunno, have you tried...?" 15 times in a row before solving the problem. That's not an efficient way to work, no matter what 90% of the industry seems to think.
Re: We have used too many levels of abstractions
#24I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…
Re: We have used too many levels of abstractions
#25I think there is one interesting angle to this problem. I am someone who grew up with the technology, as the levels of abstractions were being added. I am now benefiting from all those accumulated decades of knowledge. As the IT / development world was changing, I had enormous privilege and comfort to learn the things at the pace they were happening. Being able to assimilate changes over long decades. Be a witness to…
There will always be hyper-nerds and just super smart people who will study all of the low level stuff. Granted, they will be vastly outnumbered by high level programmers.
I am continuously hiring new people, mostly senior devs and tech leads. Maybe one in a hundred has any understanding of what virtual memory is. Or why one process can't access memory of another process and, if you really want it, how to set it up.
Two decades ago that was common knowledge.
It went away just as the knowledge of how networking works. Currently, if they try to open a connection and it does not work they are pretty much at a complete loss to what happened, where and how to fix it. Aside maybe from a simple problem like DNS resolution error (and not even that -- most devs don't understand how DNS propagation works, for example).
So if those problems happen, they are mostly deferring to me as a guy who can solve every problem. I see no clear path to achieving a goal of having someone else to learn to do the same.
Re: We have used too many levels of abstractions
#26Re: We have used too many levels of abstractions
#27I somehow agree with this. As a web developer who started on a framework first approach (Vue + Django), I was having one hell of a time trying to figure things out because of my lack of fundamental knowledge. I think abstraction is okay but you have to understand that just because you can make abstractions doesnt mean you should.
I had to explain the problem with a single wire signalling bits in a series, recipient having to de-serialize them into some data structure. Then I had to explain that TCP emulates such a single wire using small packets.
I think that they have understood, but it was a funny feeling explaining this to someone who routinely deserializes form and JSON data, then serializes them into SQL queries, then deserializes query results in order to serialize them into templates or JSON.
Re: We have used too many levels of abstractions
#28I somehow agree with this. As a web developer who started on a framework first approach (Vue + Django), I was having one hell of a time trying to figure things out because of my lack of fundamental knowledge. I think abstraction is okay but you have to understand that just because you can make abstractions doesnt mean you should.
The layers and layers of indirection obscured what HTTP is for me, and it took me too long to understand it.
Have a look at https://learnbchs.org/easy.html for a real "oh that's what HTTP is?" moment.
Re: We have used too many levels of abstractions
#29That’s what I do by default since I was a kid, and I can tell you the social pressure not to is significant. I recall an interview I did once, and one reason I failed it was "questioning everything". It didn’t even felt like it, I was just asking questions about their system, it’s supposed to be basic curiosity. At my current job there’s this architect that explicitly asked me for continuous feedback, but now shows subtle signs that maybe I went a little too far.
Questioning everything gets results, not friends.
Re: We have used too many levels of abstractions
#30this is the kind of thing you say during an interview, get rejected and then wonder if you just experienced ageism instead of any introspection about your own rant