ソフトウェア開発者が成長できる23の代替キャリアパス

過去5年間、私はシカゴのコーディングブートキャンプの多くで数十回のゲスト講演を行ってきました。

「次にどの言語を学ぶべきか」、「技術面接の準備をするにはどうすればよいですか」、「採用していますか」など、いくつかの質問が必ず出てきます。

しかし、私を思いとどまらせた1つの質問は、「ソフトウェア開発者になりたくない場合はどうなるか」というものでした。

私は最近これについてよく考えています。製品チームとエンジニアリングチームを10年近くリードした後、私は新しい挑戦の準備ができていることに気づきました。そのため、この夏、フリーランスのテクニカルライティングを開始しました。最初のクライアントを取得したときはそれを知りませんでしたが、テクニカルライティングは、元ソフトウェアエンジニアにとって有効なキャリアパスの1つであることにすぐに気付きました。

ソフトウェア開発者は他に何ができますか?

この認識から、「ソフトウェアを書く以外に、ソフトウェアエンジニアは他にどのような仕事ができるのか」と考えました。

リストは驚くほど長いです。

この投稿では、ソフトウェア開発者、特に最近のブートキャンプの卒業生が利用できる多くのキャリアパスについて説明します。それぞれの仕事の内容、ドアに足を踏み入れる方法、そして長期的な展望について説明します。

エンジニアとしての仕事を見つけられなかったため、またはソフトウェア開発が自分に適していないことに気付いたために、別のキャリアパスを探している場合でも、このガイドは、スキルセットに適したキャリアを見つけるのに役立ちます。

ソフトウェア開発者のための代替のキャリアパス

顧客対応の役割

ソフトウェアエンジニアは人のスキルを持つことで恩恵を受けますが、私が話をしたブートキャンプの卒業生の中には、静かに座って一日中コードを書くことを楽しみにしていない人もいます。人々と交流する機会を増やすキャリアパスが必要な場合は、これらの仕事が適している可能性があります。

1.開発者との関係、アドボカシー、またはエバンジェリズム

より多くの企業が顧客、ユーザー、または支持者である開発者との関係を構築しようと努力するにつれて、開発者関係の分野は急速に成長しています。

開発者関係の専門家(一部の企業では、開発者擁護者、開発者エバンジェリスト、コミュニティマネージャー、または「DevRels」と呼ばれています)は、自社のソフトウェアを中心としたコミュニティの確立と構築を支援しています。

彼らは多くの場合、デモアプリケーションの作成、ブログ投稿の作成、会議での講演、テクノロジーに焦点を当てた企業のソーシャルメディアアカウントの管理に携わっています。有名なテクノロジー企業(Facebook、Google、Amazonなど)の多くは、開発者関係の専門家のチームを雇っています。

この分野に興味がある場合は、メアリー・セングヴァルとPJハガティが行っていることを読んでください。彼らはこの分野で私のお気に入りのインフルエンサーの2人であり、CommunityPulseポッドキャストを一緒に公開しています。

2.開発者マーケティング

開発者との関係にはいくつかの重複がありますが、開発者のマーケティングはより外側に焦点を合わせています。

開発者へのマーケティングは、私たちが売られたくないので特に注意が必要です。他の市場で機能するより積極的なマーケティング戦術の多くは、ここではタブーです。技術的なバックグラウンドを持つ人として、開発者の考え方を自然に理解し、従来のマーケティング担当者よりも影響力があります。

SlashDataは、2018年のトピックに関する本など、開発者マーケティングに関する多くの優れたコンテンツを公開しています。この分野で始めたい場合は、オンラインマーケティング(SEO、ソーシャルメディア、コンテンツマーケティング、インフルエンサーマーケティングなど)をご覧ください。あなたは仕事に応募する前にあなたの知識を示すためにあなたのブログでこれらのスキルの多くを練習することができます。

3.セールスエンジニア

多くのエンジニアは、タイトルに「営業」が含まれている仕事によってオフになっていますが、それは私たち全員が悪い営業担当者に遭遇したからです。

