優れたシニアJavaScript開発者を見つけるのに苦労していますか?メンターシップが答えです

ドライラップ— Vern(CC-BY-NC-2.0)

メンターシップが私たちが働くチームに与える影響を研究すればするほど、それが生み出す変化の大きさに圧倒されます。メンターシップのコストは時間とともに線形スケールで増加しますが、メンターシップの影響は指数関数的スケールで増加し、生産性を高めると、投資した時間とお金よりも桁違いに大きくなります。

スケールが根本的に異なるため(線形と指数関数的)、メンターシップにもっと投資することでどれだけの報酬が得られるかを脳でラップすることは困難です。私たちの脳は直線的に考えるのは難しいと思われ、指数関数的なスケールと複利の見地から考えるのはイライラするほど難しいです。

線形思考の問題は、ソフトウェア業界全体が徹底的にトレーニングに投資していないなど、大きな間違いを引き起こす可能性があります。結果は良くありません。

多くの場合、マネージャーは、従業員がコードを書くのに忙しくなければ、彼らは効果的に活用されていないという誤った信念に陥ります。結局のところ、その信念は事実に裏付けられていません。

  • 56,000人を超えるコーダーを対象とした2016年のStack Overflow調査によると、メンターシッププログラムは大学の学位よりも高い給与と相関しています。これは、メンターシップがスキルを学ぶための非常に効果的な方法であるという事実を反映しています。
  • 2017年のStack Overflow調査によると、企業がスポンサーとなっている学習の機会は、従業員が仕事の機会に求める最高のメリットの1つです。
  • 88%の従業員は、より多くのトレーニングが役立つと感じています。

メンティーのメンターシップ特典

  • 学習と成長を加速
  • 自信を高める
  • ポジティブな例へのより良いアクセス(専門家が行う方法で物事を行う方法)
  • 貢献/コラボレーション/アイデア共有への恐怖を軽減
  • コミュニケーションスキルを向上させる
  • メンティーは、より多くの投資と価値を感じています
  • 上向きのモビリティを向上させる-Sun Microsystemsの調査では、メンティーが昇進する可能性が5倍高いことが判明しました。
  • メンティーはメンターになり、これらすべての利点を

雇用主に対するメンターシップのメリット

  • 募集のための素晴らしい特典
  • 開発者の生産性と保持力を向上¹²
  • 知識のサイロを削減
  • バスファクターを改善—継承リスクを低減
  • より積極的で役立つ、協力的なチーム文化を作成します
  • 忠誠心を高める
  • 従業員のエンゲージメントとモチベーションを高め、財務結果を劇的に改善します³
  • リーダーの特定と昇進のパイプラインを改善します—メンターが昇進する可能性が6倍高くなります(Sun Microsystems)

業界では、スキルギャップが拡大していることを認識しており、オンラインラーニングや無料の書籍などへの無料サブスクリプションを提供することでそれを埋めようとしましたが、これらのリソースは従業員によって十分に活用されていません。

  • 従業員は通常、何に重点を置くか、どのように学習するかを知らず、無料の学習サブスクリプションを整理することは、仕事に直接関連する資料を見つけることが困難な場合、膨大な時間の浪費のように感じます
  • 従業員は、自分のキャリア開発が会社にとって日々のワークフローを混乱させるほど重要ではないことを恐れています

メンターは従業員と1対1で関わります。優れたメンターは、ランダムな学習リソースを検索する時間を無駄にすることなく、弱点をすばやく簡単に識別し、知識のギャップを埋めることができる必要があります。

メンターシップを通常の従業員の職務に組み込むことにより、知覚される毎日のワークフローの「中断」を取り除き、従業員が互いに学び、関わり合う時間を公式に割り当てることができます。

チームの生産性を10倍に引き上げる

研究の圧倒的多数は、開発者間でパフォーマンスに桁違いの差があることを示唆しています。 Steve McConnell(著者、「Code Complete」)を引用するには:

