DEVコミュニティで注目のジュニア開発者がマスターすべき12のシニア開発者の特徴 🔥
あらゆる分野、つまり芸術、スポーツ、ソフトウェア開発でトップに立つ最も速い方法は、すでにその分野のトップにいる人たちのやっていることを学ぶことです...そして、自分がやっていないことを見つけてやってみることです。
もしコードを書いて生計を立てているなら、シニア開発者を見てみましょう。あなたが持っていないスキル、習慣、特徴が何かを特定することを意味します。
私はここ3年で世界中の一流ソフトウェアエンジニアと数千時間を共に働きましたが、今すぐにでも取り入れて、次のレベルへの成長を加速させることができるシニア開発者の特徴が12あります。
さっそく1つ目から見ていきましょう...
1. 集中力
集中力とは、あることをするために他の何かを拒むことです。
理想的には、重要でないものを拒み、違いを生むもの、ボートを速く進めるものに「はい」と言います。
これは多くの開発者にとって本当に難しいことです。自分ですべてをこなすことはできないと受け入れること、そしてすべての機会が同じように価値があるわけではないということです。
すべての新しいフレームワークを学ぶ必要はありません。すべてのニュースレターを読む必要はありません。すべてのカンファレンスに出席する必要はありません。そして、それらをしなくてもいいのです。
あなたの時間は限られています。エネルギーも同様です。
シニア開発者であるということは、戦いを選ぶことを意味します。
「人々は集中力とは、集中しなければならない物事に「はい」と言うことだと思っています。でも、それは全然違います。集中力とは、ありふれた他の良いアイデア100個に「いいえ」と言うことを意味します。」 - スティーブ・ジョブズ
面白いことに、上手に選べるほど、あなたの進歩のスピードは速くなります。シニア開発者もあなたと同じ1日24時間を持っています。でも彼らはもっと多くのことを成し遂げます。
どうやって?
少ないことをすることによって。
新しいことがやって来たら、自分に「これは本当に重要か?」と問いかけてください。それともただのトレンドなのか?それはおそらく、機会に偽装した別の誘惑に過ぎないでしょう。
シニア開発者は「はい」と言うよりも「いいえ」と言います。彼らは始めたプロジェクトよりも完成させたプロジェクトが多いです。そして、新しいフレームワークを学ぶ前に、既に使っているフレームワークをマスターします。より早くシニアになりたければ、最初に身につけるべき特性は集中力です。
2. 第二次的思考
「作ってみて、どうなるか見てみよう」という態度が「ジュニア開発者」であることを際立たせるものの一つです。ジュニアたちは、まずコーディングしてから考える傾向があります。
これは始めたばかりの時にはいい態度かもしれませんが、本番環境でのソフトウェア開発に取り組んでいるときには、いくつかの技術的な決定は変更できないか、簡単には変更できないことがあります。
たとえば、フロントエンドフレームワークとしてVueを選びました。
その後、要件が変更されます。Reactの方がいい選択だったと考え始めます。もちろん、Reactに切り替えることができます。しかし、それは簡単でも安価でもありません。
シニア開発者は、自分の供給に酔ってしまうのは簡単だと知っています。しかし、あなたがベストだと思うフレームワークやライブラリに恋をすると、技術的に貧弱な決定を下し始めるでしょう。
自分の選択の結果を二度考えます。これは、問題を理解しようとする際に「なぜだろう?」を5回尋ねることを意味することがあります。
もしくは、自分の解決策が持つであろう潜在的な欠点について考えることを意味することがあります。
たとえば、Reduxを追加したのでグローバルなステートは少し管理しやすくなったはずです。しかし、新しい開発者にReduxを導入する必要があります。学習曲線は急です。
そして、当てはまりますが、JavaScriptバンドルが大きくなるということは、パフォーマンスにとって良くありません。
第二次的な状況を考慮することで、より優れた開発者になれます。また、技術面接でのあなたを助けにもなるでしょう。
🚨 P.S. 優れたリソース、フィードバック、そして責任感を持ってシニア開発者への早道を探しているのであれば、シニア開発者アカデミーの無料コミュニティに参加しましょう。 🚨
3. 実用主義
ベストプラクティスについての本を読んだジュニア開発者は、すぐにそれをリリースのあらゆるコード行に適用しようとします。彼らはそれらを宗教的に順守します。
自分で技術的な決定ができない場合、事前に定義された規則に固執する方がずっと簡単です。しかし、ソフトウェア開発は宗教ではありません。
良い例がテストです。
TDD(テスト駆動開発)について読んだジュニア開発者は、すべてのものをテストし始めます。完全なコードカバレッジを目指します。しかし、完全なコードカバレッジは成果が低下していき、時間の無駄になることがあります。
シニア開発者は、ベストプラクティスと市場投入までの時間のバランスを知っています。いつ短絡的な手法を取り、いつ取らないかを知っています。
素早く物事をハックすると、バグと技術的負債が生まれます。あなたのコードの文脈が変わったときにいつもルールに固執すると、悪い決定をすることになります。
バランスが必要です。
状況に基づいて技術的な選択を再検討することに開かれていなければなりません。
4. 証明する必要なし
自信の欠如から、ジュニア開発者は他人に自分を証明しようと常に試みます。自分の価値やスキルに不安を持っているシニア開発者も同様です。
彼らは他人からの承認に自信を置いています。
これは負けるゲームです。
彼らは技術的な議論でどれだけ多くを知っているかを示そうとして、他人の上に話したり、夜遅くや週末にコードを押し出したりします。
実際には、これらの行動すべてが有毒なチーム環境を生み出し、逆効果になります。最善の場合、それらはあなたが実際のよりシニアでないように見せることになるかもしれません。
チーターはレースで自分を証明する必要はありません、ただ狩りのために走るだけです。
これに対処する方法は2つあります。
1つ目は、外部の承認に多くの時間を費やさないようにすることです。真実は、自分自身に何も証明する必要はないということです。
2つ目は、頭の中のネガティブな声と和解することです。
あなたは最悪の批評家になりうるでしょう。完璧主義、失敗への恐れ、そして「本物の」開発者に関する間違った考えは、あなたの自尊心を破壊しています。だからどんなに一生懸命働いても、いつも物足りなさを感じるのです。
あなたの頭の中から出る時が来ました。
あなたの技術を磨くことに集中し、他のことはそれに続くでしょう。あなたは自分自身とあなたのスキルに対して瞬く間により自信を持つようになるでしょう。そして、他人に自分を証明しようとするのをやめるでしょう。
5. 基本をマスターする
LinkedInのプロフィールで自己を「React開発者」、あるいは「Angular開発者」と表現する開発者に遭遇すると、彼らがシニアではないことが分かります。彼らはそのフレームワークでシニアかもしれませんが、全体的にはシニアではありません。
フレームワーク開発者は決してシニア開発者にはなりえません。
なぜなら、フレームワークはあなたをシニアにはしません。フレームワークはただのケーキのアイシングです。ケーキ自体ではありません。氷山の一角に過ぎず、その底ではありません。
私は、ソフトウェア開発者の間、特にシニアの間で現在流行している「インポスター症候群」と呼ばれる流行には、才能がないことや努力が足りないことではなく、基本が弱いためだと推測しています。
これがデバッグやパフォーマンス最適化などのトピックがほとんどの開発者にとって純粋な推測になってしまう理由でもあります。彼らは使っているライブラリやツールの表面を掘り下げることに慣れていません。
シニア開発者になるには、「何」だけでなく、物事の背後にある「なぜ」も理解することが必要です。
たとえば、シニア開発者はReactアプリケーションを構築することができるだけでなく、Reactがなぜある特定の方法で構築されているのか、そしてそれがどのように書かれている言語(JavaScript/TypeScript)と実行されているプラットフォーム(ウェブブラウザ)と融合しているのかを理解しているでしょう。
良いニュースは、一旦基本をマスターすれば、すべてのレベルが上がるということです。
🚨 P.S. 優れたリソース、フィードバック、そして責任感を持ってシニア開発者への早道を探しているのであれば、シニア開発者アカデミーの無料コミュニティに参加しましょう。 🚨
6. エンドツーエンドの配信
企業がジュニア開発者を避ける第一の理由は、彼らは物事を成し遂げるために多くの外部の支援が必要だからです。外部の支援というのは、あなたが自分の仕事を完成させるためにシニア開発者の手を煩わせるということを意味します。
ジュニア開発者は「高価」とされています。なぜなら彼らは独立して配信することができないからです。
一方で、シニア開発者はエンドツーエンドで配信することができます。一連の要件を与えられて、彼らは残りを把握するでしょう。これは彼らが孤独な狼だという意味ではありません。実際、彼らはチームで働くのが非常に得意です。
これはシニア開発者が素早く物事をハックするだけのことを意味しません。
それは「本当の」シニアではありません。
そして、彼らがソフトウェア開発ライフサイクルの
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/dragosnedelcu/12-senior-developer-traits-junior-developers-need-to-master-285m