2016-04-13

スキル・キャリア細分化 vs 問題解決能力・ドメイン熱中力

世の中、ソフトウェアエンジニアのスキルやキャリアを細分化しようという動きが盛んなようだ。ソフトウェアの規模が大規模・複雑化している昨今、分業しなければやっていけない、一人の技術者が何でも知っているという時代ではないのは分かる。

ただ、おびただしい数のスキル項目やコンピテンシー項目を見せられると強い違和感を感じるのは自分だけだろうか。

一覧となったスキルやコンピテンシーを組織として網羅しながらレベルを上げていくと、どんな開発も成功するのだろうかという疑問が湧く。ソフトウェアエンジニアを人間として見ていないように見えるのだ。コンピュータのAIに必要な知識を学習させているような感覚を覚える。コンピュータ vs 人間の将棋対決が象徴しているように、現実社会でAIと人間が対決してもしようがないように思う。それぞれ得意な分野で役割分担した方がよっぽど生産的だ。だから、ネットの情報やネットで調べた専門家を使って解決できる問題は、スキルやコンピテンシーリストから外してもいいのではないだろうか。今どき「知っていること」は重要ではなく、「問題を解決する意欲を持って、どこで情報を収集してどう組み立てて進めればいいか」が分かってできることが重要なのではないか。

タイトルに書いた「スキル・キャリア細分化 vs 問題解決能力・ドメイン熱中力」の意味は、たとえ、スキルやキャリアがほとんど無かったとしても、問題解決能力とドメインへの熱中力(Enthusiasm)が高ければ、必要なスキルはスポンジが水を吸い込むように身についてきて、それが自信につながりキャリアも形成されるのではないかという意味だ。

現実には、プロジェクトメンバー全員が問題解決能力が高いという状況はあり得ないので、いろいろな人の組合せでプロジェクトを進めていかなければならない。ただ、そのとき人は人として捉えなければならず、人をコンピュータのAIのように扱ってはいけないと思う。

現代のソフトウェアエンジニアリングは大きな曲がり角に来ていると思う。エンジニアリングを学問として昇華させようと考える人々は、すべてのドメインに共通に利用できる普遍的な理論を構築しようとする。しかし、ソフトウェアを作っているのは人間であり、人間は千差万別でコンピュータとは違って普遍的な思考や行動をしない。

だから、ソフトウェアの研究者の中でも、G.M. ワインバーグやトム・デマルコのように、人を人と捉えて語る人達もいる。

一方で、ソフトウェア工学の研究者は特定のドメインで醸成されてきた手法・方法論をそのドメインの特徴として捉える研究も少ないと感じる。(なぜか NASA だけは特別扱いのようだが)

ハードウェアの世界では業界に密着した研究(例えば東京大学の藤本隆宏先生の自動車業界の研究)などがあるのに、ソフトウェアの世界では、ドメインに特化した研究はあまり見かけない。

タイトルに書いた「スキル・キャリア細分化 vs 問題解決能力・ドメイン熱中力」のように、多様化している世界の中で、ドメインを意識しない抽象化を目指すのではなく、ドメインに特化した問題解決を目指す必要があるように考える。当然、nが減るから対象者・読者は減ってしまうが、全員に通じるような理論・方法論は今の世の中あり得ないと思うのだ。

もっと、「問題解決能力の高さ」とか「このドメインが好きでこの仕事をしてるんだ」といった所を高く評価するしくみはできないのかねと言いたい。(『問題解決能力(Problem Solving Skills):自ら考え行動する力』も参照されたし)

人間はコンピュータではないので、一律にもののように扱ってはいけない。デバッグ工学研究所の松尾谷さんが説くように、プロジェクトメンバー全体のモチベーションを高めることに注力を注いだ方が効率よくより良い結果に結び付くのではないかと思う。

その仕事が好きで、プロ意識を高く持って、寝食を忘れて没頭するようなエンジニアは、必要な知識がどこにあるのかを探し、スキルが必要であれば熟練者に弟子入りしてスキルを習得する。自分が熱中できる分野での足らない知識やスキルなら、それを学べることはこの上なく楽しいと感じる。何に役立つのかも知らさせていない講義をスキルマップの星取り表に従って機械的に受けるのとは、学習効率がまるで違う。

人間には人間の得意な創造性や問題解決の能力を求め、知識や解決方法の検索や提案はネットやAIがやってくれる時代はすぐそこまで来ているような気がする。

スキルやコンピテンシーは一般化できないドメインに特化したものに集中させた方がよい時代になってきていると感じる。そうなるとドメインに特化する必要があって、研究者も現場に密着しないと成果につながらない。だから、そういう研究ってほとんど見当たらないんだろうなと思う。でも、現場の問題をソフトウェアエンジニアリングで解決する事ほど研究者のモチベーションを高めると思う。それを一般化しようしようとするのではなく、どのドメインに特化した要素がないかどうかを考えた方がよい。