ソフトウェア開発者のキャリア パス: 決定事項

ソフトウェア開発は、広大で常に進化している分野です。 それでも、テクニカル スキルとソフト スキルの強固な基盤を構築することは、今後数十年で状況がどれほど変化しても成功に役立ちます。 あなたのソフトウェア開発者のキャリア パスは、絶え間ない学習と進化の 1 つです。

通常、ソフトウェア開発者は、業界や企業固有のアプリケーションやサービスに加えて、いくつかのプログラミング言語やスクリプト言語に習熟しています。 一般に、Java、C++、および Python を学習すると、多くのキャリアの機会が開かれます。

ただし、キャリアの軌跡を描くときは、専門的な言語が特定の、しばしば有利な機会につながる可能性があることに留意してください。 たとえば、R は統計計算に使用されますが、COBOL は依然として金融サービス業界のレガシー システムに不可欠です。 シェル スクリプトは、システム管理と CI/CD パイプラインの開発に使用されます。

初めてソフトウェア開発分野に参入する場合は、アルゴリズム、データ構造、ソフトウェア設計パターンなどのコンピューター サイエンスの基本概念が、特定のテクノロジやプログラミング言語に関係なく、すべてのソフトウェア開発のビルディング ブロックを提供することを知っておいてください。特定のプロジェクトで使用されます。 同様に、データ構造とアルゴリズムを理解することは、効率的でスケーラブルなソフトウェアを開発するために不可欠であり、コードをより保守しやすくするのに役立つ設計パターンを把握することにも役立ちます。

SDLC、クラウド、フレームワークを理解する

Toptal のバイス プレジデント兼テクノロジ サービス担当ゼネラル マネージャーである Abhi Shrikhande 氏は、ソフトウェア開発者としてのキャリア パスを進める上で、ウォーターフォール、スクラム、アジャイルなどの開発方法論を理解することも重要であると述べています。

「テクノロジーは、製品とソフトウェアの開発ライフサイクルに対する私たちの考え方を根本的に変えました」と彼は付け加えます。 「ボタンをクリックするだけで複雑なサービスや機能へのアクセスを提供するクラウドのようなテクノロジーは、より協調的な SDLC を可能にし、要件の定義と設計からテストと展開、つまり製品ライフサイクルまで、SDLC フェーズ間の境界線をあいまいにしています。大幅に縮小しました。」

一般的なユース ケース用の定義済みライブラリを提供する開発フレームワークを理解することが重要です。 これには、React、Angular、Vue.js などのフロントエンド開発フレームワーク、React Native や Flutter などのモバイル開発フレームワーク、PyTorch や TensorFlow などの機械学習フレームワークが含まれます。

Check Point Software Technologies のチーフ アーキテクト兼開発者セキュリティである Uri Shamay 氏は、クラウドの台頭により、キャリア志向のソフトウェア開発者がクラウドの基本と、IaaS、PaaS、およびクラウド ネイティブの世界の違いを知ることが重要であると考えています。 .

多くのソフトウェア開発者にとって、自己学習コースやオンライン コースは、開始するのに適した方法です。 「ブートキャンプ プログラムを選択できます」と彼は言います。 「コンピュータ サイエンスや IT などの関連分野で学士号を取得することはできますが、今日のインターネット上のコンテンツの急増により、自分で新しいことを学ぶための障壁はありません。」

彼は、ソフトウェア開発者向けの「非常に豊富で精選されたコンテンツ ソース」と呼ぶ GitHub Awesome Lists を挙げています。 「プログラミング言語に関しては素晴らしいオプションがたくさんありますが、それは好みに大きく依存します」と彼は言います。 「たとえば、UI/UX に情熱を傾けている場合は JavaScript が最適な言語であり、高性能でスケーラブルなシステムを構築することに情熱を傾けている場合は、Rust and Go が最適な言語です。」

可能なキャリアパス

CoderPad のエンジニアリング担当グローバル バイス プレジデントである Nathan Sutter は、次のように述べています。 「Python は永遠に存在し、どこにでもあるため、かなり長い間最も人気のあるものになると思います。」

Sutter 氏によると、ソフトウェア開発者としての一歩を踏み出すと、キャリアアップには 2 つの主要なトラックがあります。1 つは管理トラック、もう 1 つは個人貢献トラックです。

