paint-brush
10倍の開発者になる方法: 必須ガイド@zawistowski
15,879 測定値
15,879 測定値

10倍の開発者になる方法: 必須ガイド

Wojciech Zawistowski14m2023/03/22
Read on Terminal Reader

長すぎる; 読むには

働き方を改善することで、チームのパフォーマンスに追加するだけです。全員の働き方を改善することで、チームのパフォーマンスを倍増させます。マルチプライヤーになることで、あなたは注目され、宣伝されます。実証済みの 16 の方法を紹介します。
featured image - 10倍の開発者になる方法: 必須ガイド
Wojciech Zawistowski HackerNoon profile picture
  • ソフトウェア開発はチームスポーツです。個人のパフォーマンスは、チームや会社全体のパフォーマンスほど重要ではありません。


  • 働き方を改善することで、チームのパフォーマンスに追加するだけです。全員の働き方を改善することで、チームのパフォーマンスを倍増させます。


  • チーム全体のパフォーマンスを倍増させることで、非常に効率的な個人の貢献者になるよりも、注目されて昇進するためのはるかに速いレーンに乗ることができます.


  • 他の人のパフォーマンスを向上させるには、個人のパフォーマンスを向上させるのとは異なる考え方とアプローチが必要です。この記事では、チーム (または会社全体) のパフォーマンスを向上させる 16 の実証済みの方法を紹介します。

10x Dev の一般的な誤解

「10x 開発者」という用語をググると、個々のパフォーマンスに関連する多くの結果が得られます。


私が得た最高の結果のいくつかからの引用をチェックしてください。


  • 「10 倍の開発者とは、チームの平均的な開発者よりも 10 倍効率的な開発者です。」


  • 「問題を解決したいのはこの人たちです。彼らは 1/10 の時間で、1/10 のコード行数で解決してくれます。」


  • 「私は、チームの 7 ~ 8 人の開発者と作業の 60% を行うチームにいることに慣れています。」


このような発言は私をうんざりさせます。


これ。は。いいえ。どうやって。私たち。建てる。モダン。ソフトウェア。


ソフトウェア開発はチーム戦です。またはチームゲームのチームでさえ。また、ゲームは生のアウトプットではなく、ビジネスの成果によって採点されます。個人として効率的ではなく、チームや組織として効果的であることによって。


エンジニアリング担当副社長として、私は競争力のあるコーダーを探しているわけではありません。何時に何行のコードをクランキングするかは気にしません。そして、チームの作業の 60% を 1 人の開発者が行っていることは、私が自慢できることではありませんが、修正することを優先事項と考えている機能障害です。


それで、私が探しているのは誰ですか?次の計算を考えてみましょう。

チームで働くための簡単な計算

自分のアウトプットだけを改善すると、チームのアウトプットに追加されます


しかし、すべてのチーム メンバーのアウトプットを改善すると、チームのアウトプットが何倍にもなります。


そして、掛け算は足し算をすぐに打ち負かします。


あなたが本当に神話上の 10 倍の開発者であったとしても、チームの規模に関係なく、チームの出力を 10 "単位" しか増やすことはできません。しかし、チーム全体のアウトプットをわずか 2 倍にすると、わずか 10 人のチームで 10「ユニット」増えることになります。そして、100人のチームの場合、100「単位」で。


そして、チームの他のすべての開発者よりも 10 倍効率的であるという極端な状況について話しています。実際には、10 人よりもはるかに小さいチームでは、掛け算が足し算に勝ります。


さらに、生の出力についてのみ話しているのです。どれだけ強く押すかであり、どの方向に押すかではありません。そして、チーム全体が推進する方向性が重要です。

チームのパフォーマンスと個人のパフォーマンスがつながる

モーターボートに 100 馬力または 1000 馬力のエンジンが搭載されていても、このエンジンがボートを前方ではなく横または後方に押すのであれば問題ありません。間違った方向に進むと、自分のアウトプットが無駄になるだけでなく、チーム全体の仕事が台無しになる可能性があります。


-10x開発者になることができます。


そして、この関係は両面です。


あなたが正しい方向に推し進めていたとしても、チームの他のメンバーが反対の方向に推し進めていれば、ゴッドモードの 10 倍の生産性が打ち消される可能性があります。


彼らがあなたを助けることができるように、あなたは彼らを助ける必要があります。チームの弱点をキャンセルして、パフォーマンスがキャンセルされないようにします。


直感に反するように聞こえるかもしれませんが、チーム全体の効率を高めることに集中することは、自分自身のアウトプットだけに集中するよりも、個人のパフォーマンスを向上させるためのより良い方法であることがよくあります。


