こちらにあるように、当社はジュニアのエンジニアを中心に採用させて頂いています。ジュニアという英単語は、日本語で言うと半人前・ほぼ素人、という意味です。

戦力にならない人たちを、戦力になるまで時間のかかるエンジニア職において採用しているのかについて、不安に感じる方も多いと思うので、説明させて頂きます。

ジュニアでなければできない仕事を任せたい

理由はこれだけなんですが、背景として、大きく2つあります。

1つは、僕がもう(1から10まで)やる必要がないお仕事をお願いしたいからです。

ソフトウェアというのは、私のようなシニアエンジニアがちゃんと設計して屋台骨として品質を守るコードと、誰がやっても大差ないコードに大別できます。大差がないなっていう状態に持っていくのに、結構な時間がかかったけれど。

10年近く会社を運営する中で、自分がコミットする技術を学び、作って、試行錯誤した結果、前者のコードが固まった。大差がないコードをシニアが書くにはコストが高すぎる。

ジュニアのスキルアップの場を提供させて頂きつつ、当社にとってはコストメリットが高い。互いの利害が一致していると思っています。

大差がないコードってなんだと思われた方は、ジュニアの証拠です。コードの意味が見えていないということ。どのコードが品質を担保するコードかを体感できるには、ジュニアでは難しいです。

もう1つは、僕のようなシニアが失ってしまった、盲目的な自由な発想です。ジュニアで最も価値が高いのは、何も持っていないこと、です。手ぶらであるということ。

僕もそうですが、経験を積むとこれまで技術の盛衰や失敗したプロジェクト、崩壊したチーム、その他の開発周りの地雷を踏んだり、地獄を見てきています。そこで色眼鏡ができる。知見でもあり、色眼鏡でもある。凡百とは違う視点があったとしても、まっすぐ物事を見られなくなる弊害もあります。

手ぶらのジュニアは、まっすぐ物事を見てくれます。よくも悪くも知らないから、先入観がない。わからないことがわからない、という状態に僕はほぼ戻れないですが、みなさんはそこに立てる。それに価値があるんです。

”本物”のシニアは、転職市場に存在しない

シニアの採用をあまり積極的に行っていないのは、色んな意味で採用が困難だからです。

即戦力の方は、弊社に雇われるメリットがなければ理由もないです。独立したり、大企業で責任のあるポジションにおられるのが最も合理的です。年収も1500万クラスを沢山みてきた。

次に問題なのは、本物のシニアは驚くほど少ないことです。2年目も10年目も大差がないなと思うケースが相当あります。Lv5と10ぐらいの差であれば、10年目を採る理由はありません。

業務で求められるドキュメントを記述したり、他人の成果物をコピー&ペーストしつつ手直し、GPTでライブラリを探してなんとなく入れて作業を完了するのが半人前というレベル。ゼロからコードを起こせないなら、半人前です。

このレベルの人が最も多く、経験年数はほぼ関係ありません。10年目の半人前がたくさんいます。同じ半人前なら手ぶらのジュニアのほうが10倍良いです。10年経って半人前というのは、内発的動機づけに左右されていないエンジニアである可能性が高く、当社では致命的なミスマッチになります。

多少のサンプルコードがあればゼロからアプリケーションコードを書けるエンジニアって、全然いないです。だから教育コストが〜とか言ってるわけで。そこまで持っていける力のあるエンジニアは、ほとんど職責で忙殺されているので、教育だけにアサインできない。

本物のシニアに会うには、自分が本物のシニアになって、その人に認めてもらうしか無いんです。本物は偽物を見分けます。本物は本物同士のコミュニケーションにしか興味がないので。

そういう本物のシニアをたくさん知っていて、ちょっとした相談ができるのが、僕の財産です。

労力は外注できても、能力は外注できない

日本のケント・ベックこと、TDD伝道師 t_wadaの名言です。

労力は外注できても、能力は外注できない。

これがなにを言っているかと言うと、能力をあげる=キャパを上げる行いが、外注に取って代わるわけ無い、というありがたいお教えです。

私も頭ではそう思っていました。でも、ヒトを取ったとしてもどうやってキャパ挙げられるのだろうかがネックでした。案件は取れると思うが、ウチのキャパってそれで上がるのか、と。

上がるんですね、これが。この1年で痛感しました。理由は2つ。

1つは前述の通りで、誰がやっても大差ないコードの存在。結構多いです。体感でいうと、2:8。シニアは2をやらないと意味がないし、空いたリソースをメンターとして使うことで、ジュニアを活かせる。

もう1つは、ドメインへの習熟。作っているアプリケーションごとにソースコードのビジネスロジックは結構変わるし、アーキテクチャも全然違っているものなので、慣れるのが大変です。 6 ヶ月チームで仕事しているジュニアエンジニアと入ったばかりのシニアエンジニアで、アプリケーションのドメインに詳しいという理由だけで前者の方が生産性が高かったりします。

上記の理由から、当社では最小の費用で最大の生産性を発揮することが必須なので、ジュニアとシニアの組み合わせが最小単位としています。ジュニアとシニアでペアを組むのと、シニアだけのペア。極めて同じです、出せる成果は。

この構成を組みたいので、ジュニアの人が欲しいんです。ジュニアはなかなか見つからないんです。

ジュニアの適性について

一言で言うと、もっとわかりたいと思えるかどうか、だけです。

ソフトウェア開発の宿命で、自分のスキルはどんどん陳腐化するので、アップデートする必要があります。自分自身でアップデートしていける基礎体力と思考回路が必要で、自分の好奇心がガソリンとなります。

好奇心は内部から湧き出るもの(内発的動機づけ)なので、外野が植え付けることができない。

ソフトウェア開発は知的好奇心を刺激しまくる楽しいお仕事ですが、逃げ場がない仕事なのでプレッシャーは常にあります。それを上回るには「わかりたい」という内発的動機づけが必要です。プログラミングに触れてそれが持てるかどうか、ハッキリ別れます。真っ黒い画面に文字を打ち込んで、「できた!うわあ!楽しい!」ってなるヒトと、ならないヒト。別れます。

ない人は、疑問を言語化できないです。「ここはスムースに書けた」「ここは全然わからん、全くコードを書けなかった、なぜなら・・・」とはならない。内発的動機づけが持てる人は「これだけのことなのに、えらい難しいなぁ」という前向きな反応を見せます。

ゼロになにを与えてもゼロなので、ゼロなのか1なのかは、採用の過程で判断させて頂きます。

以上がジュニアのエンジニアを採用したい理由です。

当社では、デビュー戦が誰もが知る企業の案件であることが多いので、腕を磨くにはちょうどよいと思います。

ジュニアの方のご連絡、伏してお願い申し上げます。