nDiki

2008年6月14日 (土)

スクラッチから書き直したくなるプログラマは、書き直したプログラムもまたスクラッチから書き直したくなる。

自分がプログラムをスクラッチから書き直したいと思った時、またスクラッチから書き直したいと言われた時のためにまとめておこう。

スクラッチから書き直したい理由

スクラッチから書き直したいと思う理由はだいたいこうだ。

  • もっと良くできると思うから
    • 「もっと良いやり方がある」「自分ならもっとうまく書ける」
    • 「統一されていない」「もっと汎用的にできる」
    • 「今なら新しい開発環境(・新しい実行環境・新しいライブラリ・新しい言語)を使って簡単によりいいものが素早く作れる」
  • よくわからないいから
    • 「何をやっているかわからない」「どう直していいかわからない」
    • 「もう直しようがない」
    • 「作り直した方がはやい」
  • あいつのだから
    • 「あいつが書いたコードだから」

どんなプログラムでも開発が進み詳細がわかってくると、こうしておけば良かったと思う点がでてくるものだ。

さらに、他人が書いたプログラムだとよく分からない。

It's harder to read code than to write it. (プログラムというのは書くより読むほうが難しい。) — Things You Should Never Do, Part I - Joel on Software

いっそ作り直してしまいたいと思うのはどの開発者でもあることだ。

スクラッチから書き直してはいけない理由

しかし多くの場合スクラッチから書き直すことはリスクとデメリットだらけだ。

  • 今までの投資を失うから
    • 「そのプログラムには検討・不具合修正に膨大なエネルギーが投入されている」
    • 「ユーザは今のプログラムのために学習コストをかけている」
  • 時間がかかるから
    • 「その新しいプログラムが今と同じレベルの価値を実現するまでは時間がかかりすぎる」
    • 「スクラッチし直してから投入したのでは、もはや価値を失っている可能性が高い」
  • 前轍を踏むから
    • 「どう直していいかわからないと思う時は往々にして目標がわかっていない。目標がわからずに作ったものは結局またスクラッチから書き直したくなる」
    • 「あなたが連続的にプログラムを修正できないというのなら、どちらにせよ新しく作り直したプログラムもあなたは連続的にプログラムを修正できない」(リグレッションテスト習慣はあるの? リファクタリングスキルはあるの?)

ほとんどの場合は、漸進的に今のプログラムを修正・改良していった方が得策なのだ。

スクラッチから書き直してもいい場合

そうはいってももちろんスクラッチから書き直した方が合理的な場合もある(書き直してはいけない場合も書き直した方が合理的だと思ってしまうわけではあるが)。

それは次のような場合だろう。

  • ソースコードがない場合 (ディスククラッシュした。利用する権利がなくなった)。
  • もはや開発環境も実行環境も手に入らず、移植も困難な場合。
  • 個人的な趣味のプログラムの場合。
  • スクラッチから書き直したプログラムに対して、また「スクラッチから書き直したい」という欲求にかられない自信がある場合。

本当にスクラッチから書き直した方がよい場合は止める理由はない。

さてこの記事をスクラッチから書き直したいと思う時がきませんように。

参考


[ ソフトウェアプロジェクトマネジメント ]

スポンサード リンク
[ 6月14日全て ]

About Me

Naney Naney

Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

About nDiki

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。

#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Other Notes

ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。

最近検索されている記事

月別インデックス
Process Time: 0.149926s / load averages: 0.21, 0.39, 0.39
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker