As a programmer, I find myself in the dilemma where I want make my program as abstract and as general as possible.
Doing so usually would allow me to reuse my code and have a more general solution for a problem that might (or might not) come up again.
Then this voice in my head says, just solve the problem dummy its that easy! Why spend more time than you have to?
We all have indeed faced this question where Abstraction is on your right shoulder and Solve-it-stupid sits on the left.
Which to listen to and how often? What is your strategy for this? Should you abstract everything?