真実は誰もが売りに出ているということです。面接の過程で求職者として自分自身を「売り込む」場合でも、エンジニアリングチームで新しいフレームワークを提唱する場合でも、販売とは、顧客のニーズを適切なソリューションに一致させることを意味します。

セールスエンジニアは、ある程度の技術的専門知識を持っているという点で独特です。これは、一日中コードを書きたくないが、ソフトウェアエンジニアリングを理解している開発者に最適です。

販売に関するもう1つの優れた点は、それを行うために特別な認定を必要としないことです。Hubspotは、開始できるいくつかのスキルとリソースの優れた紹介を提供します。より多くの企業がエンジニア向けのソフトウェアツールとサービスを構築するにつれて、セールスエンジニアは今後10年間でさらに需要が高まるでしょう。

4.テクニカルリクルーター

ソフトウェアエンジニアの間で悪いラップを得るもう一つの職業は、技術的な採用です。

正直で本物の技術採用担当者(たとえば、私の故郷であるシカゴのテイラー・ドーセットとマット・ホフマン)に会ったことがありますが、候補者をかき回して割り当てを達成することに純粋に集中している、ひどい無知な採用担当者にも会いました。 。

幸いなことに、ソフトウェア開発のバックグラウンドがあれば、他の多くの技術採用担当者よりも共感と信頼を得ることができます。営業と同様に、この分野では、より発信的で人間関係に焦点を当てた個性が必要ですが、専門的な資格やコースは必要ありません。

残念ながら、技術採用のエントリーレベルの仕事の多くは質の低い企業で行われているため、応募する前に必ずGlassdoorで彼らの評判を確認してください。

製品の役割

製品チームに残りたいが、ソフトウェア開発者になりたいかどうかわからない場合は、移行できる多くの分野があります。これらの役割はエンジニアと緊密に連携しているため、コーディングの知識が役立ちますが、他の専門知識も必要です。

5.品質保証またはテストエンジニア

品質保証とテストエンジニアの間には微妙な違いがありますが、どちらもソフトウェアが稼働する前にテストソフトウェアを扱います。

詳細に目を向けていて、反復的なタスクを自動化するための創造的な方法を考え出すのが好きな場合、これは素晴らしいキャリアパスになる可能性があります。コーディングと手動テスト作業が必要になる可能性があります。

中小企業では、ソフトウェアエンジニアがお互いのコードをテストするため、大規模な組織では専用のテストとQAの役割が最も一般的です。企業がテストを行う方法には多くの違いがあるため、使用するツール、テストの自動化の程度、および手動テストと自動テストのどちらの役割が必要になるかを必ず確認してください。

6.ビジネスアナリスト

製品開発ライフサイクルのもう一方の端には、ビジネスアナリストがいます。これらは通常、ビジネスチームと技術チームの間の架け橋として機能し、要件、制限、およびタイムラインを確実に理解します。また、チームの構造によっては、テストや品質保証に参加して支援する場合もあるため、幅広い製品知識が必要です。

ビジネス、製品開発、または設計のバックグラウンドがあり、コーディングスキルがある場合は、エントリーレベルのビジネスアナリストの役割を担うことができます。そうでない場合は、いくつかのオンラインコースを調べて、役割とその意味についての基本的な理解を深めることをお勧めします。

7.プロジェクトマネージャー

ビジネスアナリストと同様に、プロジェクトマネージャーは、製品のビジネス要件と技術的制約を理解する必要があります。

主な違いは、プロジェクトマネージャーは通常、単一のプロジェクトに深く入り込むことです。多くの場合、プロジェクトに取り組んでいるチームのタスクとリソースを定義し、リリースが近づくにつれてプロジェクトの進捗状況を追跡します。

中小企業は、ビジネスアナリスト、プロジェクト管理、スクラムマスター、および製品マネージャーの役​​割をさまざまな方法で組み合わせることができますが、大企業は個別の責任を定義する場合があります。

プロジェクトマネージャーとして成功するには、優れた組織スキル、ビジネスの理解、および人的スキルが不可欠です。この役割は、期待を管理し、自分よりも年長または経験豊富な人をやる気にさせる能力にかかっているため、信頼を迅速に構築する必要があります。この役割は多面的であるため、コードを記述したくない分析技術者に最適です。

