aratana Tech blog

ECテクノロジーで 世界をもっと楽しく もっと笑顔に

禅とソフトウェア開発技術

心の落ち着きは、技術的作業にとって決して表面的なものではない。これこそが重要なものである。心の落ち着きを生み出すものは、優れた仕事であり、それを破壊するものは悪い仕事である。仕様書、計量器機、品質管理、最終点検などはすべて、作業責任者に心の落ち着きを与えるための手段である。ここでは心の落ち着き以外に重要なものは何ひとつない。なぜかといえば、心の落ち着きこそが例の <<クオリティ>> を知覚するための前提条件だからである。 (※ 禅とオートバイ修理技術〈下〉 (ハヤカワ文庫NF) より(単行本 下巻164ページ) )

こんばんは。夜の鳥刺し。木目沢です。

そろそろ4月に入った新卒のみなさんは配属が決まる時期ではないでしょうか。 今回は、そんな新ソフトウェアエンジニアのみなさんにぜひ心に留めておいてほしいことを書いておこうと思います。

それは、僕たちソフトウェアエンジニアにとっての<<クオリティ>>について。

まず、知っておいてもらいたい『ソフトウェア』のある一面。

クオリティが低くてもソフトウェアがお金を稼ぐことがある。

ということ。ソフトウェアエンジニアであれば、多くの人が経験されていることかもしれません。 KentBeckは著書、実装パターンで、

読むに耐えないコードが大金を稼いでいる場面を何度も見てきた。 (※ 実装パターンより)

と述べていますし、自分も何度か同じ経験があります。残念ながらこれは事実です。

なぜ、クオリティを意識する必要があるのか。

では、なぜクオリティが必要なのか?

  • 経済的な理由。コストの削減。経済的な効果。
  • 誇りや責任の問題。人間的な効果。

経済的なお話はまた次回します。もちろん大事ですし、この話が設計やプロジェクト管理の理論なんかにも繋がっていきます。 しかし、大事ではあるものの、『読むに耐えないコードがお金を稼ぐことがある』以上、否定されても完全に論破できるものでもないのです。

なので、今日は後者について、先のKentBeckの言葉を紹介します。

誇りと責任

KentBeck自身、読むに耐えないコードが大金を稼いでいる場面を何度も見てきたと言っていますが、

それでも私はできるだけよいコードを書こうと心がけるだろう。 よいコードを書くこと自体が喜びであり、・・・ 誇りを持ちたい・・・コミュニティの一員として認められたい・・・ そのコードを他の人が理解し、評価し、使用し、拡張してくれれば、さらに喜びが増す。 責任の問題。エンジニアとしてお金をもらっているのに対してどのようにお返しすればよいか。 (※ 実装パターンより)

と述べています。 世のソフトウェアのほとんどは、チームを組み複数人で作られています。 であるとすると、ソフトウェアに変更がある場合は、人が書いたコードを読み修正することになります。 自分のコードも誰かが読むことになります。

であれば、そこにはコミュニケーションが発生し、コミュニティの一員として活動する必要があります。 一人で黙々とできるイメージがあるプログラマーという職業ですが、それは全くの誤解です。

そのコミュニティの一員として認められる。コードが評価される。使用される。その喜びと責任。それこそがソフトウェア開発にクオリティが必要な理由です。

君は心の落ち着きを生み出しているか

ここで最初の引用に戻ります。これは僕の好きな小説、禅とオートバイ修理技術〈下〉 (ハヤカワ文庫NF)からの引用です。

クオリティとはそもそも一体なんだというお話から、それを知るには、『心の落ち着き』が絶対必要となるといいます。 優れた仕事は『心の落ち着き』を生み出し、悪い仕事はそれを破壊するからということです。

読みにくいソースコードを見て(過去に書いた自分のソースコードかも!?)、イライラする。 納期が短くて焦る。 設計が粗悪で苦労する。 ・・・どれも心の落ち着きを生まない、悪い仕事ということですかね。。。

クオリティがなくてもお金は稼げる。 しかし、誇りと責任を持ち、心の落ち着きをもたらす仕事がしたいかどうか。

ソフトウェア開発という仕事にはそういう側面があるということだけでも、これからのエンジニアの方々には知っておいてもらいたいなと思っています。