Another problem with many programmers is the Not-Invented-Here Syndrome. If there is a tool or function we want to use, we often want to create it ourselves.
I worked at one place where our program needed to do a “deep copy” of objects – create a new series of independent objects, instead of sharing existing ones by reference. One of the developers spent a month writing a library to do deep copies.
Unfortunately, the library he wrote had bugs. As we continued work on the application, we would need to occasionally fix his library.
The worst thing about this situation was that our program already used a library that could do deep copies. And this library was thoroughly-tested. Instead of this developer spending a month of his time, we could have done deep copies with two lines of code.
The developer didn’t keep in mind that our job was to quickly deliver a program to help with scheduling shipments – not create “cool” libraries that we developers find interesting.
Sometimes you may be intrigued by an idea and want to write code to test out your solution. That’s better left for your spare time.