Olivier Ansaldi has a nice post on reinventing the wheel. I think reinventing is required for software development to evolve and flow. However, the effort for reinventing the wheel should be justified in terms of benefit to the project/customer. This can explicitly sideline the inner-geek desire.
Having said that, a geek can probably keep reinventing as a hobby, or as a learning exercise. However, justification is a must for any formal product development, and I think research and knowledge of existing software can help a lot.