「プログラマーには桁違いがある」という一般的な発見は、プロのプログラマーの他の多くの研究によって確認されています(Curtis 1981、Mills 1983、DeMarco and Lister 1985、Curtis et al.1986、Card 1987、Boehm and Papaccio) 1988年、Valett and McGarry 1989年、Boehm et al 2000)。

それは、最高のパフォーマンスを発揮する開発者が10倍のコードを記述したり、10倍の機能を開発したりすることを意味するものではありません。つまり、組織の10倍の価値を提供するということです。 (「10xへの移行」も参照)。

逆に、多くの開発者は組織の価値を提供するソフトウェアを作成できますが、膨大な技術的負債を抱えながらも作成できます。保守が困難または不可能な、またはバグが散らばっているコードを記述します。通常両方。

そのような開発者は短期的には価値を生み出しますが、長期的には組織に正味のマイナス価値をもたらします。

問題は、上級開発者を雇うのが難しいことです。

米国の開発者のジュニアとシニアの給与の平均差額は年間4万ドル(出典:Indeed.com)であり、一部の企業はより多くのジュニア開発者と少数のシニア開発者を雇用することでお金を節約しようとしています。

適切なガイダンスがなければ、ジュニア開発者は通常、製品の品質と生産性の低下における給与の差よりもはるかに費用がかかるため、この戦略は裏目に出ます。

お金を節約したい場合は、安価な開発者を雇わないでください。優れた開発者をトレーニングします。

上級開発者を見つけて採用するのは困難です。技術職の成長は長年にわたって市場の新規開発者の流入を常に上回っているため、上級開発者を雇う競争はcompetition烈であり、給与は最も資金のある企業を除くすべての予算を容易に超過する可能性があります。この記事の執筆時点で、トップ企業はトップレベルのシニア開発者に通常$ 140k-$ 250k +(ゴールデン手錠保持戦略を採用している企業では最大$ 40万)を費やしています。

とにかく、シニア開発者とは何ですか?おそらく、10,000時間のルールを聞いたことがあるでしょう。クラフトを習得するには、約10,000時間の慎重な練習が必要です。それは約6〜10年です。しかし、1〜5年の経験を持つ開発者は、「シニア開発者」の職に就くために頻繁に雇われています。明らかに、1万時間の習熟度は、今日の業界で「シニア開発者」を定義するために使用されているものではありません-十分な理由があります。

私は、todoアプリを構築することを信頼しない20年の経験を持つ開発者を見てきました。また、1年未満でミッションクリティカルな製品のアーキテクチャを信頼する開発者を見てきました。経験に代わるものはありませんが、1年目以降、経験はクラフトへの情熱と卓越した意欲よりもはるかに重要ではありません。

1〜3年後、卓越性と意図的な実践に専念する開発者と、J-O-Bのためだけに参加している開発者との違いに本当に気づき始めます。 「シニア」デベロッパーは、現時点でクラフトの達人である必要はありませんが、少なくとも道を進んでいる必要があります。

とはいえ、実際の経験に勝るものはありません。あなたは前に向かっていた場所にいる人から本当に恩恵を受けることができ、必要なスキルを深く習得するのに十分な慎重な練習時間がありました。トレーニングがどれほど優れていても、チームを支援するために少なくとも1人の専門家のメンターがいることは素晴らしいことです。

理想的なエキスパートメンター属性(これらのほとんどが必要です)

  • 共感
  • 忍耐
  • 優れたコミュニケーター&テクニカルライター
  • フルタイムでアプリを構築した6年以上の経験(ええ、この場合は経験が重要です。熟練を求めています。1万時間のルールをご覧ください。)
  • 複数のパラダイム(OOP、FPなど)におけるソフトウェア開発原則の深い理解
  • できれば異なる言語ファミリ(Cファミリ、Lispファミリ、MLファミリなど)の複数のプログラミング言語の経験
  • 20人以上の開発者と1,000万人以上のユーザーでアプリをスケーリングした経験
  • 特定の技術スタックで1〜2年の経験

