この記事は、CODING SANS社によって2020年3月に公開された「SOFTWARE DEVELOPMENT TRENDS 2020: LATEST RESEARCH AND DATA」の翻訳転載です。著者の許可を得て配信しています。
ソフトウェア開発は恐るべき速さで進化します。
今使用されているツールやフレームワークが、明日には時代遅れになっているかもしれません。私たちの目的は、業界のその時の一瞬を切り取って、過去にどのように進化してきたかを追跡し、業界がどこに向かっているのかを推測することです。
そういった技術的な変化をよりきちんと理解し、最大の課題やベストプラクティスを明らかにするために、2018年にさかのぼって「ソフトウェア開発状況レポート」を出すことにしました。
このレポートでは、調査参加者に対する活動をベンチマークするために必要な新鮮なデータをご紹介しています。開発者チームをよりよいチームにし、急速に変化する業界に対応するためのあらゆる知識についてもお話したいと思います。また、新しいデータを過去のデータと比較もしようと思います。
この記事では、レポートから20以上の興味深い統計について主に書いています。ソフトウェア開発の全容 2018年、2019年、2020年のレポートを読めば、ソフトウェア開発の状況に関して更に理解を深めていただけることと思います。
こちらから、レポート全文をダウンロードしていただけます。
チャートが読み込めない場合は、こちらからダウンロードしてください。
##ソフトウェア開発の管理
2020年の第1の課題は、知識の共有よりもキャパシティであることが明らかになりました。つまり、要求に対応し、バックログを管理することが、ソフトウェア開発における最大の課題となっているのです。
課題を克服するために皆さんがどのような取り組みをしてきたのか、聞いてみました。
###キャパシティ
最も多かった回答は、アジャイルメソッドの実装と既存のプラクティスの改善でした。SCRUMは、計画を改善するため大変人気があり、途中で稼働パーツを改善するためにもよく使われます。
より多くの開発者を雇用するということで問題を解決してきた人も多くいました。より多くの開発者がいればより多くのことが成し遂げられるからです。自分のチームのために開発者を採用したり、請負業者に外注したりして開発者を工面している方が多いです。
この質問に対する答えの中で私が気に入ったものは「仕事を辞める」でした。最初はその極端な回答にびっくりしましたが、もしあなたの会社が課題にきちんと向き合って解決していこうとしないのであれば、辞めるという選択肢が一番理にかなっていることでしょう。
###知識の共有
Wikiやドキュメンテーションを利用して、知識の共有を共有するのが今年はとても人気が出ています。簡単に共有できるからです。
ペアプログラミングやコードレビューは、今でもよく使われている手法で、開発者間で知識を共有する一般的な方法です。
また、開発者の課題と管理者の課題の違いも調べてみました。
その結果、以下のようなことが分かりました。
###管理職(マネージャー)
管理職のトップの課題は「キャパシティ」で、次いで「人材の採用」となっています。これは、ここ3年は変わっておらず、トップの課題はキャパシティや採用というところで安定しています。
###デベロッパー
開発者にとっての主な課題は知識の共有であり、これは昨年と同じでした。2018年の調査では、開発者はキャパシティの問題を課題だと思う人が多かったのですが、2020年には2位となりました。
開発者の採用に対しての関心が、管理職のそれよりもはるかに低いのは当然のことですが、開発者の中で時間管理を重要な課題として挙げた人の数には大きな格差があります。どうやら、一般社員にとっては、プロジェクトの計画を立てるための時間を作ることの方が重要な課題のようです。
###ソフトウェア開発のアウトソーシング
アウトソーシング開発は、上記のようなキャパシティの課題の解決策として人気があります。
過去1年間でソフトウェア開発を一部でもアウトソーシングしましたか?(2020年)
このデータは上記の回答を裏付けるもので、過去12ヶ月間に開発をアウトソーシングした企業がかなりの割合を占めています。
アウトソーシングした作業に対して満足していますか?(2020年)
上のグラフを見れば分かるように、ほとんどの人が結果に満足しています。たった17.17%の人が満足していないと答えています。
###リモートワーク
リモートワークはもう未来のものではなく、現在ではもうリモートワークを活用している企業もたくさんあります。
ほとんどのテック企業では何らかの形で行うリモートワークが認められています。
ご自身の会社ではリモートワークが認められていますか?(2020年)
リモートワークの導入を計画している企業が増えており、全体的には、ほんの数年前よりも今の方がよりリモートワークに対して寛容になってきています。
##ツールやテックトレンド
###プログラミング言語
ソフトウェア開発の現状報告書で最もわくわくする部分は、プログラミング言語がどのように上昇し、上昇し、下降していくかを見ることです。
ご自身の会社で主に使っているプログラミング言語は?(2018年~2020年)
JavaScriptは59.08%と依然として突出していますが、人気は少し下降気味です。
Javaは少し順位を落としましたが(34.96% -> 29.04%)、2位をキープしています。
しかし、TypeScriptは驚異的な躍進を遂げ(15.83% -> 26.32%)、2位に僅差で迫りながらも3位となっています。基本的にはJavaScriptのスーパーセットです。TSの人気が高まってきていますが、JSの人気は全く衰えていないようです。
Pythonが23.89%、C#が23.75%と頭打ちで、どちらもTypeScriptに負けています。
あまり使われていない言語の中では、SwiftとRubyがここ数年で順位を落としています。
これは現時点での話ですが、プログラミング言語の今後についても聞いてみました。
今後1年で新しいプログラミング言語を使うとしたらどの言語を選びますか?(2018年~2020年)
35%以上が新しい言語を追加する予定はないと答えています。
ただ、2020年に使用されるプログラミング言語として一番検討されているのはPythonとなっています。これは例年通りの結果です。
TypeScriptの人気があることが分かります。多くの人が2019年からTypeScriptを使い始めている人や、今後使用したいと思っている人もたくさんいます。
一方、Goは若干人気に陰りが見えていますが、それでもランキングの上位に入っています。
マイナーなプログラミング言語の中では、Rustがますます人気が高まる一方でScalaとRubyは2019年以降、だいぶ人気は落ちています。
###ツール
開発者チームは多種多様なツールを使用しているため、それらのツールをグラフで示すのは困難を極めます。業界をリードするツールがいくつかあり、それに続いて、あまり普及していない多くのツールがロングテールになったりもします。
チャートを見ると、「その他」のカテゴリーが、最も人気のあるツール以外のツールよりも人気が高い傾向にあることがわかります。これは、それを答えに選んだ人が少ないロングテールツールをまとめたカテゴリーです。
次に、最も人気のあるプロジェクト管理ツール、コミュニケーションツール、SCMツールを紹介します。
コミュニケーションツールで注目すべきは、Microsoft Teams(5.61%→16.74%)とZoom(2.3%→13.16%)が大幅に人気が出たことです。これは、リモートワークを行う企業が増えているということを明確に表しています。
##デベロッパーの採用とデベロッパー人材の確保
開発者の採用は、管理者にとって重要な課題であり、現在では第2位となっていますが、毎年上位に入ってきます。
ここでは、採用基準や、人材を惹きつけたりモチベーションを高めたりするための人気の方法など、テック企業の採用に関しての突破口を解説します。
人材を採用するときの最も効果的な方法は?(2018年~2020年)
ここ数年、最も効果的な採用方法は変わっていません。従業員紹介や社内リクルーターを使って採用するのが最もポピュラーです。
注目すべき変化があります。それは、人材紹介会社やオンラインの人事ポータルサイトが台頭してきているというところです。こういった手段がエンジニアを採用するためにより広まっているということです。
採用する開発者に対して企業が最も重要だと思っている要件を見てみましょう。
上位の4項目はここ数年変わっていません。
「学習意欲」は依然としてテック企業が求める最も大切な要素となっています。2020年には「社風が合うこと」が僅差で2位となり、「技術的スキルの評価」は3位、次いで「職務経験」が続いていますが今年は少しランクが下がりました。
最も興味深いのは、「ソフトスキル」がエンジニアを評価する上で重要な要素になりつつあることです。最高に優秀なエンジニアの価値が下がってきていることです。エンジニアを採用する際には、ソフトスキルがより大きな役割を果たすようになってきています。
「学校での教育」という項目はあまり重要視されていません。優れた開発者は、学校ではなく実践の中で鍛えられます。
多くのマネージャーが、この業界で人材が不足している中において、開発者をなかなか確保できないという問題に直面しています。次に、2020年の開発者のモチベーションを高めるための人気の方法を紹介したいと思います。
どのようにソフトウェア開発者のモチベーションを保っていますか?
状況は2019年とほぼ同じで、「チームの団結力」と「熱意を持てる仕事」がリードしています。
研修のランクは少し落ちましたが、昇進とストックオプションは2020年でもあまり変わっていません。
今年は、この指標で優秀な人材と一般的な人材を比較してみましたが、その結果、若干の変化が見られました。
どのようにソフトウェア開発者のモチベーションを保っていますか?(2020年)
「挑戦的な仕事」がトップパフォーマーの中では順位が高く、「チームの団結力」は2位に後退しています。彼らは「自律性」をやや重視し、「刺激的な製品を作る」ことにモチベーションを見出しています。
##パフォーマンス管理
優秀な人材がいる開発チームと一般的な人材がいる開発チームの違いをもっと見てみましょう。
###どのようにソフトウェアチームはパフォーマンスの成功度を判断しているのでしょうか?
どういう基準でデベロッパーのパフォーマンスを評価しているのでしょうか?(2020年、優秀な人材と一般的な人材)
お分かりのように、優秀な人材の第一の判断基準は「機能しているソフトウェア」です。「完了したタスク」は二番目の判断基準となっています。この点での優秀な人材と一般的な人材の差は小さいですが、これは無視はできません。
しかし、優秀な人材はコードの可読性とテストカバレッジをはるかに重視しています。この結果は決定的です。高品質なコードを提供するためには、より多くの努力をする価値があるということを示しているのです。
###納期の問題の原因
納期の問題や、優秀な人と一般的な人の開発チームの問題点の違いを取り上げました。
あなたのチームにとって一番の納期の問題の原因は何ですか?(2020年、優秀な人材と一般的な人材)
優秀な人材は、「成果物が明確に定義されていないこと」と、「正しい見積もりを行うこと」に対して多くの問題を抱えています。
一般的な人の最大の問題は、「非現実的な期待」であり、次いで優秀な人材と同じ2つの課題を問題視しています。また、チーム内の主要なスキルが不足していたり、外部のチームとの調整がうまくいかなかったりするという問題にも直面する可能性があります。予算に関してはあまり問題の原因にはなっていないようです。
あなたのチームにとって一番の納期の問題の原因は何ですか?(チームマネージャー VS デベロッパー)
マネージャーとデベロッパーの観点から納期の問題を見ると、デベロッパーの方が、明確に決められた成果物がない状況や、刻々と変化する状況に直面することがはるかに多いでしょう。
ほとんどのマネージャーが、非現実的な期待、見積もり、要件の優先順位付などの問題に直面しています。
##まとめ
今回のこの記事では、当社の調査で収集したデータのほんの一部をご紹介しました。
このレポートを毎年発行し続け、継続的に出てくるトレンドが何年にもわたって業界全体をどのように形成しているかが分かり、とても興味深く思っています。