Difficult codebases
Sometimes codebases are difficult because of a lack of
abstractions. Sometimes there are too many abstractions.
Perhaps making a change feels like adding yet another card to the tower. Maybe it feels like trying to add an extension to the 45th floor of a skyscraper (where's it going to go? how will it affect the floors below it?)
What I've found recently, however, is there is another class of codebase. Ones which just solve hard problems. At
Notion, I'm currently fixing a lot of issues around contenteditable, and the various CSS trapdoors that come with it.
Unlike previous codebases, I have zero interest in burning it all down and rewriting it "elegantly." I have zero interest in avoiding contenteditable altogether. It's annoying, but it's gotten us pretty far and if I were to build an editor from scratch, I'm fairly certain whatever I come up with would be worse.
It's a freeing feeling.