経験豊富なプログラマほどこの言説をすっと理解して、経験の浅い人ほど理解できないらしい。
よくある誤解に「学習のためには車輪の再発明をした方がいい」というものがある。
これは間違っている。学習のためであっても、既製品の劣化コピーを作るよりも、既製品を利用した方が学ぶものは多い。
たとえば、初心者がデータを保存するしくみを試行錯誤して実装したところで、既存のリレーショナルデータベースよりも良いものができるはずがない。
一方、最初からデータベースを使っていれば、単にデータを保存すると言う目的を達成するだけではなく、主キーや外部キー、インデックス、トランザクションやSQLなどの重要概念を学ぶことができる。
プログラミング初心者が車輪の再発明をするのは将棋で言えば、駒の動かし方を覚えただけの初心者が「一手目は76歩がいいのか26歩がいいのか」なんてことを延々と考えているようなものである。そんなことに意味はない。そんなことをするより、さっさと定跡を覚えた方がよい。
さて、経験豊富なプログラマほど「コードを書くな」というのがすっと腑に落ちるのは、それがどういうことなのかを理解しているからだ。
たとえば彼らは、「設定より規約」という概念について、具体的な実例とともによく理解している。
一方、経験の浅いプログラマは、設計やコーディング能力も低いし、複数のパラダイムや良いフレームワークにも触れたことが無いから、「コードを書かない」というのが何を意味するのか理解できない。だから、「コードを書くな」という主張も理解できない。
内容自体は同意するけれど、データベースの例えは完全に学習方法が間違っていて、データベースを再実装するならデータベースの教科書を見ながら現代的なRDBを模倣して作って見るの...
データベースを作るのでなければ、自分でつくる必要ありませんよね
データベースを手習いに作りたい人を想定していました(Webサイトを作りたいのならもちろん既製のRDBを使った方が良い)
DBMSを作ってDBMSの中身を深く知るのは既存のDBMS使う際にもいい経験になるぞ。 作る過程では既存のDBMSのコードを参照するだろうし。
なおベテランエンジニアが「コードを書くな」と言うのは、コードを書いた(or 修正した)分だけテストをしないといけないので無駄にテスト工数増やすなという理由が大きい。
DRY原則