職人芸の世界

世間で「職人芸」と言うと、他の人には出来ない何か高い技能のことを指すと思う。例えば、伝統工芸の職人芸などがその一例だ。長年の努力で培った技術は賞賛されるし、本人も優れた人として崇められることが珍しくない。

しかしながら、ソフトウェア開発の世界にいると「職人芸」という言葉は、何故か悪い意味で使われることが多いようだ。初心者の書くコードとは確かにレベルが違うのだけど、やたらと小手先のテクニックに走る(あるいは自分が持つ技術を自慢したい?)ので、理解するのがやたらと難しかったりする。

確かに職人芸のコードは簡潔で(あるいは簡潔すぎて)、実行速度も速く(実は差は微々たるもの)、技術的には優れている(本人の主張によれば)のかも知れないが、他の人が誰もメンテナンス出来ないようなコードを示されても、組織としては困ってしまう。一人でソフトウェアを作るのなら何をどのように書こうと本人の勝手だけど、開発組織としては他の誰かがコードを引き継いでいかなければならないのだ。本人以外にメンテナンス出来ないものを作られるのは、かなり迷惑な話だったりする。

そんなわけで開発現場で職人芸という言葉は、こんな文脈で使われることになる。

  • 「彼は職人芸の人だ」
    →他の人には理解できない凝ったソースを作る人という意味。
  • 「このコードは職人芸だな」
    →普通の人の理解を超える複雑怪奇なコードという意味。
  • 「職人芸のコードだからどうしようもない」
    →他の人では手直し出来ないという意味。

こんな職人芸を持つ人は、なぜか経験豊富な昔気質のベテランに多いようだ。自分の書いたコードが世の中でどのレベルにあるのか知らないというのは、一つの悲劇なのかも知れない。オープンソースのコードを読んだり自分の書くコードと比較したりして、自分で自分を軌道修正した方が良いと思うよ。