8.スクラムマスター

アジャイルチームでは、スクラムマスターは、誰もがスクラム理論、ベストプラクティス、およびルールを理解し、理解できるようにするのに役立ちます。

これは最終的にプロジェクト管理によく似ていますが、製品の構築に関与する他のチームにサービスを提供することに特に重点が置かれています。繰り返しになりますが、これは必ずしもそれ自体の仕事ではありませんが、大規模な組織ではそうなる可能性があります。

期待と制限を管理する能力は、スクラムマスターとして成功するために重要です。また、アジャイルのベストプラクティスを知る必要があるため、このトピックに関する適切なコースまたは本を見つけることをお勧めします。アジャイルはあらゆる規模の組織で広く採用されているため、このキャリアパスは今後10年間も成長し続ける可能性があります。

9.プロダクトマネージャー

私は2019年に、The GraideNetworkでの製品配送プロセスを改善するための製品管理について学ぶことに多くの時間を費やしました。

プロダクトマネージャーは、会社の製品を総合的に見て、それらが望ましい(顧客が望む)、実行可能(ビジネスに意味がある)、実行可能(私たちが構築できる)であることを確認します。このように高いレベルで考える能力はまれなので、それと技術的なバックグラウンドがあれば、プロダクトマネージャーとしてうまくいくかもしれません。

エントリーレベルの製品マネージャーは、製品のより小さな部分から始めたり、一部の組織ではプロジェクトマネージャーとして始めたりする場合があります。これにより、製品開発を味わうことができ、管理する独自の製品を割り当てる前に、必要なすべての利害関係者との関係を構築するのに役立ちます。

10.デザイナー

デザインや芸術的なバックグラウンドを持っている場合は、コーディングチョップを使ってUIまたはUXデザイナーになることは、自分の分野で目立つための優れた方法です。このスキルの組み合わせにより、エンジニアとより効果的に話し、静的な画像ファイルだけでなく、HTML / CSSでインタラクティブなモックアップを作成できます。

デザインの経験があまりない場合は、コースを受講してポートフォリオの構築を開始してください。多くの企業は、知識とスキルを披露できれば、学位を持たない人を雇うでしょう。Dribbbleは私が見た中で最も一般的なポートフォリオプラットフォームですが、独自のWebサイトを使用することもできます。

11.開発者なしまたはローコード開発者

過去数年間のノーコードおよびローコード開発ツールの爆発的な増加により、開発チームを雇うことなくソフトウェアを迅速に構築したい企業に機会が開かれました。これらのツールを使用すると、モバイルアプリやウェブアプリを数週間ではなく数時間で作成できます。また、毎年改善されているため、ノーコードアプリを採用する企業が増えています。

MakerpadとNoCode Jobsは、この種の仕事を探し始めるのに適した場所です。これは新しい分野であるため、必要なスキルと賃金表を幅広く見つけることができますが、コードを書くバックグラウンドは間違いなく資産であることがわかります。

サポートの役割

多くの新しいソフトウェアエンジニアは、サーバー、Webサイト、および操作をスムーズに実行し続けるのに役立つ舞台裏の多くの従業員に気づいていません。これらの役割の中には、自動化スクリプトを作成するか、サーバー管理に関する深い知識が必要なものもありますが、従来の製品開発サイクル以外のものを探しているが、技術的な傾向がある場合は、これらが最適です。

12.SysadminまたはDevOpsエンジニア

大規模なソフトウェア会社には、年間を通じてパッチを適用し、アップグレードし、ローテーションする必要がある数百または数千のサーバーがあります。クラウドコンピューティングの普及により、この仕事はサーバーを物理的に接続することから、TerraformやKubernetesなどのソフトウェアを使用することへと変化しましたが、この分野での仕事に不足はありません。

従来、システム管理者は、エンジニアリングチームの必要に応じてサーバーの保守と管理を担当していました。組織が成長し、クラウドホスティングに移行するにつれて、多くの人が、このプロセスで使用されている自動化の増加を反映するために、DevOpsエンジニアという称号を採用しています。実際には、これらの役割の間には多くの重複があります。

