Lorsque j'étais plus jeune (il n'y a pas si longtemps que ça donc) et que j'avais un projet en tête (essentiellement des projets de jeux vidéo), je ne pouvais m'empêcher de vouloir le développer de A à Z sans me soucier de l'existence de bibliothèques pouvant m'aider dans ma tâche. Ainsi, au lieu d'utiliser les bibliothèques de compression ou de cryptage de données qui existent sur le net, je développais les miennes, avec bien sûr des algorithmes moins performants que les existants mais qui me suffisaient largement pour ce que je voulais faire. De la même façon, plutôt que d'utiliser un moteur de jeu existant pour faire mon jeu, je développais le mien, ce qui me prenait finalement trop de temps et qui m'empêchait généralement de finir les jeux en question.

Réinventer la roue c'est mal ?

Eh bien pas tant que ça. C'est essentiellement comme ça que j'ai beaucoup appris sur le fonctionnement des choses: les algorithmes de 3D, de compression, sur le fonctionnement d'un moteur de jeu, d'un moteur réseau, etc... En effet, lorsqu'on réinvente la roue, on est obligé de comprendre comment elle fonctionne pour pouvoir la reproduire le mieux possible et même éventuellement l'améliorer. C'est donc un très bon exercice si on veut s'améliorer. Un autre avantage est qu'on garde le contrôle de notre roue, ainsi si un jour il y a un bug ou qu'on voudrait y ajouter des fonctionnalités on peut le faire très simplement car on en connait le fonctionnement exact et on a le contrôle sur son code. De plus, on n'échappe pas à la fierté que l'on peut ressentir lorsqu'on réussit à refaire quelque chose de complexe.

Réinventer la roue c'est bien alors ?

Oui, mais pas vraiment. En fait, réinventer la roue est quelque chose de contre productif. En effet, à moins d'avoir des contraintes qui nous obligent à réinventer la roue, il est largement préférable de ne pas le faire et d'utiliser ce qui existe déjà, pour la simple et bonne raison, que réinventer la roue fait perdre beaucoup de temps dans le développement d'un projet et qu'en entreprise, le temps c'est de l'argent. Réinventer la roue fait donc perdre beaucoup d'argent !
De plus, les bibliothèques qui existent déjà sur le net sont bien souvent développées par des professionnels qui connaissent très bien leur domaine et qui ont passé beaucoup de temps dessus. Il y a donc très peu de chance de réinventer la roue en faisant quelque chose de mieux, surtout si on prend en compte le fait que les bibliothèques existantes ont déjà été testées et debuggées par la communauté ou leurs développeurs à plusieurs reprises, les rendant presque absentes de bugs (ce qui ne sera surement pas le cas de votre projet dans un premier temps).

Mais alors que faire ?

Ca dépend ... Réinventer la roue comporte des avantages et des inconvénients. De manière générale, réinventez la roue lorsque vous faites un projet pour vous même et que vous voulez améliorer vos connaissances et vos compétences sur le sujet. D'un autre côté, si vous faites un projet que vous voulez commercialiser et pour lequel il est donc préférable d'avoir quelque chose de stable et de fonctionnel le plus vite possible alors ne réinventer surtout pas la roue ! N'oubliez pas que le temps c'est de l'argent ...