ソフトウェアコードの偉大な書き手は平均的な書き手の一万倍の価値があるのです


  1. スキルのレベルにかかわらず、プログラマーは全時間のおよそ10~20%をコードを書くのにあてており、たいていのプログラマーは完成品ができるまで一日あたりおよそ10~12行のコードを書いています。優秀なプログラマーは残りの90%のうち大部分を、考えること・調べること・最高の設計を見つけるための検証作業に費やします。ダメなプログラマーは残りの90%のうち大部分を、やみくもに変更と検証を繰り返すようなデバッグ作業に費やします。

    「偉大な旋盤工は、平均的な旋盤工の数倍の給料を支払う価値があります。しかし、ソフトウェアコードの偉大な書き手は平均的な書き手の一万倍の価値があるのです。」ビルゲイツ

  2. 優秀なプログラマーは並のプログラマーの10倍もの生産性があります。さらに卓越したプログラマーだと20~100倍です。これは大げさな言い方ではありません。1960年代からの研究が一貫して示し続けています。ダメなプログラマーはただ生産的でないだけではありません。仕事を片付けられないだけでなく、他の人が直さなければならない多くの仕事や頭痛の種を生み出してしまいます。

  3. 偉大なプログラマーは、少なくとも最終的に完成品に行き着くコードを書くのに、ほんの少しの時間しか使いません。時間の多くをコードを書くのにあてるプログラマーは、とても怠け者で、あまりにものを知らないか、極めて傲慢なので、古い問題に対する今すでにある解決方法を見つけることができません。偉大なプログラマーは共通のパターンを見分けて再利用する名人です。優秀なプログラマーは、理想的な設計に至るために絶えずコードをリファクタリング(書き直し)することを恐れません。ダメなプログラマーは、コンセプトの統一性や階層・パターンを欠き、重複のある、リファクタリングがとても難しいコードを書いてしまいます。ダメなコードは変更するより捨ててしまって一からやり直す方が簡単です。

  4. ソフトウェアは他のすべてのことと同様にエントロピーの法則に従います。絶え間のない変更はソフトウェアをダメにします。当初の設計にあったコンセプトの統一性を壊してしまうのです。そのこと自体は避けられないのですが、コンセプトの統一性を考慮に入れられないプログラマーは、劣化が早すぎて完成する前に役立たずになってしまうようなソフトウェアをつくってしまいます。このコンセプトの統一性における問題はたぶんソフトウェアプロジェクトの失敗の最も一般的な原因です。(二番目に一般的な原因は、顧客が求めていないものを提供してしまうことです。)ソフトウェアの劣化は進捗状況を急激に遅らせるので、多くのプロジェクトは破綻するより先にスケジュールや予算の逼迫(ひっぱく)に直面します。

  5. 2004年の調査によると、たいていのソフトウェアプロジェクト(51%)は重要な側面が不足していて、15%は全体として失敗しています。31%が失敗していた1994年からは改善しています。

  6. 大部分のソフトウェアはチームによってつくられているとはいえ、それは民主的な活動ではありません。通常、ただひとりの人が設計に関与して、チームの残りの人は細部を担当します。

  7. プログラミングは大変な仕事です。極めて強度な精神活動です。優秀なプログラマーは年がら年中、仕事のことを考えています。最も重要なコードを、夢の中やシャワールームで生み出すのです。一番大事な仕事はキーボードから離れたところで行われます。したがって、ソフトウェアのプロジェクトは、オフィスにいる時間を長くしたり人を増やしたりすることでスピードを上げることはできないのです。











プログラミングについてあまり知られていない7つのこと: とみー