いずれにせよ、オペレーティングシステム、ホスティングプラットフォーム、自動化ツール、bashスクリプト、およびシステムアーキテクチャの基本的な理解が必要です。この分野では幅広い技術的知識が必要なため、エントリーレベルの仕事を見つけるのは難しいかもしれませんが、UI / UXの要件がほとんどないエンジニアリングの問題解決の側面が好きな場合は、移行するのに最適な役割です。顧客向け製品にはが必要です。

13.データベース管理者

データベース管理者をシステム管理者と一緒にまとめる企業もありますが、これは別の役割になる可能性があります。

データベース管理者は、低レベルのデータストレージシステムのセキュリティ、プロビジョニング、スケーリング、および最適化を扱います。SQLおよびNoSQLデータベースの知識、セキュリティのベストプラクティス、およびいくつかの基本的なスクリプトスキルが必要ですが、一日中コードを書くことはないでしょう。また、インデックスやキャッシュの修正など、非常に細かい最適化問題についても心配する必要があります。

ソフトウェア開発に不慣れな場合は、データベースについてできることをすべて学ぶことから始めてください。どのデータベースがどのアプリケーションに適しているか、そして各データベースを大規模に最適化する方法を知る必要があるため、これを自分で実践するのは難しい場合があります。使用する大きなデータセットを見つけたい場合は、Kaggleをチェックしてください。

14.サイト信頼性エンジニア

サイト信頼性エンジニアは、本番環境で発生する重大な問題に対応して修正する責任があります。多くの場合、これは「オンコール」リストを順番に表示することを意味するため、奇妙な時間に作業する可能性があります。利点は、さまざまな異常な問題の解決、自動アラートの作成、サーバーログの読み取りが非常に上手になることです。

この仕事は非常に反応性が高いため、経験豊富なソフトウェアエンジニアをサイトの信頼性の役割に長期間維持することは難しい場合があります。そうは言っても、最初のソフトウェア開発の役割を見つけるのに問題がある場合は、ドアに足を踏み入れるのに最適な場所かもしれません。私は、ソフトウェア開発に移行する前にSREの役割を開始した2人のブートキャンプ卒業生を知っています。ペースの速い問題解決の挑戦と興奮が好きだと思うかもしれません。

15.テクニカルサポートまたはカスタマーサポート

一部のエンジニアは顧客とのやり取りを恐れていますが、他のエンジニアは、人々が一日中問題を解決するのを助けるためにそれが活気に満ちていると感じています。あなたの経験コーディングは、質問に答えて修正を提案するために技術的なバックグラウンドを持つ誰かを必要とするソフトウェア会社でのカスタマーサポートの役割の理想的な候補者になります。

サポートで働くことの欠点は、最悪の場合、人々と対話しなければならない可能性があることです。不満や欲求不満のユーザーは、おそらくテクニカルサポートチームと話をすることに満足していないので、この役割を長く続けるには、多くの忍耐と厚い肌が必要になります。

役割の指導と執筆

私はいつも教えることが大好きだったので、これを可能にするエンジニアリングの役割に夢中になっていることに気づきました。複雑なトピックを分解して他のエンジニアに提示することを楽しんでいる場合は、追求できるキャリアパスがいくつかあります。

ソフトウェア開発者のための教育の役割

16.テクニカルライター

大学での3回目のインターンシップは、大企業のテクニカルライターとしてでした。かなり乾いた文章でしたが、毎日新しいことを学ぶのは楽しかったです。

それ以来、テクニカルライティングは文書化だけを意味するのではないことを発見しました。あなたは技術的なブログやコピーライティングを追求することができます。内部または外部のドキュメントを作成できます。デモアプリやチュートリアルを作成できます。これは作家にとって最も給与の高い分野の1つなので、検討する価値があります。

このルートに行く場合は、(明らかに)書くこと、複雑なアイデアを整理すること、そして新しいことを学ぶことに長けている必要があります。自己編集できるほど、作業の価値が高まります。そのため、作業を改善し、効率化するのに役立つツールに投資してください。

