”ソフトウェア書くことは芸術であり、本当にうまくなるには10年を要する。”
~リチャード・ガブリエル~
今日のソフトウェア業界では、「ソフトウェア職人気質」で述べられているような職人を育成し、ソフトウェア開発を行っているところはほとんどないと思います。
しかし、50年の歴史を経過した今でも家内制手工業の域を出ないのであれば、職人を育成していくことは重要です。
ソフトウェア開発とは何か?
人がソフトウェア開発をすることは何を意味するのかについて考えなおすきっかけになる本だと思います。
ソフトウェアというものは、素晴らしい方法論や形式的な構造で作られるものではなく、「人」によって作り出されるものです。
つまり、増え続けるソフトウェア開発の問題
・人材不足
・劣悪な開発環境
・学習環境の不足
・短納期で高機能, 高品質を求められる
これらの問題を回避するためにはより優れた開発者を育てることからはじめなければいけません。
これを達成するために目をつけたのが数百年に渡ってうまく機能してきたシステム(職人気質に則った制度)に目をつけました。
優れたソフトウェア開発者はプログラミングというものが熟練の必要な技芸であることを常に理解してます。
技術者が持っている詳細な技術的知識の量とは関係なく開発は最後には経験と勘の世界になります。
ソフトウェアの芸術性に対する感覚が養わなければソフトウェア開発をマスターすることはできません。
開発者はたとえどんなに経験豊富で優秀でも開発者でいる限り給与が高くなることはほとんどない。
なぜなら、優秀な開発者に管理者よりも高い給与を支払うような給与規定を定めている企業はほとんどないからです。
そのため開発者が高い給与を得るために管理的な仕事に就かざる得なくなり技術の第一線から退いてしまう。
アプレンティスとは職人の下で働く初心者を指します。
ただし、初心者といってもプログラミング経験がまったくないような人ではなく、必要なプログラミングスキルに関しては半年ほどの講習を受けてすでに身につけている人を指します。
ジャーニーマンとは、職人に師事した結果、一人前の職人として成熟したものの、熟練した職人となるにはさらに卓越した熟練度が必要である人を指します。
ソフトウェア開発における人材不足は、ソフトウェア開発者が足りていないことではありません。
”優秀な”ソフトウェア開発者が足りないだけです。
ソフトウェア開発者の中にはプロフェッショナルという自覚や力量を持たず、単に業務としてソフトウェア開発をこなしているだけというサラリーマン化した人が多いのではないでしょうか?
日々の業務をこなすのに必要最低限の技術だけしか学習しない人も多いのではないでしょうか?
会社の業務時間以外に学習を継続する習慣を身につけることは、優れたソフトウェア開発者になるには必須といっても過言ではありません。
しかし、本当の難点はそのような開発者が学習を重ね向上していくかどうかではなく、彼らとともに働く人達が学習と向上に対して彼らと同じ態度を持って臨むかどうかという点にあります。
ソフトウェア開発の技芸に対する自分の意気込みと熱意を同僚に伝染させたことがあるかだろうか?ということです。
一人の経験豊富な開発者だけが継続した学習をしているだけでは、職人となる人材を育成できません。
継続した学習という習慣が定着していない職場の場合、同じ伝染をさせる上でもかなり努力が必要となる場合もあります。
そしてかなり努力しても、それほど成果が上がらないような職場があることも事実です。
職人が熟達することは、その伝承にも責任を持つことです。
ある単発プロジェクトのために人が集められ、後で解散させられるというグループの形態ではなく、次々にプロジェクトをこなしていく職人の下で一緒に働くチームの形態になるわけです。
このためアプレンティスを引き受けることは熟練職人にとって長期に渡る義務となります。
そして、この義務を受け入れることで熟練職人になったのだと認識するのです。
開発チームメンバーに対して週に1〜2時間、通常業務から離れて何か学習する時間を与えましょう。
学習環境を作り上げるために、組織内で何らかの勉強会を開催することの提案がなされています。
一旦、組織内での勉強会が定着したら部外者も引き入れて幅広いテーマを扱う一連のセミナーをスタートさせます。
たいていの場合、テーマについて深く知っていなければ気持ちよくプレゼンデーションすることなどできないためこういったセミナーはテーマについての詳細を学習する素晴らしい動機付けにもなるわけです。
組織内でこのようなプレゼンテーションは一見するとそのための準備時間が無駄に見えますが、対象となるテーマを深く知る機会を与えてくれますし、聞き手にわかりやすく説明するための組み立てを考える訓練にもなります。
さらに、実際のプレゼンテーションでは、コミュニケーション力を鍛える場にもなるというように数々の利点があります。
学習時間はプロセス改善のための投資です。
さらに次の段階として、外部の会議への参加、教育コースの講師、雑誌の記事や専門者の執筆を推奨することで学習が日々の習慣となり、永続的な学習が可能となり大きく前進することができる。