ここで私が使ったのは賢さ,怠惰とプログラマーこれらの言葉です。私が言うこれらの言葉の意味は:

  • プログラマー:積極的で活力があり、コードを使って現実世界の問題を解決することに集中する人を指します。夢ばかり見て、いつも考えてばかりで行動しない人々のことではありません。
  • 賢さ:物事を周到に考えることができること(小賢しい人ではありません)。
  • 怠惰:プログラムにおけるlazy-loadingのようなもので、コードを書く時間を遅らせることを指します(何もしない人ではありません)。

正しいソフトウェア開発は怠惰な開発、すなわち忍耐強い開発とも呼ばれるものです。この開発方法の特徴は、実際にコードを書き始める前に、プログラマーが考えられるすべての解決策と方法を検討するために多くの時間を費やすことです。これは次のように見なせます。遅延コードを書くことを遅らせることです。問題を完全に理解するまでは決してコードを書き始めません。まず問題を明確に理解し、これから書くコードが本当に問題を解決できることを確実にすることで、後で大量の無駄なコードを書くことを避けられます。

ここで言うまず問題を明確にするとは、次のようなことを指します:

  • 要件を真に理解し、製品部門(業務分析部門)に彼らが本当に必要としているものを明確にさせること。
    • これらの部門は通常、要件を整理するための十分な時間を与えません。
    • 彼らは問題領域の専門家に相談するのではなく、上司の意見に従うことがよくあります。
    • 彼らは通常、一貫性のある、または完全な要件の意見を提供することができません。
  • チーム内の他のプログラマーや他のチームのプログラマーとどのようなやり取りが必要か、どのようにやり取りするかを明確にすること。これには次のものが含まれます:
    • ホワイトボードを使ったコミュニケーション
    • フローチャートを描くこと(UMLやVisio)

要件が実際の状況に合っているかを確認し、あなたと同僚のコミュニケーションに共通の言語的意味を持たせるために、多くの時間を調査に費やす必要があります。しかし、プログラマーはすぐにプログラミングに飛びつき、パソコンの前で絶えずコードを打つのが好きです。

本当のソフトウェア開発において、開発時間のわずか5%だけが効率的です(『プログラマー開発効率のパラドックス』を参照してください)。もしプログラマーが100%の時間を画面に釘付けにしているのを見かけたら、そのプログラマーは最も劣ったプログラマーです。

プログラマーが常にパソコンの前でコーディングしているなら、それは間違いなく悪い兆候です。

効率的なプログラマーは常に要件に対する自分の理解を確認し、自分のコードと要件が同期していることを確実にします。効率的なプログラマーは頻繁にプロダクトマネージャーやビジネス担当者とコミュニケーションを取り、ホワイトボードを使って同僚やアーキテクトと議論しているのをよく見かけます。プログラマーの経験と知識はすべて開発効率を高めるために使われます。最も優れたプログラマーは:

  • コードについて考える時間が増え、コードを書く時間が減ります。
  • 問題を徹底的に理解することで、コードのデバッグがより速くなります。
  • 熟考した後のコードはより速く動作します。
  • コードの長さはより短くなります。

プログラマーは心理的に自分のコードが好きです。

劣ったプログラマーは、すでに書かれたひどいコードを修正するのが好きではありません。自分のコードを最適化するよりも、単純に追加するより多くのコードを追加して、以前の欠陥を補おうとします。さらに悪いことに、彼らは他人に責任をなすりつけるのが好きです。最終的に、使えないコードの上にさらに使えないコードが積み重なり、システム全体があちこちバグだらけになり、極めて不安定になります。

優秀なプログラマーもまたひどいコードを書くことがあります。しかし、彼らはどのコードを最適化する必要があり、どのコードを書き直す必要があるかを見抜くことができます。優秀なプログラマーとそうでないプログラマーの違いは、問題のあるコードに対する態度にあります。優秀なプログラマーのやり方は次のとおりです:

  • コードが全体的に良いなら、コードをリファクタリングします。
  • コードが全体的に問題があるなら、コードを書き直します。

コードの中に最適化や書き直しが必要な箇所がある場合、時間が経てば経つほど、それらの問題に立ち返って解決するのが難しくなります。なぜなら、そのコードに依存するプログラムがどんどん増え、依存も深くなっていくからです。そのコードを最適化するときには、関連する依存関係も修正する必要があります。蓄積された問題が増えていくにつれて、それらのコードを簡単に最適化・書き直すことは不可能になります。そして、以前のコードの問題を補うためにコードを追加し続ける方法は、システムをますます不安定にします。

頭の中で明確に考えられていないなら、怠け者になって、コードを書く時間を先延ばしにしましょう。

関連記事