有料のコミュニティライティングプログラムのいくつかの執筆を開始し、ネットワークとポートフォリオを構築しながら、その経験をフルタイムの仕事に生かすことができます。

17.先生

ソフトウェア開発のキャリアから教師としてのキャリアへと転換する方法はいくつかあります。コーディングブートキャンプで仕事を教えたり、大学や高校で教えたり、egghead.ioのようなプラットフォームに参加したり、TeachableやEducativeを使って独自のコースウェブサイトを作成したりできます。あなたがたどる道はあなたの経歴とリスク許容度に依存します。

いずれにせよ、教師は新しい情報をすばやく学び、それを消化しやすい形式で生徒に提示する必要があります。あなたは彼らのレベルであなたの聴衆に会い、成功するために彼らとの信頼を築く必要があります。教育はソフトウェア開発よりも費用がかからないかもしれませんが、それは非常に充実したキャリアパスになることもあります。

18.トレーナー

企業研修は教育のもう1つの形態ですが、検討する価値もあります。トレーナーは、独立したコンサルタントまたは大企業の従業員として働く場合があり、通常は顧客のオフィスに出向き、特殊なソフトウェアの実践的なトレーニングを提供します。

トレーナーは深い技術的知識を持っているかもしれませんが、技術に精通したコミュニケーターである人もいます。企業のトレーニングは通常、教えるよりも効果がありますが、販売主導型の場合もあります。トレーナーは、会議で話したり、コミュニティワークショップを開催したり、トレーニングセッションの合間に交流会グループに出張したりすることがよくあります。

ステージに立って技術的な概念を提示するのが好きなら、これは理想的なキャリアパスになる可能性があります。

分析的役割

テクノロジー企業内の多くの役割には、分析スキルが必要です。これらの分野の多くは専門教育を必要としますが、ソフトウェアエンジニアリングから離れてキャリアをピボットする場合は、それらを検討する価値があります。製品に重点を置いているほとんどのエンジニアとは異なるペースで仕事をすることができ、上記のサポートの役割の一部と同様に、ビジネスの他の部分とやり取りできる場合があります。

19.データサイエンティストまたはエンジニア

これらの2つの役割(一部の企業はそれらを組み合わせています)には、ビジネスまたはその顧客がより良い意思決定を行うのに役立つ大規模なデータセットの使用が含まれます。

データエンジニアは通常、データの取り込みと組織のパイプラインに取り組みますが、データサイエンティストは、このデータを有用な結果にまとめる実験とアルゴリズムを設計します。データサイエンス(AI、機械学習など)は、数学、ソフトウェアエンジニアリング、統計にルーツを持つ巨大な分野です。

データサイエンスとエンジニアリングのためのコース、ブートキャンプ、大学の学位がありますが、数学の知識が豊富な場合は、自分でいくつかの基本を学ぶことができるかもしれません。そうでない場合は、最初に数値解析、行列代数、統計をブラッシュアップすることを検討してください。

これらのスキルは習得するのに長い時間がかかり、データサイエンティストの需要が高いため、この役割は十分に効果があり、すぐになくなることはないでしょう。

20.セキュリティアナリスト

情報セキュリティの役割は通常、何かがうまくいかないまでレーダーの下を飛びます。すべての開発者はセキュリティの脆弱性とリスクを認識している必要がありますが、セキュリティアナリストは、セキュリティの問題の修正を見つけ、カタログ化し、提案するために明示的に雇われています。

独立したコンサルタントとして働く人もいますが、大企業では、社内にチームが存在する場合があります。この役割は、技術、コンプライアンス、ビジネス、およびリスク評価のスキルを組み合わせる必要があるため、興味深いものです。

セキュリティの仕事もテクノロジーリーダーが満たすのが最も難しいものの1つなので、ここで仕事のセキュリティを確保できます。情報セキュリティは幅広い分野ですので、それを追求することに興味があるなら、あなたがたどることができる多くの道のいくつかをチェックしてください。

21.研究開発

