Re:Ask HN: What did I do so wrong in this coding interview
by dhotson on Wednesday July 09, 2014 @11:48PM
(#8013500)
Yep, it's that balance between abstraction and indirection.
Abstraction can be a great tool, but it comes with the cost of added indirection.
You want to aim for the sweet spot in the middle somewhere.
Making things too abstract, too early, is usually a bad sign. In most cases, the most most specific and straight forward solution to a problem is the best one.
There's definitely cases where you're simplifying things by making them more abstract and reusable (but making something reusable before you need to reuse it is a waste of time) -- another good case is where you're using the principle of separation of concerns.
I think when I started developing I made everything very abstract, b/c all the books you read would also tell you that was a good thing.
It's not. Until you need to, at least.