ほとんどすべてのソフトウェア開発者やプログラマーは、他の誰かが書いたコードに遭遇し、「誰でもコーディングできる」決まり文句を証明したことがあります。 しかし、神話に登場するような「10 倍の開発者」に出会ったことはあるでしょうか。 10 倍の開発者であることは、コードを書くことに優れていることよりも、どのようなコードを書けばよいかを正確に知っていることに関係があるのです。 たとえば、私は、寝ている間や学校に行っている間に、テキストベースの MUD ゲームを自動再生するためのコードを書きはじめました。 私は13歳でスクリプトキディだったのですが、それすら知りませんでした。 アイデアを思いつき、コードを書き、テストする。 私たちはアイデアを思いつかず、それを理解するために何時間も会議に費やし、そしてほとんどの時間を他人のコードの修正、または少なくともそれに貢献することに費やします。
10倍速の開発者になるには、このような環境で秀でることを学ぶか、あるいは自分で会社を立ち上げて主導権を握ることが必要です。 私は、すべての開発者がより生産的になり、よりよいチームメンバーになるために注力すべき3つのことがあると信じています。
3つのこと
10倍の開発者になるためには、どんなプログラミング言語やツールセットでも、数年にわたる作業経験が必要です。 これは当然のことです。
重要なのは、どのようにコードを書くかが10倍開発者、10倍エンジニア、10倍プログラマー、あるいは何と呼ぼうと、あなたを10倍開発者にするのではない、ということを理解することです。 「Who, what, where, why, when “です。 これらはすべてソフトウェア開発に当てはまりますが、ここでは10倍の開発者を定義する3つの特徴に焦点を当てたいと思います。
- 何
- なぜ
- いつ
何を
企業では、開発者はあまり情熱を持たず理解していないプロジェクトで働く傾向にあります。 ほとんどの開発者にとって、非常に優れた指示を受け、期待値が明確に定義されている限り、これは大きな問題ではありません。
問題は、開発者が通常適切な指示を与えられていないことです。 その代わりに、私たちは “アジャイル開発 “と呼ばれるものを使っています。 私たちは、いくつかの単語が書かれたポストイット・ノートを受け取り、何をしなければならないかを正確に知ることを期待されています。 開発者は、私たちが何に取り組んでいるのか、どんな問題を解決しようとしているのか、そして、その結果がどのように見える必要があるのかを正確に知る必要があるのです。 前もって知っていればいるほど、より速く進めることができます。 最も重要なことは、作業の意図と、作業を成功させるために何が必要かを知ることが、成功に不可欠であるということです。
悪い開発者は、何も質問せずに、プロジェクトで間違った方向に何時間もかけて進んでしまいます。 彼らは何も達成できず、同僚全員の時間を浪費するので、私が「-10x開発者」と呼んでいるものです。 ほぼ全員がこのような開発者に遭遇しており、彼らと一緒に仕事をするのはイライラすることでしょう。 そして、彼らの習慣を引き継がないように注意しなければなりません!
開発者の中には、あまり細かいことをしなくてもうまくいく人がいます。 彼らは大量の創造力を使い、適切な質問をする。 このようなユニコーンは10倍速の開発者である可能性が高い。
要するに、10 倍開発者は、何を達成する必要があり、何を質問すべきかを素早く判断するのが本当にうまいということです。 解決しようとしている問題を理解しなければ、それを解決するのは本当に難しいのです。
なぜ私は、睡眠中や学校にいる間に、自分の MUD ゲームをプレイするためにターミナル スクリプトをハッキングしていたのでしょうか。 もちろん、ゲーム内の最高レベルを達成したかったからです。 その理由ははっきりしていて、それを実現するためにできることはすべてやっていました。
同じアプローチは、どんなソフトウェア開発プロジェクトにも当てはまります。 自分がいる業界の業種と、解決しようとしている問題を理解している開発者は、はるかに生産性が高くなります。 また、理由を知り、業界を理解することは、不必要な作業を防ぎ、製品や機能をユーザーにとってより価値のあるものにすることに集中する時間を確保するのに役立ちます。 本当に10倍速の開発者になるためには、問題に対する情熱を持ち、その問題の内側と外側を理解する必要があります。
Knowing When to Do What
ソフトウェア開発プロジェクトにおいて、タイミングは重要です。 バックログにある項目をどのような順番で作業するかは、一見簡単そうに見えて、実はとても重要な作業なのです。 会社が新しいアカウントを獲得するのに役立つものに取り組むか、古い技術的負債を一掃しに行くか。
開発チームとして、私たちは常に何にいつ取り組むかを調整しなければなりません。
ソフトウェア開発のすべての作業項目は、次の 3 つのカテゴリに分類されます。 ソフトウェアのバグを修正しなければならない。 技術的負債や新しいクールな製品機能に取り組みたい。 常にバランスをとる必要があります。
これらの 3 つのバケットすべてから作業項目を同時に実行する必要があります。 すべての時間を技術的負債に費やすことはできませんが、おそらく時間のわずかな割合をそれに費やすべきです。
開発者は、コード内に複雑なアーキテクチャを構築するタイミングも知っておく必要があります。 私は、そうしなければ生きていけないようなアーキテクチャを追加せざるを得なくなるまで、コードをできるだけシンプルに保つことを好みます。 開発者は、新しいツールやテクノロジーで遊びたがる傾向がありますが、これらのソリューションは、プロジェクトをより速く完了させるのに役立つのではなく、むしろ遅くするだけかもしれません。 覚えておいてほしいのは、ユーザーはソフトウェアがどのように動作するか、またはアーキテクチャがどれほど派手であるかは気にしないということです。 ただ、動いてくれればいいのです。
Mastering the What, Why & When to Become a 10x Developer
さて、10xデベロッパーになるための重要なスキルである、何を、なぜ、いつ、を習得する方法について話しましょう。 問題の内側と外側を理解する必要があります。 それは、自分が働く会社と会社としての使命に熱中することから始まります。
誰かがそうしろと言ったから、ただボタンを動かして何かをするのではありません。 より高いレベルで理由を理解しようと努力することです。
Be a Good Developer & Excellent Problem Solver, Not the Best Programmer
I would describe myself as a hacker-developer. 私は、ほとんどどんな問題でも素早く解決するために、醜いコードを投げつけることができるタイプです。 私のコードが美しいことはめったにありませんが、動作はします。
10 倍の開発者になるために、ユニット テストで完璧に設計されたコードを書く必要はありません。
10倍速の開発者であるためには、いつ、どのようなことをすればよいかを知る必要があります。
The When Is in Your Gut, or It Isn’t
Hacking something togetherに対して複雑なアーキテクチャを構築するタイミングを知ることは、経験やスパイダー感覚の開発によってもたらされるものです。 4598>
私がこれまで一緒に仕事をしてきた最も賢い開発者の中には、機能性やスケジュールよりもパターンやアーキテクチャを優先させることが最も苦手な人がいました。 彼らは過剰なエンジニアリングを行い、何度も書き直し、「出荷可能なコード」ではなく「完璧なコード」を追求したがりました。 悲しいことに、私たちが作業項目として受け取るメモや要求の多くは、あまり詳細ではありません。 10倍速の開発者は、これらを読み、ビジネスについて知っている「なぜ」を適用し、関連する質問をする方法を知っています。
Conclusion
私は 15 年以上にわたってコードを書いてきました。 私は 10 倍の開発者であると言えるでしょうし、少なくともそうなることができます。 自分が何が得意なのかが分かっているのです。 私が得意なことをやっているとき、私は真剣な量の仕事を素早く終わらせることができます。
あなたが新製品のプロトタイプを作りたいなら、私はあなたの男です。 Angular、React、またはその他のフロントエンド開発で助けが必要な場合、私は間違いなくあなたの男ではありません。 これらのタスクでは、私は -10 倍の開発者になるでしょう。
10 倍の開発者は神話ではありません。 実際に存在するのです。 彼らはおそらく開発マネージャ、アーキテクト、リード開発者、または会社の創設者でしょう。 もしそうでないなら、おそらくそうなるはずです。
また、誰も毎日、一日中 10 倍の開発者になるつもりはありません。 毎日そのペースで仕事をするエネルギーも集中力もないのです。
ソフトウェア開発の「何を、なぜ、いつ」を理解すれば、より生産的になり、よりよいチーム メンバーになることができます。
ここで、どのように改善すればよいか調べている間に、当社の動的コード分析ツールである Stackify Prefix をチェックしてみてください。 これは無料で、よりよいコードを書くのに役立ちます。