Unpopular opinion: Abstraction kills productivity and readability ⚡
Although code abstraction and dependency injection are good and I understand their importance, it does indeed kill readability and take away the natural flow of reading and understanding the code.
There is a fine line between leveraging abstraction and abusing it.
What most people think is a beautiful code where everything is extensible, is just a spaghetti code that no one wants to admit, just because it has become “industry standard”.
I am not against abstraction and I do agree that abstraction in some proportion is good and healthy, but when you try to abstract every single implementation and offer multiple implementations of everything, you are just making it harder for someone to become productive on your codebase.
Spending hours navigating through 100s of classes and functions just to understand a trivial flow and understanding where to make the change is counterproductive.
I like codebases that are simple to understand, extend, and contribute to. Some well-written codebases are CPython, Redis, DGraph, and Consul. In a simple natural flow, you will be able to understand every line of code and what it does.
⚡ Fun fact: I did not name or mention any programming language because it is true for all. I am sure you would relate because we all have been there and felt the pain. 🙃
ps: I say stupid things, so folks on the other side, relax and have fun 🙃
arpitbhayani.me/courses