開発者は車輪を再発明できるか?

ソフトウェア開発において、車輪の再発明はするなと言う。同等のソフトウェアが存在するのなら、それを使うことで開発期間は短くて済むし、品質だって確保されていることが多い。わざわざ自分で苦労して作っても、その効果はあまり得られない結果になりがちだ。昔、ソフトを作っていた時、私の書いたコードを見たベテランの開発者から「こんなライブラリがあるから、同じ機能を自分で作る必要はないよ」と教えられたこともある。今になって思えば的確な指導だったし、自分の視野を広めるための良いきっかけだったとも思う。

しかしながら、開発現場にいると「そもそも再発明すら出来ないのではないか?」と思ってしまうようなスキルの開発者が珍しくない。再発明できると言うことは、完璧とは言えないまでもそれなりのものを作り出せる実力があると言うことだから、(結果はともかくとして)スキルが有ることの一つの証拠だし悪くはないと思う。問題は、それすら作り出せない技術レベルの開発者がいるということだ。回る車輪ならまだ使えるけれど、回らない車輪なんて使い道が無いではないか。車輪を再発明して悦に入っているのは困るけど、再発明出来ない技術レベルはもっと困る問題だと思う。

例えば、他の開発者が書いたソフトを検証中、ソートされて出てくるはずのデータの順番が変だったのでソースコードを確認してみたら、並び替えの処理にバグが有ったことがある。チマチマと並び替えを行っているコードの問題点を指摘するのは簡単なことだけど「ライブラリに同等の機能が用意されていることを知らないのだろうか?」「それ以前に並び替えのアルゴリズムを知らないのではないだろうか?」「そんな人にライブラリの存在など教えてしまって良いのだろうか?」等といろいろ考えてしまったことがある。

回りもしない車輪の欠片だらけのコードを書き続けるのは悲劇だ。勉強のため、意図的に車輪の再発明をするのも悪くないと思う。既にある優れたコードと、自分の書いたコードを見比べてみれば得られるものは少なくないはずだ。