SSブログ

守・破・離(1) [プログラマー現役続行]

組織を強くする 技術の伝え方 (講談社現代新書)

組織を強くする 技術の伝え方 (講談社現代新書)

  • 出版社/メーカー: 講談社
  • 発売日: 2006/12/20
  • メディア: Kindle版

終章「技術の伝達と個人の成長」より
 茶道や武道の世界には、「守・破・離」という教えがあります。これはその人のレベルに応じて、それぞれの段階でどのようなことを実践すべきかを示したものです。三つの段階を簡単に説明しておくと、「守」は決まった作法や方を守る段階、次の「破」はその状態を破って作法や型を自分なりに改良する段階、そして、最後の「離」は作法や型を離れて独自の世界を開く段階です。
 一般的には、すべての学習は真似から始まります。手本に従ってそれと同じようにすることを求められるのです。これがまさに「守」です。
 決められていることを生真面目に守るこの段階は、繰り返しも多く非常に面倒だし、なによりもやっているほうは面白くもなんともありません。そのためそこで我を通して自己流でいきたがる人がいます。しかし、自分の土台をつくるためには、素直に手本を真似るほうが結果として早く進歩することができます。
 実際、初期の段階で我慢して手本の真似を徹底的に繰り返していると、そのうちに手本と同じようにやることの意義や、手本から外れたときに生じるデメリットが理解できるようになります。ここまでくると「強制されて仕方なく守っている」というより、「自ら望んで守っている」という状態になります。やっていることの内容や価値を自分なりに理解しているので、自分の意思で率先して手本を守るようになるのです。
 ところで、世の中にはこの状態で満足してしまう人がたくさんいます。そのような人は、当然のことながらそれ以上の進歩はありません。
 本当に楽しいのはここからです。この段階まで来た人は、自分で創意工夫をしながらいろいろなことが試せるようになります。内容を理解しているため、従来の方法よりもっといい方法はないかと自分で探すことができるからです。そのような能力があるのに何もしないのはもったいないことです。
 そして、この状態がまさに作法や型を破る「破」の段階です。基本的には、作法や型を手に入れて、そこからさらに出ようと意識して行動した人だけが進歩を続けられるのです。もちろん、このときの試行錯誤はしっかりとした経験と根拠に基づくものなので、初心者があてずっぽで行動するのとはまったく違います。決められた道から外れても、それによって致命的な失敗を犯す危険性は極めて低いし、むしろこのときの行動はより効率的で合理的な方法の創出につながらう可能性も大です。
残念ながら、普通の企業におけるソフトウェア開発では、お手本として優れたソフトウェアが存在することは少ないです。実際には、悪いお手本が蔓延し、経験の浅い若手などは、その悪いお手本を真似する(コピーする)ことが多く、結果として、「守」の段階から抜け出せなかったりします。そして、次の「離」への段階へほど遠いものとなってしまいます。

たとえば、次のようなJavaのコードを見かけることがあります。
if (null == x) {
    ...
}
C/C++言語では、本来x == NULLと書くべきところを間違ってx = NULLと書いてしまってもコンパイルが通ってしまい、誤ったコードを書いたことに気付かないので、NULL == xと書くように指導された人も多いかと思います。しかし、最新のコンパイラであれば警告してくれます。「コンパイル時のワーニング(-Wallと-Werror)(2)

Javaでは言語仕様が異なりますので、そもそもif (x = null)と書いたらコンパイルエラーです。なぜなら、xboolean型ではないからです。もし、C/C++言語からの習慣で、Javaでもそのように書いているとしたら、その人は、とても次の「離」の段階にはいけないと思います。また、Javaでもそのように書くように指導している人も同じです。