As per Wiki’s deleted (Yeah! I found below content from Google’s cache) article on this
“Reinventing the wheel is a phrase that means to duplicate a basic method that has already previously been created or optimized by others..”
Lets get back a couple of steps, when development of software begins, it usually starts with a prototype, and when things start getting complex the development team starts taking out common code and create frameworks around it. These frameworks are then used / improved by the developers.