「エンジニアの人がどのくらいの技術力があるのか分からない...。Javaできます!とか、Python何もわかってないけど業務で使ってます!とか言われても測れないし...」
という相談を最近されたので、ぼくがエンジニア同士で話す時に相手の使っている技術に関して、技術力をざっくり理解する時に使っている基準を紹介しておきます。
エンジニア👨💻:「Python使ってます!できます!」
あなた👨:「この図のレベルの中で言うとどれくらいですか?」
エンジニア👨💻:「この図で言うと、業務経験はないけど自分で個人開発する時に利用したので、レベル3くらいですね!!」
みたいな感じで使ってもらえれば。
(個人の見解でしかない部分もあるので、ご了承ください)
エンジニアの特定の技術に関してのレベル分け
さっそくレベル分けの図を。
一番左にエンジニアが自分の技術レベルを表現する時に使う言葉を紹介しています。
たとえば、Linuxという技術に関して初心者向けの本を読んでチュートリアルを終えたくらいのエンジニアは「完全に理解した!!」と言いますし、Linuxを業務で使っていて思わぬ挙動に悩まされてしまったエンジニアは「ナニモワカラナイ」と自分の無知さに気づきます。
Linuxに関しての本を執筆するようになると、「できますよ」くらいの表現はするようになります。
Linuxの生みの親のリーナスさんともなると、エンジニアは人生で会うことさえ叶わず神のような存在。そのLinuxの神でも「Linuxチョットデキル」と表現します。
画像の右のほうに書いているのが、レベル分けです。
【レベル1】
- 聞いたこともない or 聞いたことはあるが、理解あいまい。
- たぶん全人類の99%くらいはココ。知らなくても生きていける。
レベル1はその技術への入り口に入ってもない状態ですね。
【レベル2】
- チュートリアルを終え、利用用途や特徴を理解
- その技術を触ったことがある人の中でも7~8割の人はココ。
- 実運用での制約やつらみの存在に気づいてすらいないのでHappy状態
レベル2は、その技術の基本的な使い方がまとまった簡単なチュートリアルを試してみて、動かし方を少しだけ理解できたくらいの人。
この状態の時は、「この技術すごいじゃん!」くらいのHappyな感情しか生まれていないはず。
【レベル3】
- 利用して独自に何か作った経験あり
- 技術を触ったことがある人の中で1~2割の人はココ。
- 勉強熱心/技術好きな人は趣味でここまではやってみる。
レベル3は、自分でその技術を使って応用的に個人開発してみた人などが該当します。
業務で使っていなくても勉強熱心な人は、新しい技術をどんどん触ってこのレベルまでは1週間もなくいってしまう人も。 (すでに他の類似機能でレベル4以上にあれば、レベル3までは比較的簡単に進めます。)
【レベル4】
- 業務で1~2年経験有、ググりながら主要機能を実装できる
- 業務で使ったことがある人の8~9割はここにいる。
- 業務で使ってなくてもこのレベルにいる人も多数。
レベル4になると、業務上必要になる特殊なケースでの技術の利用方法、運用を続ける上で思いもよらない結果に悩まされてしまうことがあったりと、自分はその技術に関して何もわかっていないことを痛感します。
ここから技術をより突き詰めて学んでいこうとするか、このレベルで止めるか分かれます。8~9割の人はここ以上技術を突き詰めない(突き詰めなくても普通に仕事はできてしまう)。
【レベル5】
- 業務3年以上、詰まらず主要機能実装、カンファレンス登壇
- 使ったことがある人の1割がココにいる。
- 界隈では名前が知られている人多数。
技術を突き詰めていくと、その技術に関しては界隈で少しずつ名が知れてくる。業務上その技術を使う上では、ほとんど困ることがない。
その技術に関しての勉強会やカンファレンスに登壇したりする機会も生まれるように。
【レベル6】
- OSSコミッターとして技術発展に貢献してる
- 国内だと100人もいないことも。
- その技術のコミュニティで尊敬を集めていて、界隈外でも名が通じる。
その技術に関してコミッター(技術の改善点を見つけて修正リクエストを送ったり、技術・コミュニティ発展のための役割を担う)人になる。
大手IT企業でも社内に数人しかおらず、彼らがいることで他エンジニアから一緒に働きたい会社と思われるようになる。
【レベル7】
- 技術・派生技術を作った
- その技術の神。唯一神であることもあるが多神教の場合もある。
- 一緒に仕事できる環境が得られるなら死んでもいいと崇められる。
その技術の創始者、神。
「Pythonできますよ!」って言っているような人の大半は、レベル3か4ですね。レベル5以上にある人はググれば「こんな実績あります。」って出てくるので「Pythonできます!」とかわざわざ言わないですね。
「フルスタックエンジニアですよ!」の危険性
プログラミング経験2~3年目とかで「フルスタックエンジニアです!」って言っている人と、プログラミング経験5年くらいあるのに「フルスタックエンジニアなんて全然...」って言っている人がいて、驚くことがありますよね。
その背景は、「フルスタックエンジニア」という言葉に能力基準が含まれないから。
↑フルスタックエンジニアなAさん
↑フルスタックエンジニアではないBさん
技術に関して何も知らない人からすると、「3年で何でもできるフルスタックエンジニア!すごい!」ってなるかもしれませんが、実際の技術スキルセットとしてはBさんの方が圧倒的に上。
こんなことになってしまうのは、AさんとBさんの「フルスタックエンジニアと名乗っていいと思っている能力基準」の認識が大きく違うから。
その技術に関して少し触ってみた程度でも「できる!」と表現しているのか、業務でも使いこなしているが本質的には理解できていない部分がまだまだあるという意味での「できない」なのか。
しっかり技術力を聞いてみるのほんと大事。
まとめ
以上、「【非エンジニア向け】Webエンジニアの技術力を測るレベル分け」でした。
書いてみて思いましたが、自分の持っている技術力を改めて振り返る上でも使えそうですね。この基準分け。
自分の持っている技術セットの中で、「ナニモワカラナイ」以上の基準にあるは何があるのか...
では!