オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

優れたソフトウェアエンジニアの特徴をマイクロソフトのエンジニアにインタビューした研究

»

本ブログは、2015年の論文"What Makes A Great Software Engineer?"をまとめたものです。原文は、こちら(ACM Digital Library: 購読が必要)。著者のワシントン大での同タイトルの博士論文はこちらから読めます。

Li, Paul Luo, Amy J. Ko, and Jiamin Zhu. "What makes a great software engineer?." 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering. Vol. 1. IEEE, 2015.

マイクロソフトの経験豊富なエンジニア59人を対象とした対面のインタビューの実施方法、結果、そこからの示唆をまとめたものです。優れたソフトウェアエンジニアの属性を53個特定し、その分類と属性がソフトウェア開発に与える影響について分析しています。

調査対象者

マイクロソフトの13の部門に在籍する、Software Development Engineer Level 2 (SDEII)以上の経験豊富なエンジニア59人が調査対象です。

53個の属性と属性の4分類

53個の属性は、エンジニアの内面的な特性意思決定能力チームへの影響ソフトウェア製品への影響という4つのカテゴリーに分類されています。生成AIによる訳ですが以下のとおり。

内面的な特性
改善、情熱、公平性、データ指向、体系性、生産性、忍耐力、勤勉さ、好奇心、リスク許容度、適応性、自立、自己認識、整合性、実行力、誇り、創造性、集中力

意思決定能力
対人関係と組織理解、専門知識、顧客とビジネス理解、ツールと素材理解、エンジニアリングプロセス理解、メンタルモデル更新、全体と詳細把握、複雑さ処理能力、状態と結果のモデル化

チームへの影響
共有コンテキスト構築、共有成功、安全な環境構築、誠実さ、コンテキスト統合、礼儀正しさ、コンテキスト獲得、客観性、メンタリング、課題提起、模範、期待管理、評判、断固たる態度、助けを求める行動、相互扶助、親しみやすさ

ソフトウェア製品への影響
エレガンス、創造性、先見性、トレードオフ、注意深さ、適合性、進化性、長期展望、慎重な構築

ソフトウェア開発において重要な理由

以下の理由で重要とされています。

  • 優れたソフトウェア開発: エレガントで創造的なソフトウェアは、これらの属性を持つエンジニアによって開発されます。例えば、データに基づいた意思決定は、確証バイアスを回避し、より良いソフトウェア開発に繋がります。

  • 効果的なチームワーク: チームメンバーとの良好なコミュニケーションは、知識の共有や相互の成功を促進し、チーム全体のパフォーマンス向上に貢献します。

  • 組織全体の成功: 個々のエンジニアの成功だけでなく、チームや組織全体の成功にも大きく貢献します。

属性どうしの依存

属性間でも影響を及ぼしていることが報告されています。たとえば以下の点です。

  • 情熱継続的な改善は、エンジニアが常に新しい知識や技術を学び、成長するための原動力となります。

  • 実用的な意思決定モデルの構築は、データ指向や全体と詳細把握などの属性と関連し、複雑な状況下でも最適な判断を下せるようにします。

  • チームワークを高めるためには、コミュニケーション能力、共感力、リーダーシップなどが重要となります。

コミュニケーション、意思決定、誠実さに関する項目が多い印象です。ソフトウェア固有と言えそうなものはそれほど多くない印象です。強いて挙げるならば新しい知識や技術を学んで成長するところでしょうか。個々のインタビューの中では出てきたかもしれないのですが、アルゴリズムに詳しい、ユーザの立場にたってエクスペリエンスを考えられるといった項目は項目としては挙がっていないところが少し気になりました。

Comment(0)