「優秀なエンジニア」の定義について考えてみた
「あなたが思う優秀なエンジニアとは?」
こういった質問をされたことはあるだろうか。この答えについて、思うところは人それぞれあるだろう。優秀なエンジニアに求められるスキルとはなんなのか?優秀なエンジニアとはどういった人なのか?稼ぐエンジニアは何が違うのか?
世界で最もイケてる職業「エンジニア」
インターネットの誕生から、ディープラーニングの再燃やブロックチェーンにわたり、ここ数年の技術的革新は目を見張るものがある。これらソフトウェア側の進歩は、最近ではIoTなるハードウェアとの融和も起こし、全ての物がインターネットに接続できるユビキタス社会(古いww)を形成しつつある。
そんな中、僕が以前から言っていたように、エンジニアの価値はより一層高まっており、中国等では今や医者よりも上のランクの職業として人気を誇り、最優秀層がこぞってエンジニアを目指すといったことになっている。日本は依然として医者の地位が非常に高く、エンジニアのそれとは比べ物にならないが、中国では「エンジニア落ちで、なくなく医者に」といったことが、既に現実として起こっているのだ。
そう、今やエンジニアは世界で最もイケてる職業の一つなのだ。
優秀なエンジニアとは
僕は個人でも仕事をしているのだが、最近になって、なんとなくこの問いに対していくつかの答えを持てた気がする。それらのキーワードとなるのが、プレイングマネージャーとゼロtoワンである。
プレイングマネージャー
優秀と言われるエンジニアは、
- 特定のライブラリ・フレームワークに詳しい
- インフラからアプリケーションまで組める
- 最新の言語を駆使できる
- 様々な言語を扱える
- コーディングが速い
といった高いスキルを持つ人が多い。
しかし僕は、特にプロダクトにおいてこれらよりも重要な資質が「マネジメント」であると考える。
これは何年か前のプロジェクトの話だが、デモが2ヶ月後、納期が5ヶ月後で、デモではバグがあってもイメージを掴めるように、全体的に動くものを求める受託開発案件があった。ここに、非常に優秀なエンジニアをリーダとするチームを組んだので、この案件はデモの公開も含め、オンスケでいけると考え、初期の時点でリーダーにもそれを共有していた。
しかしながら、以下の理由でこのプロジェクトは大きく遅れることになる。
- リーダーが選定した言語・フレームワークが最新のもので、他のエンジニアのキャッチアップに非常に時間がかかった
- 開発序盤からコードの品質を高いレベルで担保するため、厳密な文法チェックや、様々なケースのUnitテスト・結合テストを求められ、それが認められるまでソースがなかなかコミットされなかった
- バグが発生すると、革新的・スマートな解決策を見つけるための議論に時間を割くことが多く、進行が止まりがちだった
こうして書くと、典型的なウォーターフォールの失敗例だが、経験した人も多いのではないだろうか。
実際、今でこそアジャイルだと騒がれているが、粒度が異なるだけで、こういった問題は多々発生する。
エンジニアとして、品質を高いシステムを作りたいという欲求は非常にわかる。しかし、システムは必要とする人が居て初めて価値を生む。時にはバグを見捨て、Dirty&Quickで作る必要にも迫られる。
この優秀なエンジニアは、スキルセットは非常に優秀だが、マネジメントの視点が欠けていた。つまり、エンジニアとしての理想を追い求め、顧客の本当のニーズを掴むことができなかった。結果、良いものができたとしても、満足度は低いものとなる。
ここでのプレイングマネージャーとは、エンジニア(プレーヤー)として働きながらマネージャーの視点を持って動ける人を指している。そういったプレーヤーこそ、エンジニアの中でもかなり貴重な人材となるのは、マネージャーの責務から考えても自明なことであろう。
ゼロtoワン
僕も職業柄、多くのエンジニアと関わることが多いが、そのほとんどが歯車としてのエンジニアだということに驚いた。そして、彼らの多くは、思考することを放棄しているのかと勘ぐるぐらいに、思慮が浅いことが多い。
そもそも、多くのプロダクトにおいては、以下のようなフローが確立されている。
コンサル:課題発見・要件定義
↓
大企業SIer、ベンダー:設計
↓
下請け:開発
下請けの会社では、受け取った設計を元に開発を行うのだが、ここでほとんどの(特に入社から日が浅い)場合は、システム全体からみた一部機能、つまり歯車の部分の開発しか行うことができない。
仕方のないことではあるのだが、これではエンジニアとしての重要な開発スキルは一向に育たない。そして、設計も上から降ってくるため、ゼロから自分で何かを作る脳の回路が全く使われない。「ゼロtoワン」と「ワンtoテン」では、前者の方が圧倒的に難しいし、経験もセンスも必要だ。だからこそ、このような形態で仕事をし続けた人は、3,40代になっても、いつまでも歯車として、安月給で使い倒されることになる。
逆にいうと、ゼロから何かを生み出せるエンジニアには、彼らの100倍近い価値がある。世の中には自称エンジニアがごまんといるが、本当に優秀なエンジニアは、自ら価値を創造することができるのだ。
これを実現するには、個人で小さくてもプロダクトを作ったり、ベンチャーなどでがっつり開発するといった経験が必要になるだろう。そういった環境に身を置けるかどうかが、優秀と歯車を分ける。
まとめ
最近、様々なバックグラウンドのエンジニアと関わる機会があり、その中で「あ、この人は優秀だ」と感じる人たちの共通項を出した結果がプレイングマネージャーとゼロtoワンだった。これは僕の経験や目標とも合致している。
エンジニアは日々勉強だ。そしてそれを楽しむ気概が必要だ。
目指す先を今一度見直し、新たな価値を生み出すプレイヤーとして、精進していかねばならない。