そのため、私や他のマネージャーは、チームにプラスの影響を与える能力ほど個人の効率性を求めていません。そして、より広い影響を与えるほど、つまりより多くの人々が正しい方向に速く進むのを助けるほど、会社により多くの価値がもたらされます。


しかし、私の言葉を鵜呑みにしないでください。

ほとんどのソフトウェア企業で昇進する理由は何ですか?

いくつかの有名な企業でのエンジニアリングのキャリアはしごを見てみましょう。

サークルCI

CircleCI では、アソシエイト エンジニア、エンジニア、シニア エンジニア、スタッフ エンジニア、シニア スタッフ エンジニア、プリンシパル エンジニアの 6 段階のはしご (E1 ~ E6) を使用します。


レベル E1 ~ E3 は、作業の実行に焦点を当てています。タスク内の E1、エピック/プロジェクト内の E2、チーム内の E3。


レベル E4 ~ E6 は、スキルを活用して規模を拡大し、レバレッジを生み出します。彼らは他の人を促進し、導き、指導します。チーム内およびチームのビジネス関係者との E4、複数のチームにわたる E5、組織全体にわたる E6。


ソース: https://docs.google.com/spreadsheets/d/131XZCEb8LoXqy79WWrhCX4sBnGhCM1nAIz4feFZJsEo/edit#gid=0

カルタ

Carta は 7 レベルのはしご (L2-L8) を使用します。彼ら自身の言葉で:


平準化のために最も重要なことを明確にするのは簡単です。それは、あなたが会社に与える影響です。従業員が進歩するにつれて従業員が持つと予想される (大まかな) 影響を説明することで、システム全体を要約できます: タスク (L2)、機能 (L3)、問題 (L4)、チーム (L5)、組織(L6)、会社について (L7)、業界について (L8)。


ソース: https://medium.com/building-carta/engineering-levels-at-carta-d33db2a55a20

Spotify

Spotify は、シニア、スタッフ、プリンシパル デベロッパーなどの外部の役職についてはあまり気にしません。彼らは非常に柔軟で、従業員が自分にとって最も意味のあるものを選択できるようにします。しかし内部では、「影響範囲」と呼ばれるものによって編成された 4 レベルのはしごを使用しています。


そして、これらの 4 つのレベル (「ステップ」) を次のように説明します。


Spotify でのキャリアパスの 4 つのステップを特定しました。各ステップは、責任の増加だけでなく、テクノロジー内での影響の増加によってもマークされます: 個人のステップ、分隊/支部のステップ、部族/ギルドのステップ、技術/会社のステップ。


ソース: https://engineering.atspotify.com/2016/02/spotify-technology-career-steps/

ドロップボックス

Dropbox では、ソフトウェア エンジニア 1 ~ 4、スタッフ ソフトウェア エンジニア、プリンシパル ソフトウェア エンジニア、シニア プリンシパル ソフトウェア エンジニアの 7 レベルのはしご (IC1 ~ IC7) を使用しています。


これは、各レベルの「影響範囲」を説明する方法です。


  • IC1: 私は、マネージャーからの具体的な指導を受けて、チームの範囲内で仕事をしています。


  • IC2: 私は、マネージャーからの高度な指導を受けながら、主にチームの範囲内で仕事をしています。


  • IC3: 私は、主に直属のチームや機能横断的なパートナーと協力しながら、プロジェクトのチーム間のコラボレーションを推進しています。


  • IC4: 私はチームの強力なリーダーであり、私の影響力はチームの外にも広がり始めています。


  • IC5: 私は、ビジネスに影響を与える目標を達成するために、他の Dropbox チームのロードマップにますます影響を与えています。


  • IC6: 私は通常、グループの技術戦略に影響を与えます。


  • IC7: 私は通常、ビジネスに影響を与える目標を達成するために、部門や会社全体の戦略に影響を与えます。


ソース: https://dropbox.github.io/dbx-career-framework/


これらの 4 つの企業は、自社のはしごを最も簡潔に説明しているため、ほぼそのまま引用することができるため、これら 4 社を選択しました。しかし、同様のパターンが業界全体で広く繰り返されています。


では、これらすべての企業で昇進した理由は何ですか?彼らは何を最も大切にしていますか?


繰り返しますが、あなたが行う影響の領域です。


組織の大きな部分 (そしてより多くの人々) にプラスの影響を与えるほど、会社にとってより価値のあるものになり、より多くの認知度を得ることができます。


