It's very easy to solve problems as they come by just adding more abstractions until you have this katamari damacy ball of interfaces that's completely inscrutable. God knows I do this too sometimes.
In contrast, this low abstraction style of programming feels like solving a sudoku. All the pieces need to fit as they are. It's more effort to get right. Think I went through 4 or 5 designs to get it as slimmed down as it is.
Well put, I've been working on an vm/interpreter design for several years. Which has to be low abstraction if it is to run fast enough to be useful. I keep painting myself into unforeseen corners, bad enough that refactoring is often not even an option. But having written code on a daily basis for 40-ish years, it's the only kind of code that tickles my brain anymore.
In contrast, this low abstraction style of programming feels like solving a sudoku. All the pieces need to fit as they are. It's more effort to get right. Think I went through 4 or 5 designs to get it as slimmed down as it is.