I find that when someone's taking time to do something right in the present, they're a perfectionist with no ability to prioritize, whereas when someone took time to do something right in the past, they're a master artisan of great foresight.
haha. sometimes simpler is better. i recently enhanced an old homework assignment to open and save image files. someone kindly directed me to a class that will save components, part of components both swing and AWT, as well as entire screen and part of screen. i was tempted to use it but instead i just took what i needed to save my JPanel.
Once beginning programmers have learned the basics and are starting to think about how to design programs in a larger way, they often get this idea that things have to be designed in a more generic way, because that would make the code more flexible and easier to reuse. What they forget is that it also becomes more complex and more abstract.
I remember one project I worked on in the past where one of the other developers had just discovered generics. He thought it was a good idea to make everything as generic as possible. So he created classes that had 7 type arguments, completely unnecessary and way too complicated to be useful in any way.
The next thing that people who do that should learn is KISS and YAGNI.