そのようなレベルでの運用は、恐ろしいことに聞こえるかもしれません。しかし、チーム全体のパフォーマンスを 2 倍または 3 倍向上させることは、思ったほど難しいことではありません。そして、個人のパフォーマンスを 10 倍にするよりも簡単です。


わかりました、どうすればそれができますか?

チーム全体または会社のパフォーマンスに影響を与える方法

他の人のパフォーマンスにプラスの影響を与える方法はたくさんあるため、すべてを網羅することは困難です。しかし、それらのいくつかを調べて、良い要点をつかみ、自分でさらにアイデアを思いつくことができる考え方を構築できるようにしましょう.

1. 知識を教え、指導し、共有する

小さく始めましょう。チームメイトと話し合ってください。コード レビュー、ペア プログラミング、チーム ミーティングを通じて知識を広めます。あなたの仕事と行動を通して、模範を示してください。


コーディングだけでなく、プロセス、コミュニケーション、時間管理など、チームのパフォーマンスに影響を与える可能性のあるあらゆることについて知識を広げてください。


茶色のバッグ、ワークショップ、ブログを通じて、より多くの人々にあなたの影響力を広げてください。機会を利用して、他のチームと協力してください。


最後に、専門家として広く認められたら、全社的な学習プログラムを管理したり、実践コミュニティを主導したりする責任を負います。

2. 新しい知識を社内に持ち込む

一度限りの感覚にならないでください。これまでの経験だけに頼らないでください。


継続的に学びます。社外の同僚と話す。読む。会議に行きます。業界の最先端の最新情報を入手してください。他の企業が何をしているのかを調査します。新しいテクニックとライブラリを試してください。


チームが次のレベルに到達するのに役立つ革新的な知識の源になりましょう。

3. プロジェクトの計画と調整

どのようなプロセスを使用する場合でも、ソフトウェア開発は、最終的には大小のプロジェクトの流れです。それらがどれだけうまく分析され、分解され、計画され、実行されるかは、それらを実行するチームのパフォーマンスに多大な影響を与えます。


プロジェクトの準備と主導をボランティアで行うことは、複数の人のパフォーマンスに影響を与える優れた方法です。


プロセスの一部 (要件分析、実装計画、またはタスクの内訳) を担当することから始めます。


プロセスをエンドツーエンドで所有し、プロジェクトの実行全体を監督することで、それを調整します。


そして最大の効果を得るために、大きなチーム間のプロジェクトを調整する責任を負います。

4. コードベースまたは製品の一部の所有権を取得する

複雑なソフトウェア システムには、モジュール、ライブラリ、サブシステム、製品、サービス、API、ツール、ドキュメント、パイプラインなど、長期にわたって維持する必要がある多くの「可動部分」があります。明確な所有権がなければ、それらを適切に維持することは容易ではありません。


また、それらがどれだけ適切に維持されているかは、それらを使用するすべての人のパフォーマンスに大きな影響を与えます。これは、一部の基盤モジュールでは、会社全体を意味する場合さえあります。


会社のコードベース、製品、またはサブシステムの一部の所有権を取得し、それを良好な状態に保つことで、見逃すことのできない影響を与えることができます。


規模が小さい場合は、小さなコード モジュールや Web サービスなど、チーム内の何かを維持できます。


より大きな規模では、中央設計システムや顧客向け API など、製品と会社全体に不可欠なものを維持できます。

5.ツーリングを改善する

効率的なツールは、チームのスピードに大きな違いをもたらします。私たちの仕事には、最適化、自動化、またはより巧妙な方法で使用できることがたくさんあります。


堅実な CI/CD パイプライン。コードのフォーマットとリンティング。高速テスト スイート。自動化されたコードとテスト データの生成。より効率的なコード ナビゲーション。 IDE の能力を最大限に活用します。ローカル環境、テスト環境、およびステージング環境の改善。適切に構成されたプロジェクト管理システム。


デバッグ、監視、およびロギングのための堅牢なツール。コンポーネントと共有ライブラリの見つけやすさ。ワークフローの自動化と接続 (Github、Slack、Trello など)。リストは延々と続く可能性があります。


ツールを改善したり、反復的なタスクを自動化したり、既存のツールをより適切に使用する方法に関する知識を広めたりすることで、チームや会社全体のパフォーマンスに大きな影響を与えることができます.

6. コードベースとアーキテクチャを改善する

あなたの後にプロジェクトを訪問する同僚の立場になってください。理解しやすいコードとアーキテクチャは、チーム全体のパフォーマンスを左右します。それらをよりクリーンでシンプルにし、ナビゲートとデバッグを容易にし、エラーを起こしにくくします。


