高度なスキルを持つソフトウェア開発者に対する需要は何年も前から急増し、止まる兆候がありません。専門家は、ソフトウェア開発者市場は今後10年間で21%成長し、他の職業の平均需要よりもはるかに高くなると予想しています。
ソフトウェアエンジニアリングは、雇用機会は得やすいかもしれませんが、差別化がますます重要になっている競争の激しい分野です。最近の開発者は、さまざまな言語やプラットフォーム、経歴、およびチームに貢献する独自の方法(または競合する応募者から際立つ方法)に重点を置くことができます。では、時間とエネルギーをどこに投資するかを決定するにはどうすればよいでしょうか。以下では、ソフトウェア開発スキルの向上、知識の拡充、専門分野の決定を行う3つの方法を紹介します。
すべての言語とフレームワークに習熟する時間の余裕は誰にもありません。もちろん、いくつかの新しいソフトウェア開発テクノロジでスキルを高めるのもいいでしょう。ただし、プロセス管理、ワークフロー、プロジェクト管理、ツールの準備、チーム文化、コミュニケーションなど、開発の全体像を見ることを忘れないでください。今現在、自分にとって有意義ないくつかの領域を特定し、小さい目標をいくつか設定します。参考例を以下に示します。
自分が知らないことや、人間的成長またはキャリアアップのために知っておくべきことを知ることで、言語やフレームワークに関する知識の範疇を超えた最も重要な分野に注目することができます。
あなたは、開発者として、正式な教育から得た特異な専門知識、活用したすべての学習機会、分析的な問題解決(そして多少の試行錯誤)に富んだキャリアを備えた豊かな源泉となる人材です。同僚の特異な専門知識を活用してはいかがでしょう? コラボレーションは、他のソフトウェア開発者から学び、多様な方法で業務を遂行できる優れた方法です。
ペアプログラミングは、ソフトウェア開発スキルを向上させる優れた方法ですが、必ずしも実用的ではありません。幸い、SlackやStack Overflowなど、さまざまなコラボレーションツールがあります。これらの製品の多くでは、プロジェクトの途中で、または特に困難な問題に取り組んでいる間に、フィードバックを求めることができます。
多くの開発者はセキュリティをスキルと考えていませんが、それは間違いです。セキュリティが身についていればセキュアなコーディングによって、コードの書き込みが迅速になり、苦労して土壇場で修正を加える(さらに悪くすると、侵入しやすいコードベースをリリースする)必要がなくなります。
セキュアなソフトウェア開発スキルに対する需要は高まり続けています。そのスキルを学ぶことは、競争の激しい就職市場で自分を差別化する手軽な方法です。Kaspersky Labの2019 IT Security Economics Reportは、大企業と中小企業の66%が今後1年間に専門ITスタッフへの投資を増やす計画をしていると指摘しています。
その理由は、セキュリティへの投資が利益を生むからです。調査によると、内部のセキュリティ・オペレーション・センターを備えていることで、データ漏洩の財務上の影響はほぼ半減(140万ドルから67万5千ドル)しました。このようなインシデントの防止に役立つ能力を持つ開発者は、医療や金融など、従来リスク回避の傾向がある業界の企業だけでなく、データを扱うソフトウェア開発組織にとっても価値があります。以下では、手始めにやるべきことを示します。
あらゆる地域のあらゆる企業がセキュリティに悪戦苦闘しています。専門家のガイダンスが既に利用可能なのに、車輪の再発明の必要があるでしょうか。Building Security in Maturity Model(BSIMM)は、ソフトウェア・セキュリティの詳細を知るうえで役立つツールです。BSIMMは現実に開発組織が実践している100以上のソフトウェア・セキュリティ・アクティビティを示しています。無料でダウンロードできるので、影響力の大きいソフトウェア開発スキルへの取り組みに励んでください。
ソフトウェア開発者なら、セキュリティ上の問題のない技術など存在しないことを知っています。オープンソース・ソフトウェアはその好例です。オープンソース・プロジェクトは、大勢の目に触れているにもかかわらず、広く使用されているオープンソース・コンポーネントで新たな脅威が日々発見されています。学ぶべき事柄の目録を作成し、各フレームワーク、言語、サードパーティサービス、オープンソース・コンポーネントに固有のリスクについて詳しく学習してください。
ユースケースを書くことは、日常のプロセスの一部です。それなら、悪用ケースを書く習慣も取り入れてはどうでしょうか。攻撃者の目線で考える訓練をするのです。「なぜ自分のコードをエクスプロイトの対象にしようとするのか?」、「どうやって侵入するのか?」といったことを自問します。ハッカーの視点に立って、アプリケーションにセキュリティを組み込みます。
コードレビューは優れた方法ですが、頻繁に行うものではなく、一貫性に欠ける可能性があります。代わりに、コードレビューを自動化してオープンソースの問題を表面化させ、ビルドプロセスと統合するツールを探してください。セキュア開発向けのIDEプラグインを見つけると、さらに有益です。トリアージの時間を短縮し、膨大な数の問題がデスクトップの外部に流出する前に修正する方法を学びましょう。言うまでもなく、実践から学ぶことがソフトウェア開発スキルを高める最善の方法です。