ほぼ 10 年間スタートアップ環境で働いてきたことで、私はイノベーション、探索、フェイルファスト アプローチといったペースの速い文化に恵まれました。私はインターン、ジュニア、ミッド、シニアという標準的な昇進のはしごをたどり、最終的にはエンジニアリング管理トラックに移りました。時間が経つにつれて、私と一緒に成長した多くの人々は後に他の会社に移り、そこで非常に尊敬される貢献者になりました。彼らは優れたエンジニアであると言っても過言ではありません。
同僚、メンティー、そして私自身のこれまでの歩みを振り返ると、優れたエンジニアになるのはこれまで以上に難しいように思えます。
エンジニアになるとはどういう意味ですか?ソフトウェア エンジニアとして、私たちは次のような役割を果たします。
つまり、エンジニアリングはプログラミングと同じではありません。場合によっては、それが最も小さな部分であることもあります。以下の図に示すように、経験を積むにつれて確かにそのように見えます。
優れたエンジニアになるとはどういう意味ですか?数多くのインタビューとメンティーの進歩のサポートに基づいて、さまざまなレベルの専門知識を持つ人々が異なる答えを出す可能性があることに気づきました。
始めたばかりの人は、開発者が知っている言語とフレームワークの数が問題だと考えるかもしれません。より経験豊富なエンジニアは、使用している言語を気にせず、代わりにコードの品質を重視し、すべてのコーディング原則を遵守し、迅速に作業を進めながらQA を実施します。
経験豊富なエンジニアは、価値をもたらすことに重点を置いています。場合によっては、仮説を証明するためにすべてのルールを破る捨てコードをすぐに書いてしまうこともあります。場合によっては、数行のミッションクリティカルなコードを書くのに数日かかることもあります。しかし、ほとんどの日、私たちはアーキテクチャに関する決定を下したり、ミッションクリティカルな問題について話し合ったり、プロセスを改善したりしています。なぜでしょうか?多くの場合、それが最大の価値をもたらすからです。
例外は常にありますが、優れたエンジニアとは、目標を達成するために最大限の価値をもたらすために効率的に努力を集中するエンジニアであると言えます。
テクノロジー市場は常に進化しています。 WhatsApp から Uber、Airbnb、TikTok に至るまで、私たちは長年にわたり大規模な成功を見てきました。これらは例外かもしれませんが、そのような例は人々にとって北極星となることが多く、人々が努力すべきものです。この考え方はエンジニアに余分なプレッシャーを与えます。彼らは、内部からは自分たちが何か間違ったことをしていると考え、外部からは自分の会社を多くの競合他社と比較する人々からストレスを感じています。
このような環境で成功するには、Facebook の有名なモットーにあるように、企業は「迅速に行動して物事を打ち破る」必要がありました。今日、これはこれまで以上に明白であり、ほぼすべての企業が「 AI 企業」になりつつあります。誰もが ChatGPT を統合していますが、多くの場合、特に理由もなく、それがどのように価値をもたらすかについての戦略もありません。
核となる原則、つまり顧客により多くの価値をもたらすにはどうすればよいかということから離れ、誇大広告の中で競争に打ち勝つ方向に進むことで、エンジニアは失敗する運命にある機能を構築することになります。
私のような愛好家がより良いエンジニアになるためには何をすべきでしょうか?クリーンなコードとアーキテクチャ哲学を改善してコーディング スキルを完璧にするという明白な選択とは別に、今日では多くの誘惑が潜んでいます。 TypeScript とすべてを変える最新のフレームワークを学び、ブロックチェーンと暗号の世界に飛び込み、無数の AI 製品を試してみましょう…オプションは無限です。
正直に言うと、業界で長年働いてきたにもかかわらず、ChatGPT、GitHub Copilot、その他の新興テクノロジーによってもたらされる新たな変化の波に依然として脅威を感じていました。私の脳は、私があまりにも多くのことに触れられなくなったシナリオを想像し始めました。価値をもたらすために正しいことに焦点を当てているでしょうか?自分の可能性を最大限に発揮できているだろうか?
しばらくして、私たちが誇大広告に乗っていることが明らかになりました。それも過ぎ去り、長期的な価値を生み出すAI企業だけが残ることになるだろう。米国では過去 5 年間で AI 企業の数が 2 倍に増加しており、多くの新興企業は新しくリリースされた GPT-3 に機能を追加しただけです。これらは後に、同じことをより良く行うことができるChatGPT または GPT-4のリリースで消滅します。しかしそれでも、Twitterやその他のプラットフォームの誇大広告軍が新世界秩序を宣言するのを止めることはできない。
テクノロジー業界で何年も働いてきたにもかかわらず、私は誇大宣伝の虜になってしまいました。新人のミス!
プログラミング言語や新しいフレームワークの継続的なリリースも混乱を増大させます。 Tailwind、TypeScript、Haskell、Rust はすべて優れています。それぞれに有利な角度があります。しかし、人々はそれらを学ぶことで優位性が得られると誤解することがよくあります。そんなことはないだろうし、少なくともそうすべきではない。これらは知っておくと便利な単なるツールですが、経験に代わることはできません。そのため、私たちは職務記述書に言語やフレームワークの要件を決して記載しません。 TypeScript、プロンプト エンジニアリング、マイクロサービスを知らないという理由で、才能あるエンジニアを見逃すのは愚かです。
私のアドバイスは、新しいトレンドに巻き込まれたり、価値をもたらすことに集中できなくなるほど誇大宣伝したりしないことです。
新しい挑戦を求めるとき、ネガティブなストレスを避けながらポジティブなストレスを得るように努力するのは難しい場合があります。ポジティブなストレスとは、ストレスの多い状況を良い結果につながる機会として認識するもので、ネガティブなストレスとは、以下の図に見られるように、身体的および精神的健康に悪影響を与える可能性があるものです。タイトなスケジュールで結果を出し続けることはストレスがかかり、誤った理由で機能を構築すると後者に傾きます。
私は指導者としても、またハードワーカーとしても、ストレスが燃え尽き症候群につながるのを見てきました。例外なく、誰かが燃え尽き症候群を経験することは、仕事量を減らし、休憩を取り、長期的に最適化するよりも生産性が低くなります。そのため、私たちは定期的なチームの最新情報、1 対 1、そして育成文化によって、危険信号をできるだけ簡単に提示できるように常に努めています。
それでも、物事はうまくいかないでしょう。そうなった場合、私たちは範囲を縮小し、支援できる人々を巻き込んだり、クライアントとコミュニケーションを取ったりして発売を延期します。
内外からのプレッシャーはこれまで以上に高まっています。集中力を維持し、長期的な最適化をサポートするチームに囲まれてください。
私たちは皆、エンジニア、指導者、同僚としてふさわしくないと感じて落ち込む瞬間を経験します。物事が完璧になったり簡単になったりすることは決してありませんし、そうあるべきではありません。間違いや困難を経験しなければ、私たちは学びません。しかし、効率を高めることができることがいくつかあります。
個人としては、本当に重要なことに忠実であり続けてください。テクノロジーは栄えては消えていきますが、重要なのは世界にもたらす価値です。努力や経験を偽るのは難しい。
企業として意思決定を行う際には、 「なぜ」から始めます。これは、価値をもたらす機能を提供する最良の方法です。また、従業員がその理由を理解していることを確認してください。私の経験では、彼らはより良い意思決定をし、貴重なフィードバックを提供し、より幸せになるでしょう。
文化的には、従業員をサポートし、長期的に最適化するプロセスを確立します。同僚と協力して、信頼、サポート、思いやりの文化を確立してください。そうすれば、皆さんはお互いに最高のものを得ることができます。