研究開発で働くことは、ソフトウェアエンジニアリングのスキルを持つ人にとってはユニークな経験になる可能性があります。グーグルやアマゾンのような大企業は、研究開発チームによって実施された高リスクで潜在的に高報酬の実験に利益の一部を費やしています。これらの学際的なチームには、ソフトウェア開発者、データサイエンティスト、ビジネスアナリスト、およびプロジェクトマネージャーが含まれる場合があります。

優れた研究開発チームに入るのは難しいです。これらの役割は競争が激しい傾向があり、コーディングブートキャンプでは習得できない可能性のあるトピックに関する高度な専門知識が必要です。とは言うものの、一部の企業は、チームを完成させ、創造的な思考をミックスに投入するために、倫理的なハッカー、創設者、またはポリグロットを雇っています。

独立性と柔軟性

私たちの職業は、リモートワークや時にはサバティカルさえも可能にする職業ですが、あなたはあなたの人生にさらに柔軟性を求めているかもしれません。自分のビジネスを始める意欲がある場合は、週に4時間働き、1年のうち6か月を旅行に費やし、半分の時間をオープンソースプロジェクトに費やすことができるかもしれません。簡単なことではありませんが、ソフトウェア開発者として、あなたはほとんどの人に大きな足を踏み入れています。

22.フリーランサーまたはコンサルタント

より多くの自由を獲得する1つの方法は、9-5の仕事を辞めて、フリーランサーになることです。フリーランサーとして、あなたは彼らのためにコードを書くために時間単位であなたに支払う1人以上のクライアントにあなた自身を雇うでしょう。企業は多くの場合、フリーランサーを雇って特定の短期プロジェクトに取り組んだり、技術的負債を片付けたり、従業員が休憩したときにギャップを埋めたりします。

コンサルタントは、クライアントの特定の問題を解決するハイエンドのフリーランサーです。彼らはコードを書くかもしれませんが、彼らの専門知識や独自のバックグラウンドのためにしばしば持ち込まれます。フリーランサーとコンサルタントの境界線はかなりぼやけているので、セマンティクスにあまり巻き込まれないでください。

フリーランサーまたはコンサルタントとして始めることは最も難しい部分です。巨大なネットワークがない場合は、UpworkやToptalなどのプラットフォームを使用してクライアントを見つけることができます。これらのプラットフォームは収益を大幅に削減し、世界中の他の多くのフリーランサーと直接競争することを余儀なくされます。

あなたが評判とクライアントリストを構築するにつれて、あなたは紹介からより多くの仕事を得ることができるでしょう。クライアントはインターネットの匿名性ではなく信頼できる関係に基づいてあなたのところに来るので、紹介は素晴らしいです。フリーランスやコンサルティングが本当に上手になった場合は、各エンゲージメントの合間に休憩できるように、レートを十分に高くすることができます。

23.スタートアップ創設者

インターネットには、起業したソフトウェアエンジニアの話(1、2、3)がたくさんあるので、簡単だとか、いいアイデアだと思うかもしれません。

真実は、それは異なります。

スタートアップは通常、収入を生み出すのに長い時間がかかるので、この仕事をするためにあなたは数ヶ月または数年の間給料なしで生きる必要があるでしょう。とは言うものの、独自のソフトウェアビジネスを構築したいのであれば、そのメリットはほぼ無限です。

また、通常の勤務時間外に会社を始めることができる場合もあります。これを行うのは難しいですが(そして法的な影響があるかもしれません)、それは珍しいことではありません。負荷を共有する他の創設者を1人か2人見つけることができれば、成功の可能性が高くなる可能性があります。

最終的な考え

ソフトウェアエンジニアリングはエキサイティングな分野ですが、すべての人に適しているわけではありません。離れても、何か他のことをしようと決心しても、得たスキルが無駄になることはありません。

多くのブートキャンプの卒業生は、ソフトウェア開発の分野以外の仕事を探すことを恐れていますが、私はあなたがあなた自身の道をたどることをお勧めします。実用性(生きるために十分なお金を稼ぐこと)とあなたの興味のバランスを取り、うまくいけば、仕事が「仕事」のように感じられないキャリアパスを見つけることができます。

私はあなたの考えを聞いてみたいです。型破りな道を歩んだり、転職したりした場合は、Twitterでどう思うか教えてください。