「10倍開発者」とは、テクノロジー業界におけるビッグフットのような存在だ。誰もが見たことがあると主張するが、誰もその存在を証明できない。
実際に存在するのは、10倍の価値を生み出す開発者である。ただし、10倍のコードを書くことによってではない。10分の1のコード——正しい10分の1——を書くことによってだ。
真の10倍スキル:何を構築しないか知ること
同じ問題に取り組む2人の開発者を見てきた。
開発者A は、CQRSを備えたカスタムイベントソーシングシステム、分散トランザクションのためのサーガパターン、そしてカスタムクエリ言語を構築した。6週間かかり、リリース時には3つの重大なバグがあった。
開発者B は、ステータスカラムとcronジョブを備えたPostgreSQLテーブルを使用した。3日で完了し、2年間完璧に動作した。
開発者Bは「印象に残らなかった」。彼のコードは賢くなかった。彼のアーキテクチャは面白くなかった。しかし、彼のソリューションは3日でリリースされ、決して壊れず、インフラコストは0ドルだった。
開発者Bこそが10倍開発者だったのだ。
実際に生産性を高めるもの
1. コードを書くよりも削除する。
すべてのコード行は負債である。理解、テスト、保守、デバッグが必要になる。200行を削除して40行に置き換える開発者は、400行を追加する開発者よりもコードベースを改善している。
2. 「はい」よりも「いいえ」を多く言う。
「GraphQLを追加すべきか?」いいえ、5人のクライアントはRESTで十分だ。 「キャッシュ層を追加すべきか?」いいえ、データベースが負荷を処理できている。 「マイクロサービスに移行すべきか?」いいえ、モノリスは30秒でデプロイできる。
すべての「いいえ」は、ユーザー価値を生まない数週間の作業を節約する。
3. コードを書く前にコミュニケーションを取る。
私が一緒に働いた中で最も生産的な開発者は、1日3時間を会議に費やしていた。無意味な会議ではなく、アーキテクチャの議論、プロダクトの調整、チーム間の連携だ。彼のコード出力は「低かった」。しかし、彼のチームは他のどのチームよりも2倍速くリリースしていた。
彼は曖昧さを取り除いていたのだ。事前の明確化の1時間ごとに、10時間のやり直し作業が節約される。
4. 自分自身の仕事を自動化する。
私は500以上のテストを8分で実行するCIパイプラインを書いた。そのパイプラインは、チーム全体で何千時間もの手動テストを節約してきた。その1つの自動化のROIは、その四半期に私が構築した他のすべてを凌駕する。
10倍の生産性とは速度ではなく、レバレッジのことだ。自分自身だけでなく、全員のアウトプットを増幅するものを構築せよ。
生産性に関する不快な真実
エンジニアリングの時間の大半はコードを書くことには費やされない。費やされるのは:
- 要件の理解(30%)
- 既存コードの読み取り(25%)
- デバッグ(20%)
- CI/デプロイの待機(10%)
- 実際のコーディング(15%)
10倍の生産性を望むなら、タイピングを速くすることを学ぶな。以下を学べ:
- 要件時に適切な質問をする
- コードベースをより速くナビゲートする
- ランダムではなく体系的にデバッグする
- CI/CDパイプラインを自動化する
キャリアにとっての重要性
市場は努力ではなくアウトプットに対して対価を支払う。今週80時間働いたかどうかは誰も気にしない。彼らが気にするのは、機能がリリースされたか、それが動作するか、そして何も壊さなかったかだ。
正しいものを20時間でリリースする開発者は、間違ったものを60時間でリリースする開発者よりも価値がある。
正しい決断をすることに集中せよ。コードは後からついてくる。
