IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

グーグルのクラウドを支えるテクノロジー

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第60回 ソフトウェア開発者の生産性に影響する要因の分析(パート1) (中井悦司) 2019年6月

はじめに

 今回からは、2019年に公開された論文「What Predicts Software Developers' Productivity?」を紹介していきます。この論文では、Google、ABB、National Instrumentsの3つの企業のソフトウェア開発者を対象としたアンケート調査を元にして、ソフトウェア開発者の生産性に影響する環境要因の分析を行っています。ソフトウェア開発の生産性を客観的に評価するのは難しいものですが、この論文では、統計的手法を用いた分析により、いくつかの興味深い結果を導いています。今回は、まずは具体的な調査手法についての解説を行います。

生産性の定義方法

 ソフトウェア開発者の生産性に関する研究は古くから行われており、自己評価、チームメイトによる相互評価、リポジトリへのコミット数、そして、書いたコードの行数など、さまざまな指標が提案されてきました。容易に想像できるように、それぞれに固有の課題があります。最初の2つは、評価者による主観が入る可能性があり、その一方で、コードの行数で生産性を測るというのも客観的な指標とは言えません。時間を掛けて生み出した革新的な数行のコードと、単調作業で量産した冗長なコードについて、これらの生産性を行数だけで比較するのは公平とは言えないでしょう。このような前提を踏まえた上で、この論文では、次の文言に対する自己評価(自分に当てはまるかどうかを5段階で回答)を生産性の評価指標として選択しています。

・I regularly reach a high level productivity.(私は、定期的に高いレベルの生産性を実現している)

 自己評価を選択した理由としては、開発者の職種に依存しない汎用的な評価が可能で、ソフトウェア開発者以外の職種に対する同様の調査との比較ができる点が挙げられています。また、上記の文言については、8種類の候補を用意した後に、複数の開発者にそれぞれの解釈をヒアリングして、調査チームが想定する内容と一致するものを選択したそうです。解釈の内容については、ここでは触れませんが、特に「regularly(定期的)」と「high level(高いレベル)」という表現を用いることで、「自己評価における基準を回答者自身が設定して、頻度の観点も含めて評価する」という効果を狙ったことが説明されています。

自己評価と「客観的」評価の関係

 前述のように、「一定期間に書いたコードの行数」というのは、ソフトウェア開発者の生産性を測る上で必ずしも適切な指標とは言えませんが、この論文では、上述の自己評価との関連性を確認しています。具体的には、5段階による自己評価の結果を1〜5の数値に変換した上で、「一定期間に書いたコードの行数」、および、「一定期間のコミット回数」という2種類の数値データとの相関を線形モデルで評価しています。この評価を行う際は、ジョブレベル(能力に応じた職責のレベル)に対する依存性も考慮しており、最終的な結果は図1のようになります。

fig01

図1 自己評価と「客観的」評価の関連性(論文より抜粋)

 この図では、「Model1」〜「Model3」の3種類の結果が示されていますが、それぞれ、ジョブレベルに加えて、「コードの行数」「コミット回数」「コードの行数とコミット回数の両方」を説明変数として、自己評価に対する影響度を示したものです。詳細な説明は割愛しますが、結論としては、「コードの行数」「コミット回数」については、これらが大きいほど自己評価も高くなり、一方、ジョブレベルについては、レベルが高いほど自己評価が低くなるという関係が得られています。ただし、実際の影響度はかなり小さく、「コードの行数」や「コミット回数」は、自己評価のごく一部を構成する要素と結論付けられています。また、ジョブレベルについては、レベルの高い開発者ほど自己評価が相対的に低くなるという心理的な要因が示唆されます。

生産性に影響する要因の候補

 次は、本来の目的である「生産性に影響する要因」の調査ですが、これについては、「I often work remotely for carrying out tasks that require uninterrupted concentration(一人で集中する必要がある場合、リモート環境で作業に取り組むことがある)」など、いくつかの質問項目について、それに当てはまるかどうかを5段階で回答してもらいます。そして、これらの回答と前述の生産性に関する自己評価の相関を線形モデルで評価します。ここで用いる質問項目については、過去の類似の調査で用いられた100以上の項目を元にして、類似の質問を1つにまとめるなどの作業により、最終的に48の質問に集約しました。
 また、実際のアンケート調査では、「この質問の回答には〇〇を選択してください」と言ったダミーの質問がまぜられたそうです。これは、真剣に回答していない回答者を見つけ出すもので、これらの質問に指示通りの回答が示されていない場合、この回答者からの回答は分析対象から除外したということです。

次回予告

 今回は、2019年に公開された論文「What Predicts Software Developers' Productivity?」から、ソフトウェア開発者の生産性に関するアンケートを用いた調査手法の解説を行いました。次回は、実際の調査結果とその考察について、解説を進めていきます。

Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes