優れたエンジニアの選び方
■国際競争力が低下している原因
日本のIT系産業は、国際的に競争力が低いと言われている。競争力という点で考えれば皆無だろう。しかし、エンジニア自体は非常に優秀な人が多いと思う。その優秀さの使い方を完全に間違えているので、実力が発揮されることはない。
よく見かけるのが、上流の的外れな指示を実現するために、膨大な労力を割いている現場だ。こういう現場が多い理由は、人選の基準が間違えていると考えている。適切なポストに適切な人材を割り振れないので、こういう悲劇が起こり、優秀な人材がどんどん消耗されてしまう。
競争力の低下は、人選の下手さに起因しているのではないだろうか。
■人選基準の勘違い
日本人の人選の基準には、大きな勘違いがあると思う。基準といってもいろいろあるので、まず、技術に関して絞って考えてみたい。
普通、技術を学んでいると実力は右肩上がりに上がっていくと考えられている。しかし、よく見るとそういうプロセスで人は成長していない。実際のプロセスは、
覚える → 暴走する → 自分の勘違いを自覚する → 思索できるようになる
というプロセスをたどることが多い。
■なぜいったん暴走するか
まず最初に、技術を知識として覚える。この覚えた段階では、100%理解している訳でなく、自分流の解釈が混ざっている。「print "Hello World"」レベルのものであれば、どう解釈していようが大した問題はない。しかし、クラスの使い方や継承なんかの話になると、「なぜそれをするのか?」というレベルから、人それぞれいろんなことを考え出す。
人が何を考えていようが、きちんとコードを組めば動くのがプログラムだ。勘違いをしていてもコードとして間違えていなければプログラムは動く。より深く学べば学ぶ程、潜在的な勘違いは蓄積され、臨界点に達するとエンジニアは暴走する。
変な勘違いを含んだコードや、意味不明なサーバの設定をたまに見ることがあると思う。それが蓄積された勘違いが臨界点に達した現象だ。そこで、さらに学んで自分の間違いに気付けば、その人は1つ優秀になる。そういうふうに成長していく。
■マイナスではない。1つの学ぶ機会だ。
本来、蓄積された勘違いは随時発現する方が好ましい。その都度自分の間違いを正せるので、大きなダメージを負わなくて済む。間違いがないだけの人を選ぶということは、誰でもできるレベルのことしかやっていないか、潜在的な勘違いを溜め込んでいる可能性が大きい。
特に人を技術的に見抜く場合、なかなか難しいと思う。特に、自分より高度な技術を持つ人を選ぶ場合、判断基準が分からない。そんな場合、何ができるか、どういう実績を残したかも大事だが、失敗談が大きな参考になるのではないだろうか。
失敗が多いというのは、一般的にはマイナスだ。しかし、それを起点として学ぶ人だっている。実際、そこで学んだかどうかは別として。転職歴の多さ、失敗プロジェクトに多く関わっている、ブランクがある……などなど、こういう一般的にはマイナスと言われる要素も、学ぶと言う点においては大きなプラス要素になりえる。
確実に成果をあげていて、挫折を知らないタイプのエンジニアは確かに優秀に見える。しかし、荒廃した乱世を、拳1つで生き抜いているようなタイプのエンジニアだっている。
そういうエンジニアはトラブルに対して非常に強い。本当に優れた人材は、自分の想像するルートを歩いているとは限らない。ちょっと見方を変えてみると、思わぬところで優秀なエンジニアが見つかるかもしれない。