大きな問題は、その説明に一致する従業員を見つけるのが非常に難しく、中小企業にとっては余裕がないことです。 (あなたについて説明したばかりの場合はご連絡ください)。

現在「Senior JavaScript Developer」というタイトルの求人リストのほとんどは、このレベルの専門知識を必要としません。必要な技術スタックと高品質のJavaScriptトレーニングで1年の1〜3年の経験があれば十分でしょう。優れた専門家のメンターとペアを組むと、チームの最高の上級開発者のレベル(またはそれに近いレベル)で貢献します。いくつかは目立ち、あなたの最高の期待を超えます。

10x開発者をどのように雇うのですか?

優れたチームを構築しようとしている技術リーダーと協力すればするほど、一部の開発者が他の開発者より10倍良くなる品質、および一部のチームを他の開発者より10倍良くする品質について考えるようになります。

普遍的に、10xチームは10x開発者を雇用しています。私はその規則の例外を見たことがない。ただし、10倍の開発者がいるすべてのチームが10倍のチームになるわけではありません。

違いは何ですか?

メンターシップ文化

最初のステップは、チームのメンターシップの文化を育成することです。そのための最善の方法の1つは、コードレポジトリブランチを保護して、コードレビューなしでメイントランクにマージできないようにすることです。

ほとんどの人はこれがバグを防ぐことだと考えていますが、開発者がそれを学習と知識共有のためのメカニズムとして見たときに最もうまく機能します。単純化できるコードを見つけたら、それを指摘します。アンチパターンが表示されたら、代替案を指摘してください。コードをマージする前に、少なくとも1人の他のチームメンバーがコードのすべての行を確認する必要があります。

これを行うと、バグが少なくなるという素晴らしい副作用があります。コードレビューに1時間費やすごとに、33時間のメンテナンスが節約されます。 (「TDDのスキップとコードレビューの途方もないコスト」も参照)

しかし、それはほんの一歩です。ほとんどの現役開発者(上級開発者も含む)には、ソフトウェア開発の本質である構成という基本的な基盤がありません。すべてのソフトウェア開発は、問題をより小さな部分に分解し、ソリューションをまとめてアプリケーションを構成する行為です。意図的に、目的を持って、または誤ってダクトテープとクレイジーグルーを使って、それを行うことができます。

最良の結果を得るには、機能とデータ構造をうまく構成し、どこに行くのかを理解し、すべての要素をどのように合わせるかについて、強固な基盤を持つチームの誰かが必要です。

悪いニュースがあります:

チームの誰も資格がない可能性はほぼ100%です。

どうやって知るの? 2010年からJavaScriptジョブの求職者に定期的に面接を行ってきたため、補足トレーニングなしで面接時に資格を得る候補者がほぼゼロだったためです。

具体的にはどういう意味ですか?候補者は、次の質問に正しく答え、原則をコードで示すことができる必要があります。

  • 「機能構成とは」
  • 「オブジェクト構成とは」

これらが一緒になって、関数型プログラミングと柔軟なオブジェクトの再利用の基礎を形成します。

JavaScriptでは、「JavaScriptの2つの柱」と呼ぶ2つの非常に重要な機能によってサポートされています。

  • プロトタイプ継承
  • 関数型プログラミング(具体的にはJavaScriptで、クロージャーを使用するファーストクラス関数がこれを可能にします)

新規採用者を指導するとき、最初の仕事は、彼らが関数型プログラミングと柔軟なOOPの基本を理解できるようにすることです。

「クラスの継承よりもオブジェクトの構成を優先します。」〜Gang of Four、「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」

これらのシンプルな柱は、次のすべての機能を備えたアプリを構築するための強固な基盤を提供します。

  • 少ないコード
  • 少ないバグ
  • コードの明瞭性の向上
  • メンテナンスコストの削減

