この記事は、経験豊かな上級プログラマーが自身のプログラマーとしての経験を活かして、開発効率の高いプログラマーが何をすべきかを解説する、プログラミング開発に関する洞察です。
私たちの多くは、特定の目的を念頭に置いてプログラミングを始めます。たとえば、私がプログラミングを始めたときは、睡眠中や学校にいる間、MUD ゲームのテキスト版を自動的にプレイできるようにするためでした。私は 13 歳の子供で脚本を書いていましたが、プログラミングが何なのかさえ知りませんでした。アイデアを思いつき、コードを書いてテストすることも、すべて自分で行うかもしれません。
他の人のためにソフトウェアを開発するとき、私たちは自分の欲望を追求するのと同じ種類の動機や興奮が欠けていることが多いため、困難になります。私たちは自分自身のアイデアを持つ代わりに、それらのアイデアを理解するために会議に何時間も費やし、その後、他の人のコードを修正したり、自分のコードを提出したりすることにほとんどの時間を費やします。これにより、一定レベルの切断が生じ、生産性が低下します。
10 倍効率的な開発者になるには、この環境で優れた能力を発揮する方法を学び、さらには自分の会社を立ち上げて取り組みを主導する必要があります。
少なくとも毎日のある時点では、誰でも 10 倍生産性の高い開発者になれる可能性があります。生産性とチームワークを向上させるために、すべての開発者が注力すべきことが 3 つあると私は考えています。
3 つのこと
10 倍効率的な開発者になるには、プログラミング言語やツールセットに関係なく、数年の実務経験が必要です。問題を解決し、コードを書くことが得意でなければなりません。
コードの書き方によって、10 倍有能な開発者、10 倍有能なエンジニア、10 倍有能なプログラマ、またはその他の呼び名で呼ばれるようになるわけではないことを理解することが重要です。
「誰が、何を、どこで、なぜ、いつ」という 5 つの W をご存知でしょう。これらはすべてソフトウェア開発に当てはまりますが、10 倍効率的な開発者を定義する 3 つの特性に焦点を当てたいと思います。これら 3 つの項目は、平均的な開発者と 10 倍生産性の高い開発者を分けます:
何を
なぜ
いつ
何をすべきかを知っている
企業の世界では、開発者は多くの場合、あまり興味のないプロジェクトに取り組み、わからない。適切な指示を受け、出力が明確に定義されている限り、これはほとんどの開発者にとって大きな問題ではありません。
問題は、開発者が十分な指示を得られないことが多いことです。代わりに、「アジャイル開発」と呼ばれるものを使用します。私たちはいくつかの言葉が書かれたメモを受け取り、何をする必要があるかを正確に知ることが期待されています。
ソフトウェア開発はコミュニケーションがすべてです。開発者は、私たちが何をしているのか、どのような問題を解決しようとしているのか、そして正確に望ましい結果は何なのかを知る必要があります。知れば知るほど、より早く実行できるようになります。最も重要なことは、仕事の目的とそれを成功に導くものを知ることが重要です。
悪い開発者は、何の質問もせずに間違った方向のプロジェクトに何時間も費やします。彼らは何も達成せず、同僚全員の時間を無駄にするため、私はネガティブ 10 倍開発者と呼んでいます。ほとんどの人がこのような開発者に遭遇したことがあり、彼らと作業するのはイライラすることがあるかもしれません。彼らの習慣に陥らないように注意する必要があります
一部の開発者は、詳細をあまり知らなくてもうまく機能します。彼らは創造性が豊かで、適切な質問をします。これらのユニコーンは、10 倍効率的な開発者である可能性があります。彼らは問題の解決方法を知っており、多くの場合チーム全体を高めます。
最も重要なことは、有能な 10 倍の開発者は、何をする必要があるのか、何を質問すべきかを迅速に特定することに非常に優れているということです。
理由を理解する
おそらく、ソフトウェア開発における最大の障害は、その理由を理解することです。解決しようとしている問題を理解していなければ、解決することは困難です。
寝ている間や学校に行っている間に MUD ゲームをプレイするためにいくつかの端末スクリプトをまとめるのはなぜですか?もちろん、ゲームの最高レベルに到達したいと思っています。私はその理由を正確に知っており、目標を達成するために全力を尽くしています。
同じアプローチがどのソフトウェア開発プロジェクトにも当てはまります。開発者が属する垂直産業と、解決しようとしている問題を理解することで、開発者の効率が向上します。その理由を知り、業界を理解することは、不必要な作業を防ぎ、製品や機能をユーザーにとってより価値のあるものにすることに集中する時間を確保するのにも役立ちます。
問題は、なぜ十分ではないのかを知ることです。真の 10x 開発者になるには、問題に対して情熱を持ち、徹底的に理解する必要があります。有能な 10 倍の開発者のほとんどは、優れた製品ビジョンを持ち、根っからの製品担当者でもあると私は信じています。
いつ何をすべきかを知っておく
ソフトウェア開発プロジェクトでは時間は非常に重要です。プロジェクトのタスクに取り組む順序を決定するのは簡単そうに思えますが、これは非常に重要です。あなたの仕事は、会社が新しい顧客を獲得したり、古い技術的負債を解消したりするのに役立ちますか?
開発チームとして、私たちはいつ何をするかを常に選択する必要があります。
すべてのソフトウェア開発作業プロジェクトは、次の 3 つのカテゴリに分類されます:
やらなければならないこと
やらなければならないこと
やりたいこと
私たちは顧客のために新しい機能を完成させなければなりません。ソフトウェアのバグを修正する必要があります。技術的負債を軽減するか、優れた新製品機能を開発したいと考えています。これらはすべて、バランスのとれたトレードオフを必要とします。
私たちは、3つの次元すべてで同時に作業プロジェクトを実行する必要があります。技術的負債にすべての時間を費やすことはできませんが、時間のほんの一部を技術的負債に費やす必要があるかもしれません。
開発者は、コードに複雑なアーキテクチャをいつ組み込むべきかを知っておく必要もあります。私はコードをできるだけシンプルに保ち、スキーマを追加せずに死ぬ時が来るまでスキーマを追加しません。
開発者は、流行のものを追い求めないようにする時期も知っておく必要があります。彼らは新しいツールやテクニックを使用する傾向がありますが、それらはプロジェクトをより早く完了させるのではなく、単に遅らせるだけかもしれません。
10 倍効率的な開発者は、何かを達成するためにスパゲッティのような混乱したコードを使用するのではなく、優先順位を付け、アーキテクチャに時間を投資するタイミングを理解するのが上手です。覚えておいてください、ユーザーはソフトウェアがどのように動作するか、アーキテクチャがどれほど豪華であるかなど気にしていません。彼らは問題を解決したいだけなのです。生産性 10 倍の開発者はこれを理解しています。
効果 10 倍の開発者になるために、「何を」「なぜ」「いつ」をマスターしましょう
それでは、効果が 10 倍の開発者になるための重要なスキルについて話しましょう。「何を (What)、なぜ (Why)、いつ (When)」をマスターします。
「なぜ」から始めましょう
10 倍効率的な開発者になるための最初のステップは、解決したいソフトウェアと問題に情熱を注ぐことです。内側も外側も完全に理解する必要があります。これは、自分が働いている会社とその使命に対して情熱を持つことから始まります。
誰かに言われたからといってボタンを 1 つだけ書くのはやめてください。より高いレベルでその理由を理解してください。 「なぜ」に焦点を当て続ければ、チームや会社にとってあなたはさらに価値のある存在になるでしょう。
最高のプログラマーではなく、優れた開発者であり、優れた問題解決者になりましょう
私は自分自身をハッカー開発者と表現します。私は、醜いコードをすぐにまとめて、ほとんどすべての問題を解決できるタイプの人間です。私のコードはめったに美しくありませんが、問題は解決します。これが最も重要です。
10 倍効率的な開発者になるために、完璧なコードや単体テストを書く必要はありません。これらのことをいつ行うべきか、いつ行ってはいけないかを知る必要があります。
10 倍効率的な開発者は、コードを通じて特定の問題を解決し、ビジネス ニーズを満たすことに熟達しています。あなたができる最も賢明な方法は、プロジェクトを他の人 (アーキテクチャやその他の詳細を最終決定するのが得意な人) に引き渡す前に、どこまで進むかを知ることです。
それが心の中にあるかどうか
何かを組み立てるのではなく、いつ複雑な建築を構築するかを知るには、経験とスパイダーマンの感覚が必要です。あなたはそう感じているか、単に知らないかのどちらかです。
私がこれまで一緒に仕事をした中で最も賢い開発者の中には、機能やスケジュールよりもパターンやアーキテクチャを優先するのが下手な人もいました。彼らは常に過剰実装やリファクタリングを何度も繰り返し、「納品可能なコード」ではなく「完璧なコード」を目指します。
10 倍効率的な開発者は、経験と直感を活用して、いつアーキテクチャと完成度に集中すべきか、いつ作業を完了すべきかを判断する必要があります。
何をすべきか、何を尋ねるべきかを知る
ソフトウェア開発の多くはコミュニケーション スキルに帰着します。残念ながら、私たちが取り組まなければならないプロジェクトに関する注意事項や要件の多くは、あまり詳細ではありません。 10 倍有能な開発者は、これらを読み取り、ビジネスの「理由」について知っていることを適用し、関連する質問をする方法を知っています。
優秀な開発者は、助けを求める前に、何かにどれくらいの時間を費やすべきかを知っています。また、プロジェクトを進めるための要件を明確にするためにどのような質問をすればよいかも知っています。
結論
私は 15 年以上コードを書いてきました。私は 10 倍効率的な開発者であると言えるか、少なくともそうできます。私は自分が何が得意かを知っており、得意なことをやれば、多くのことをすぐに成し遂げることができます。
新製品のプロトタイプを作りたいなら、私があなたの担当です。 Angular、React、またはその他のフロントエンドに関するサポートが必要な場合、私は決してあなたの味方ではありません。これらのタスクに関しては、私はマイナス 10 倍効率的な開発者になるでしょう。
開発者の効率が 10 倍というのは神話ではありません。それらは確かに存在します。彼らはおそらく、開発マネージャー、アーキテクト、主任開発者、または会社の創設者です。そうでない場合は、移行する必要があります。その後、私は会社の創設者になりました、今までに 2 回。
もちろん、毎日のあらゆる瞬間に 10 倍効率的な開発者になることは誰にもできません。私たちには毎日このペースで仕事をするエネルギーも集中力もありません。私たちはロボットではありません。
ソフトウェア開発の「何を、なぜ、いつ」を理解すれば、より効率的で優れたチームメンバーになれる - たとえ 1 日数時間でも 10 倍効率的な開発者になれる。これは大きな違いを生みます。
上記は彼が共有した内容です。皆さんのお役に立てれば幸いです。
関連する推奨事項: