Reusable software is almost never reused. And the extra effort to write, review, test, and debug is bad tradeoff.
This is the correct answer. I have rarely seen any of these conventions lead to any sort of productivity increase. I was talking to my new job, and we both agreed that over abstraction is dangerous, since it can give too much information about architecture. This is also very true of the current micro services architecture trend, where you have an endpoint for everything
(post is archived)