メンターシップの文化は、組織全体に役立つアイデアを簡単に広めることも可能にします。次のような重要なビジネスパフォーマンスメトリックに影響を与える可能性のあるアイデア

  • TDD、および改善されたテストプロセスにより、大幅な時間と費用を節約
  • 継続的な配信(CI / CDツールとワークフローで自動化)。これにより、ベーパーウェアと予算が膨らむ見積もりの​​危険性が低減します。
  • ソフトウェアのメンテナンスコストを削減するコード編成の改善

メンターシップにいくら投資すべきですか?

メリットは非常に明確で影響力が大きいため、開発者組織にメンターシップを実装することについての質問は、それを行うかどうかではなく、いくら投資するかです。

私の一般的な経験則では、すべての開発者は経験豊富なメンターとペアにする必要があります。

このルールは、単にジュニアスタッフや新入社員だけでなく、あなたの最も上級のスタッフにも当てはまります。

開発者に適切なメンターシップを提供するために、開発者の年aboutに約30%を上乗せして支払う必要があります。そのコストは、主に開発者と経験豊富なメンター(メンターへの給与で支払われる)をペアリングするコストです。 30%の低コストで、生産性を1000%向上させることができます。その取引を引き継ぐためには、気が狂っているか知らない人でなければなりません。

メンターシップは、特定のスキルをトレーニングすることと、実際のプロジェクトの問題を組み合わせることで構成される必要があります。

ペアリングすると、2人で協力し、ペアのジュニアがほとんどの運転をしている問題を解決するために協力します。メンターは、ナビゲーターとしてハンズオフのアプローチを取る必要があります。開発者をフルタイムでペアリングしてメンターシップのメリットを提供する必要はありませんが、メンターとメンティーが1対1で連携できるように、少なくとも週に1時間は確保する必要があります。ジュニア開発者には、さらに多くのペアリング時間が必要になります。

「誰がメンターをメンターしますか?」という質問をするまで、これはかなり良いように聞こえます。

「メンターを指導するのは誰ですか?」

メンター文化を持つチームでの私の経験では、チームの最も若い開発者でさえ、チームの最も熟練した人々のスキルレベルにすぐに到達しますが、到達すると、改善はレンガの壁にぶつかり、追加の進捗は非常に遅くなります。

その人為的な天井を取り除くためには、より高いレベルのメンター、つまり必ずしもチームの一員ではない人々にアクセスする必要があります。

メンターシッププラットフォームを探しに出かけ、資格のあるメンターを見つけて正確にそれを実現しましたが、見つけることができなかったので、DevAnywhere.ioを共同設立しました。高度なJavaScriptカリキュラムを開発し、開発者を1対1で指導し始めました。このプログラムは素晴らしい結果をもたらしました。

チームのリーダーや新入社員のメンターが必要な場合は、お手伝いします。

ライブ1:1メンターシップでスキルをレベルアップ

DevAnywhereは、高度なJavaScriptスキルをレベルアップする最速の方法です。

  • ライブレッスン
  • 柔軟な時間
  • 1:1のメンターシップ
  • 実際の本番アプリを構築する
https://devanywhere.io/

エリックエリオットは「プログラミングJavaScriptアプリケーション」(O’Reilly)の著者であり、DevAnywhere.ioの共同設立者です。彼は、Adobe Systems、Zumba Fitness、The Wall Street Journal、ESPN、BBC、およびUsher、Frank Ocean、Metallicaなどのトップレコーディングアーティストのソフトウェアエクスペリエンスに貢献しています。

彼は、世界で最も美しい女性と、どこでも好きな場所で仕事をしています。

  1. サンマイクロシステムズによると、参加率は、非参加従業員に比べてメンティーで72%、メンターで69%高くなっています。
  2. Spherion Emerging Workforce Studyによると、定期的なメンタリングを受けていない従業員の35%が12ヶ月以内に別の仕事を探しています
  3. エンゲージメントの高い企業は、12か月間で営業利益が19.2%増加しましたが、営業利益が見られなかった企業は同期間で32.7%減少しました。 「成功への取り組み」