Published Nov 4, 2020
A principle that comes up surprisingly often for me in programming is “escape hatches”. When I talk about them (I’m far from the first to do this), I’m usually referring to the ways of sidestepping usually-useful abstractions. There’s usually a power-safety trade-off here: more things are possible in the layer below, but you have to be more careful while you’re there.
This turns out to be a super deep topic (I found out tonight that I can write pages about this), but here’s the short version:
I think we should be able to have safe, usable tools built on robust, public abstractions. I, as an end-user (okay, maybe power-user), want API access to every service I use at the same level that the service’s frontend does. But I don’t want it all the time, because I’d rather have safety and well-supported product flows most of the time.
I think that this has to be a design principle of the product for it to really work. It’s also probably a lot more work. I haven’t designed enough systems to really know.