Have you considered the power in having little abstraction? There's a whole school of thought (the APL/J/k community) that thinks these kinds of abstractions are not just unnecessary, but actually harmful. After trying my hand at "abstractionless" programming in kdb+/q, I tend to agree. When your entire program is only a couple lines of code, you don't need to code for tomorrow. You don't need to think about the future. The code is so short you can just throw it away and start over.
And in fact, this is what Arthur Whitney (creator of kdb+/q and Shakti) does. Every new version of k is started entirely from scratch. No code reuse, no libraries, no sharing.
I'm delighted to learn about this perspective. Appreciate the note.
I believe in reusability with software engineering. The reason why legos is so much fun is because you can compose and build things out of simple shapes.
I also agree with you and others in terms of simplicity. I guess what I failed to communicate in the original post was about the judgment that is required to make the right decision, and that caused quite a bit of opposing arguments.
I believe that the right level of abstraction is required for any non-trivial system. Life is full of balancing act - like yin and yang. Too little abstraction is also costly and leads to code bloating and maintenance nightmare.
And in fact, this is what Arthur Whitney (creator of kdb+/q and Shakti) does. Every new version of k is started entirely from scratch. No code reuse, no libraries, no sharing.