どうも、適当に文章中に思いつきで挿入した「熱血プログラミング主義」という言葉が一人歩きし始めそうな感じがあります。しかし、きちんと理解されて歩き始めた感じでもないので、一応、ここでいう「熱血プログラミング主義」とはどういうものであるかをまとめてみます。
まず「熱血プログラミング主義」とは何であるか。それは「燃えるぜバーニング!」という気持ちで熱くプログラムを作成する主義といえます。
では、「熱血プログラミング主義」とは何でないのか。それは、「ソフト開発プロジェクトを成功させる方法」ではなく、「開発の効率をアップする方法」でもなく、「リスクを軽減する方法」ではなく、「スケジュールの見積り精度を上げる方法」ではなく、「技術的に正しい模範となる方法」ではなく、「絶対に正しいことが保証された方法」ではなく、「私から絶対にお勧めする方法」ではなく、「あなたに対して、一緒にやろうぜ、と熱心に誘う方法」ではない、ということです。
「熱血プログラミング主義」が主に作用する対象は、プログラマのモチベーション、精神面です。しかし、それですら、常に改善する方向で作用するという保証はまったくありません。「うぉ~~~、熱血するぜ」と思うとやる気が出てくるプログラマにのみ、プラス方向の効果があります。それも必ず効果が出るという保証はありません。
え? それじゃ訳に立たないって?
誰が訳に立つと言いましたか?
「熱血プログラミング主義」は一種の「洒落」です。
そういう実利のための方法ではありません。
だからこそ、熱血は面白いのではありませんか。
更にいくつかの細かい点を付け加えておきましょう。それでもあえて、「熱血プログラミング主義」をオレもやるぜ!という人に向けたルールです。
ルールその1「目標を熱く定めよう」
このプログラムでは、このような機能を実現したい、ということを熱く決めます。熱く、というのは、本当に欲しい機能を、これは欲しいのだとはっきり自覚して自分の胸に刻み込むことを言います。欲しいけど大変そうだからやめておこう、と思ってはいけません。そこは熱血で乗り切ります。もっとも、本当に欲しい機能が熱血しなくても容易に実現できる場合は、無理に熱血する必要はありません。
ルールその2「目標は熱く頑なに守る」
プログラミングを始めると、もっと良い機能を思い付くかも知れません。しかし、一度始めたら、目標を変更してはいけません。熱血しなければ解決できないと思った目標なら、それは実現困難であるはずです。コロコロ目標を変えていては、困難な目標を達成することなどできません。熱く信念を持って、目標貫徹です。とはいえ、定められた目標以外はいつでも柔軟に変更を受け入れるべきです。変更を受け入れることで、工数が増えても、そこは熱血で乗り切るべき対象です。
ルールその3「考えるより先に熱く手を出せ!」
実際に開発に取りかかると、どんな風に組んでいけば良いか、具体的なコードの構造を考えると思います。たとえば、「ここはGoFのシングルトンパターンに収まるかな」などと考えるかもしれませんが、考えすぎは駄目です。ちょっと考えてすぐ分かることなら、考えないでコードを書き始めるのは阿呆ですが、長々と考えるような事柄は考えるより先に書き始めるべきです。書いてみれば、いろいろと不都合が見えてきて、何が問題なのかを的確に把握可能になります。頭で考えるよりも、コード上で実証された問題の方が、分かりやすく、説得力があり、解決しやすいことが多いでしょう(たぶん)。もちろん、そのようにして書いたコードは、結局捨てることになる場合も多くなります。ですが、それを無駄な回り道だとクールに考えないで、熱血で乗り切るのが「熱血プログラミング主義」というものです。
ルールその4「テストファーストを熱く実践する」
熱血とテストファーストは相性が良い、と言うのが私の感想です。ぎりぎりの時間でテストファーストをやっていると、こんな簡単なメソッドのためにいちいちテストを書くのは面倒くさいな、というような気持ちなることがあります。その気持ちを突破してテストを書くには、熱血が解決手段になります。たとえ回り道に見えても、「燃えて突っ走るぜ」という気持ちで突進です。
逆に、熱血するならテストファーストは必須だと言えます。ある意味で、熱血するということは、先人の知恵を無視して突き進むことになります。それでもプログラムをそれなりの品質を維持した状態で完成させるには、テストファーストは必須と言えるでしょう。
以上、現時点ではこんなところです。
「熱血プログラミング主義」は一種の「洒落」であり、現世的な利益を何ら保証しないことを理解した上で、それでも酔狂でやってみようというプログラマが出て来たら面白いですね。