4 ms·
I think the tricky thing about #4 is essentially just the leaky abstraction issue. Each one of us is working and building on mainly one layer of abstractions.
by NhanH 11y ago
I think the tricky thing about #4 is essentially just the leaky abstraction issue.
Each one of us is working and building on mainly one layer of abstractions. It helps our puny human mind to comprehend and visualize whatever limited functionality we are trying to do. Unfortunately, most abstractions are leaky, and when things spill over, you have to learn how to clean up (and then the next one spill over, we got the yak-shaving situation that any developer would encounter at least once ...).
It's not unique to programming. But in other subjects, when the abstraction is leaky you probably doesn't know it yet until you learn more. Here when abstractions break, things stopped working immediately. I guess that could be both a good and bad thing?
- PuffinBlue 11y agoLeaky abstraction is an interesting way to put it. That makes sense to me. I really do feel like I'm building something on a certain layer of abstraction. I guess when something new comes up it has the potential to push you down a few more layers than you intend and you can get caught trying to race to the bottom of the stack and learn everything. A certain amount of curiosity for what's going on 'underneath' is surely a healthy thing and probably helps long term progression, but for learning it can be a bit distracting!
- jdbernard 11y agoTo expound on your last point: I agree that you have to be able to stop yourself from always getting drawn by curiosity into the rabbit-hole, but in my experience one of the things that has separate the mediocre developers from the great ones is their ability to cross those layer boundaries. You don't have to know everything about every layer, but it helps to know enough about each one to have a general sense of how it works, and to know where to start digging if you do need to go deeper. Obviously this kind of experience takes time to build up. For example, if you are doing front-end JavaScript development it can be very good to understand HTTP, and have at least a vague idea of how things like TCP/IP and DNS work. Nothing kills productivity like hitting a bug that you can't even investigate without someone else's help.