4 ms·
One argument for abstraction being different from delegation, is when a programmer uses an abstraction, I'd expect the programmer to be able to work without the
by robenkleene 1y ago
One argument for abstraction being different from delegation, is when a programmer uses an abstraction, I'd expect the programmer to be able to work without the abstraction, if necessary, and also be able to build their own abstractions. I wouldn't have that expectation with delegation.
- Jensson 1y ago> I wouldn't have that expectation with delegation. Managers tend to hire sub managers to manage their people. You can see this with LLM as well, people see "Oh this prompting is a lot of work, lets make the LLM prompt the LLM".
- robenkleene 1y agoNote, I'm not saying there are never situations where you'd delegate something that you can do yourself (the whole concept of apprenticeship is based on doing just that). Just that it's not an expectation, e.g., you don't expect a CEO to be able to do the CTO's job. I guess I'm not 100% sure I agree with my original point though, should a programmer working on JavaScript for a website's frontend be able to implement a browser engine. Probably not, but the original point I was trying to make is I would expect a programmer working on a browser engine to be able to re-implement any abstractions that they're using in their day-to-day work if necessary.
- meheleventyone 1y agoThere's an interesting comparison in delegation where for example people that stop programming through delegation do lose their skills over time.
- tguedes 1y agoI think what you're trying to reference is APIs or libraries, most of which I wouldn't consider abstractions. I would hope most senior front-end developers are capable of developing a date library for their use case, but in almost all cases it's better to use the built in Date class, moment, etc. But that's not an abstraction.
- AnIrishDuck 1y agoThe advice I've seen with delegation is the exact opposite. Specifically: you can't delegate what you can't do. Partially because of all else fails, you'll need to step in and do the thing. Partially because if you can't do it, you can't evaluate whether it's being done properly. That's not to say you need to be _as good_ at the task as the delegee, but you need to be competent. For example, this HBR article [1]. Pervasive in all advice about delegation is the assumption that you can do the task being delegated, but that you shouldn't. > Just that it's not an expectation, e.g., you don't expect a CEO to be able to do the CTO's job. I think the CEO role is actually the outlier here. I can only speak to engineering, but my understanding has always been that VPs need to be able to manage individual teams, and engineering managers need to be somewhat competent if there's some dev work that needs to be done. This only happens as necessary, and it obviously should be rare. But you get in trouble real quickly if you try to delegate things you cannot accomplish yourself. 1. https://hbr.org/2025/09/why-arent-i-better-at-delegating https://hbr.org/2025/09/why-arent-i-better-at-delegating
- vidarh 1y agoThe vast majority of programmers don't know assembly, so can in fact not work without all the abstractions they rely on. Do you therefore argue programming languages aren't abstractions?
- robenkleene 1y agoFair point, I elaborated what I mean here https://news.ycombinator.com/item?id=45116976 https://news.ycombinator.com/item?id=45116976 To address your specific point in the same way: When we're talking about programmers using abstractions, we're usually not talking about the programming language their using, we're talking about the UI framework, networking libraries, etc... they're using. Those are the APIs their calling with their code, and those are all abstractions that are all implemented at (roughly) the same level of abstraction as the programmer's day-to-day work. I'd expect a programmer to be able to re-implement those if necessary.
- benterix 1y ago> The vast majority of programmers don't know assembly, so can in fact not work without all the abstractions they rely on. The problem with this analogy is obvious when you imagine an assembler generating machine code that doesn't work half of the time and a human trying to correct that.
- nerdsniper 1y agoI mean, it’s more like 0.1% of the time but I’ve definitely had to do this in embedded programming on ARM Cortex M0-M3. Sometimes things just didn't compile the way I expected. My favorite was when I smashed the stack and I overflowed ADC readings into the PC and SP, leading to the MCU jumping completely randomly all over the codebase. Other times it was more subtle things, like optimizing away some operation that I needed to not be optimized away.
- vidarh 1y agoAn abstraction doesn't cease to be one because it's imperfect, or even wrong.
- 1y ago