Don’t re-invent the wheel has long been a principle of software making. But apparently engineers from all over the world don’t listen to this much. Most programmers are smart, brave, and over optimistic. They’re always ready to challenge their limitations.
In 2003 and 2004, I saw many components developed from scratch. Some talents designed and implemented them. Being clients, other talents used them as public service modules. These components were absolutely great. But just like any other two-edged sword, sometimes these components made people crazy: buggy, hard to use, lacked documents, and their interfaces changed TOO frequently.
In such situation, a huge amount of money, time, and energy were spent. The project was thrown into chaos. More and more firemen were needed to rescue. Developers had been dead tired, angry and annoyed for a long period. Complaining, the more they coded, the more bugs were born. Extra time had been a basic need of life.
I believe now some needs would have been met if they had decided to BUY certain components. That would cost less. Those guys could pay more attention to what they had to do. There would be no lack of labor problem. People would be happier. The product would be released earlier, maybe ahead of deadline.
But you know, I’m obviously too optimistic about this!