「バグの少ないプログラムを作るには?」

かなり昔の記事だが、印象に残っているので取り上げる。ソフトウェア開発のバグに関して、記者はソースコードの記述を例にバグを減らすためには地道な努力と工夫が必要と訴える。

一つひとつは些細なものでも,習慣として実行することでバグは確実に減るはずだ。重要なのは,知識として覚えることではなく,日常的に実行することである。

バグの少ないプログラムを作るには? | 日経 xTECH(クロステック)

内容としては当たり前の事だし、例として示されるサンプルも特に目新しいテクニックではない。経験者なら皆この程度の工夫は出来るだろうし、やっていて当然という気もする。今なら"Source Code Hacks"なんていう見出しでも付きそうなネタだ。

この記事で興味深いのは、コメントの方である。

ミスを減らすための工夫を自発的にできる人は、もともと質の高い仕事ができる人であるケースが多いです。そういった工夫の必要性を理解できない人は、自らのミスに対しても鈍感であり、結果として大量のバグを生んでくれます。小手先の技を教え込んでも効果ありません。悲しいことに、どれだけ教育してもこの意識を改革することは非常に困難です。バグを減らす究極の手段は、後者のような人に「開発をさせない」ことしかないのかもしれません。
上記記事のコメントより引用

そう、この程度の工夫を出来ない人が、残念ながら少なくない。同じ問題点を繰り返し発生させても、同じように直せば良いと思っているのだ。このような開発者は常に自分のやり方が正しいと思いこんでいるので、何も直すべき点など無いと信じて疑わないのだ。こんな人(意外とベテランに多い)に指導しても、「こんな小手先のテクニックは役に立たない」等と拒否反応を示すことが珍しくない。

ソフトウェア開発者の生産性には大きな差が存在すると言われているが、このようなギャップというものは、実はこのような些細な工夫の積み重ねという気がする。ごく一部の天才的なプログラマを除き、普通の開発者のスキルはキャリアのスタート時点では大して変わらない。しかし、問題点は何なのか?本質的な原因は何なのか?問題を二度と発生させないようにするために何をすべきなのか?といった事を考えられる人は着実に成長してゆく。このような学びの姿勢が、やがては数十倍とも言われる生産性の差に結びつくのだろう。組織として優れたソフトウェアを共同で作ってゆくためには、このような優れた開発者を中心に据え、そうではない人を他に割り当てるといった適材適所の工夫が必要なのかも知れない。