「管理職は通常、エンジニアリング マネージャーまたはシニア エンジニアリング マネージャー、ディレクター、シニア ディレクター、VP、SVP、グローバル VP、そして CTO のように見えます」と彼は説明します。 「それはすべて管理とリーダーシップに焦点を当てたもので、個々のチームの管理から始まり、私の役割であるグローバル エンジニアリング チームの管理に至るまでです。」

個人コントリビューター トラックは、シニア エンジニアからエンジニアリング マネージャー、プリンシパル エンジニア、シニア プリンシパルへと進み、大規模なエンタープライズ中心の企業でアーキテクチャに焦点を当てた役割に分岐することができます。

キャリアを積んでシニア エンジニアの道を歩むとき、選択を迫られます。 「エンジニアとして永遠にとどまるか、正直に言うと、それは多くの人にとって終末の地位であり、多くの人がそれにとても満足しています。 彼らはシニア レベルで個人の貢献を永遠に続けたいと考えています。 「または、管理ルートをたどるか、よりアーキテクチャに焦点を当てたルートをたどります。」

Shamay 氏は、開発者はセキュリティや機械学習などの特定の分野に特化し、上級レベルまで進むことができると述べています。アーキテクト/技術リーダーのポジションに。」

あなたは管理をしたいですか?

Codecademy のシニア エンジニアリング マネージャーである Reed Laverack 氏は、管理職への移行を選択するかどうかは、個人の好みと性格のタイプに左右されると述べています。 「コードに参加するのが大好きで、コードの一部について考え、それを可能な限り最高のものにしたいと思っている人がいます」と彼は言います。 「私にとっては、大きなアイデアを扱うのが本当に好きでしたが、詳細に入るのが好きではなかったので、より広い領域にもっと影響を与えることが好きでした.

彼はまた、管理のメンターシップと人的側面も気に入っています。 「通常、企業は、プロジェクト管理スキルを取得するために完全にリードできるプロジェクトを提供します」と彼は説明します。 「多くの企業が技術主導の役割を担っていますが、移行前のソフトウェア開発では半分ずつです。 社内で構築する方法はいくつかあります。」

委任、コミュニケーション、および継続的な学習

管理職に就くソフトウェア開発者にとって、最も効果的なスキルの 1 つは委任です。 「あなたのチームに製品を実際に動かしてもらいましょう。 エンジニアは毎日そこにいます。 彼らはコードを知っています。 彼らに操縦してもらいましょう」と Laverack 氏は言います。 「多くのことを引き受けようとして、かなりつまずき、チームに十分な力を与えることができませんでした。 それは私が学ぶ必要があった最大のスキルであり、その多くは上級管理職の経験と頼りに学ぶことでした。」

Shamay 氏は、すべてのソフトウェア開発者は、次のような重要なソフト スキル セットを必要としていると述べています。

  • 忍耐
  • 創造性
  • 適応性
  • 新しい技術を学ぶ意欲
  • 細部への注意
  • 優れた問題解決能力と分析能力

「結局のところ、ソフトウェア開発は NBA チームのようなものなので、最も重要なのは強力なコミュニケーションとコラボレーションのスキルです」と彼は言います。 「共同作業チームのように、個人が優れたソフトウェアを構築することは決してできません。」

Shrikhande 氏によると、ソフトウェア開発はあらゆる業界で使用されており、常に進化している分野になっています。 「継続的な改善への欲求とともに、学習と実験のための時間を意図的に切り開くことが重要です」と彼は言います。 「生活や仕事が忙しくなると、その優先順位を下げるのは簡単です。」

彼は、Hacker News や Linux Journal などの技術出版物やフォーラム、さらには Reddit などのソーシャル メディア コミュニティを通じて、新しい技術や業界のトレンドに遅れずについていくようアドバイスしています。 Udemy や Coursera などのオンライン学習プラットフォームも、多くの開発者にとって同様に役立ちます。

「業界のカンファレンスやイベントに参加し、興味があり、情熱を注いでいるテクノロジーを試してみてください」と彼は付け加えます。

Leave a Comment

Your email address will not be published. Required fields are marked *