1 つのコンポーネントまたはモジュールに対する比較的小さな改善であっても、チームのパフォーマンスを大幅に向上させることができます。また、製品全体のコード規則など、よりグローバルな改善は、会社全体にさえ影響を与える可能性があります。

7. チームが正しい方向に進むのを助ける

人々を結集して 1 つの正しい方向に向かって突き進むことは、チーム全体のパフォーマンスを倍増させる最も強力な方法の 1 つです。そして、あなたが思っている以上に影響を与えることができます。


まず、正しい方向性を自分で理解してください。会社の目標、ビジネス、および顧客を理解することに力を入れてください。これにより、どの問題を解決する必要があるかを理解し、これらの問題に対するより良い解決策を考え出すことができます。


次に、チームが正しい方向に進むのを助けます。学んだことを共有し、文書化します。チームが関連する指標を追跡し、フィードバックを収集し、より反復的で機敏な方法で作業できるようにします。プロダクト マネージャーにとって信頼できるコンサルタントになりましょう。


3 つ目は、他のチームや利害関係者との調整を支援し、会社全体が 1 つの方向に向かうようにすることです。

8.非開発者のサポート

ソフトウェアは、ソフトウェア開発者だけが構築するものではありません。これは、開発者、デザイナー、テスター、プロダクト マネージャー、アナリスト、データ サイエンティスト、ユーザー研究者、およびさまざまなビジネス関係者 (カスタマー サポート、マーケティング、販売、財務) による協調的な取り組みです。


それらをサポートします。緊密に連携します。彼らの生活を楽にし、彼らが迅速に進むのを助け、部門横断的なグループ全体がスムーズに連携できるようにあなたの努力を調整することに力を入れてください。


これにより、エンジニアリング チームだけでなく、さらに広い範囲で組織に影響を与えることができます。

9. 方法論とプロセスを改善する

チームと組織の働き方は、パフォーマンスに根本的な影響を与えます。また、マネージャーやスクラム マスターだけに限定されているわけではありません。開発者として、あなたも会社のプロセスに多くの影響を与えることができます。


まず、自分自身を教育してください。経験主義、反復開発、製品発見、およびアジャイルの原則を理解します。 CI/CD や機能フラグベースの開発など、最新の技術的アプローチについて学びます。現代の機能横断型チームがどのように機能するかを学びます。


第二に、批判的な目で観察し、積極的に改善の機会を探し、率先してプロセスを形成します。チームの内外で積極的に活動してください。プロセス関連のディスカッションに参加します。新しいアイデアを実装するチャンピオン。


多くの人やチームのパフォーマンスを倍増させることができます。

10. 技術的イニシアチブを主導する

多くの技術的改善には、チーム全体の長期にわたる協調的な取り組みが必要です。古いフレームワークを新しいフレームワークに順次置き換え、新しいコーディング規則のセットに移行し、コードベースの重要な部分を徐々にリファクタリングします。


それらが一貫して管理され、推進されていない場合、そのようなイニシアチブは通常、すぐに失敗します。そして、その結果はせいぜい平凡です。


そのようなイニシアチブを主導するボランティア。それらを適切に計画して管理し、他の人が貢献しやすくし、それらの取り組みを調整して完了させることができれば、チームと組織の将来のパフォーマンスに大きな影響を与えることができます.

11. コミュニケーションと透明性の向上

明確で透明性のあるコミュニケーションは、効果的なチームワークに不可欠です。それは、人々がどれだけうまく調整し、お互いをどれだけ信頼しているか、どれだけ適切な決定を下しているか、そして自分の目的をどれだけよく理解しているかを決定します。


そしてこれは、チーム内、チーム間、異なる役割と部門間、従業員と管理者の間など、すべてのレベルに当てはまります。コミュニケーションの質は、組織全体のパフォーマンスを妨げたり、解放したりする可能性があります。


そして、それを改善するためにできることはたくさんあります。


ステータスを他のチームと共有します。チームと会社のドキュメント、ロードマップ、Wiki を良好な状態に維持します。他のチームから積極的に情報を引き出して、チームが最新情報を入手できるようにします。


チームの目標を明確にし、進捗状況を更新するよう経営陣に依頼してください。全社的なコミュニケーション標準とチャネル (Slack など) の改善を提案します。必要に応じて、チーム間の調整会議を開始します。

12.文化の模範と促進

単一の正しい文化はありません。異なる企業は、同様のレベルの成功を収めても、異なる行動をとります。しかし、同じ会社のさまざまな人、チーム、部門が文化的に衝突すると、生産性が低下します。


あなたの会社の文化を理解してください。それを実証し、促進します。自分の行動とコミュニケーションのパターンを意識してください。


それはあなたが思っている以上にあなたの会社の業績に影響を与えます。

13. 他人をやる気にさせる

より高いパフォーマンスを達成することは、単にモチベーションの問題である場合があります。より強くプッシュする意欲。成功への渇望が高まる。正しい姿勢を持つこと。


チームの士気に影響を与えるのにマネージャーである必要はありません。例によってリードします。良いバイブスを広げましょう。熱意、楽観主義、そして根性を示してください。仕事を楽しくする。危機に直面しても落ち着いて落ち着いてください。チームを結集して、毎日少しずつプッシュしてください。


このような行動はバイラルであり、多くの場合、人々をトップから「力を与える」試みよりもうまく機能します。そして、それらはチームの外に簡単に広がるため、幅広い影響を与えることができます.

14.採用とオンボーディングの支援

組織のパフォーマンスを高めるもう 1 つの方法は、採用によるものです。


可能であれば、採用プロセスに参加してください。インタビューに参加してください。採用課題の準備を支援します。履歴書を確認します。


また、採用プロセス自体に参加できなくても、新しい才能を採用するためにできることはたくさんあります。同僚に紹介してください。ブログ、ディスカッション フォーラム、会議での講演、ネットワークを通じて、会社を宣伝します。 Glassdoor に肯定的なレビューを残してください。


新入社員のオンボーディングとメンタリングに責任を持ちます。

15. 複雑な問題を解決する (そして知識を広める)

あなたの会社に競争上の優位性を与えるような、他の誰も解決できない問題を解決できれば、あなたは莫大な価値を生み出すことができます。


これは、10 倍の天才の 1 人の仕事のように聞こえるかもしれませんが、それはチームの問題です。優れたソリューションに関する知識を広めたり、他の人が簡単に再利用できるように設計したりしないと、ボトルネックになり、乗数ではなく単一障害点になる可能性があります。


会社をリスクにさらすだけで、価値をもたらすことはできません。


しかし、誰もがあなたのソリューションを理解し、その上に構築できるような方法で複雑な問題を解決できれば、ゲームチェンジャーになることができます.

16. 技術的な指示とアドバイスを提供する

多くの場合、会社は、長期にわたる大きな影響を伴う決定に対処する必要があります。テクノロジー スタックの選択。クラウド ベンダーの選択。ビルドするか購入するかの決定。


さらに頻繁に、小さな質問が飛び出します: プロジェクトのおおよその規模はどのくらいですか?技術的に実現可能ですか?この問題の可能な解決策は何ですか?


チームとビジネス全体の頼りになるアドバイザーになりましょう。業界の状況を深く学びます。最新の動向とトレンドを常に把握してください。研究が得意になる。それはあなたの会社に多くの価値をもたらすでしょう。

「しかし、開発者として本当にこれをすべて行うことができますか?」

本当にサブシステムを所有したり、プロジェクトを主導したり、構築するか購入するかを決定したりできますか?アーキテクト、マネージャー、技術リーダーの責任ではないでしょうか?


はい、できます!うまく運営されている会社であれば、マネージャーや技術リーダーは喜んであなたにできる限りのことを任せてくれます。これは実際に彼らの仕事です。マネージャーの最も重要な責任である、成長とチームのパフォーマンス向上に役立ちます。


影響力の大きいものには、実際にはより多くの経験が必要になる場合があります。コーディング ブートキャンプを卒業したばかりの新人に、社内のすべてのチームが使用するミッション クリティカルなサブシステムを所有させることはできません。しかし、私たちが議論したすべての影響は、徐々に進行しています。


チーム内の小規模なイニシアチブから始めて、影響の範囲を順次拡大します。リードまたはマネージャーと協力して、より多くの成長の機会を見つけてください。自分自身、チーム内、そして会社全体で、そのような機会に常に目を光らせてください。注目を集め、評判を築きましょう。


これにより、ますます大きなスプラッシュを作成するための迅速な軌道に乗ることができます. 10倍だけでなく、100倍の開発者になること。そして、これがあなたの野心であれば、最終的には自分自身が技術リーダーになることです。

結論

はい、堅実な開発者である必要があります。自分でくだらない仕事をしながら、他の人の乗数になるのは難しい.しかし、あなたが本当に 10 倍、または 5 倍、またはただの 1 倍である場合は、気にしないでください。個人の効率性から、チームと会社全体の有効性へと考え方を変えてください。


そして、あなたがそうするとき、空(そしてあなたの会社の規模)だけが限界です. 10x devだけでなく、100x以上になることもできます。