ちょき☆ぱたん お気に入り紹介 (chokipatan.com)
第1部 本
ビジネス・管理&人事
エンジニアチームの生産性の高め方(田中洋一郎)
『エンジニアチームの生産性の高め方 開発効率を向上させて、人を育てる仕組みを作る』2024/10/26
田中 洋一郎 (著), 石川 宗寿 (著), 若狹 建 (著), 田中 優之 (著), 小澤 正幸 (著), & 2 その他
(感想)
ソフトウェア開発の世界でのエンジニアチームの生産性の高め方について、それぞれの著者が、自身の経験と専門性をもとに導き出した、生産性を向上させるための具体的かつ実践的な自説を解説してくれる本で、主な内容は次の通りです。
第1部 開発プロセスと生産性
第1章 Product Requirements Document
第2章 Design Doc
第3章 ブランチ・リリース戦略
第4章 リアーキテクトにおけるテスト戦略
第2部 開発チームと生産性
第5章 実践エンジニア組織づくり
第6章 エンジニアリングイネーブルメント
第7章 開発基盤の改善と開発者生産性の向上
*
2部構成になっていて、第1部『開発プロセスと生産性』では、開発プロセスの改善をどう実現するかについて、第2部『開発チームと生産性』では、チームの立ち上げ、スキルの向上、開発基盤の改善というトピックで、開発者とその組織に焦点を当てて解説してくれます。
第1部は、「第1章 Product Requirements Document」から始まります。
Product Requirements Documentは「製品要求文書」で、プロダクトの機能、性能、品質など、プロダクトへの要求事項を網羅的に記述するものです。
PRDの代表的な章立てとしては、概要、背景、製品原則、対象ユーザー、ユースケース、市場分析、競合分析、機能要求、その他の技術的要求、スコープ、KPI、リリーススケジュールおよびマイルストーン、マーケティング計画、などがあるそうです。
そしてこの章の「まとめ」には、「PRDは「何を開発するのか(What)」を明確にするための文書であり、プロダクト開発におけるガイドラインを提供します。」とありました。この本はこのように各章に簡単な「まとめ」があり、その章の簡単な復習ができるようになっています(本書内ではもっと詳しい解説があります)。
続く「第2章 Design Doc」では……
「Design Docで扱う主題は「どう実装するか」、つまり「実装したいことを実現するための設計」です。基本的には、実装担当の開発者や開発チームが書き、他の開発者が読んだ上で「その設計が妥当であるか、よりよい設計がないか」について議論します。」
……と書いてあり、ここでは次の5つの要素に注目します。
1)タスクにかかる工数や複雑度
2)コードベースや環境に対する習熟度
3)ステークホルダーや、関連する要素の数や種類
4)選択肢の多様性
5)セキュリティやプライバシー、法律などとの関連度
*
そしてDesign Docの構成例には、「タイトル、目次、目的セクション、背景セクション、設計の概要セクション、設計の詳細セクション、計画セクション、その他の関心事のセクション(セキュリティやプライバシー、パフォーマンスなどの懸念事項の説明)」などがあるようです。
「第3章 ブランチ・リリース戦略」では、統合、展開、構成管理などについての解説がありました。ちなみにそれぞれ……
1)統合(インテグレーション):個々の開発者が作成したソースコードを統合し、ビルド、テストを行うプロセス
2)展開(デプロイメント):完成したソフトウェアを実際の運用環境に配置し、利用可能な状態にするプロセス。
3)構成管理(コンフィグレーション):ソフトウェアの構成情報(ソースコード、設定ファイル、ドキュメントなど)を一元的に管理し、変更履歴の追跡や特定バージョンの再現を可能にするプロセス)
……です。
「第4章 リアーキテクトにおけるテスト戦略」では……
「リアーキテクト(既存システムやソフトウェアの再設計や再構築)におけるテスト工程では、以前と同じ要件(要求を満たすために定義されたソフトウェアの振る舞い、仕様)を満たすかの検証と、要求を満たすかの妥当性確認、すなわちステークホルダーからの期待に沿うかの確認が重要です。」
……などについて解説がありました。
そして第5章以降は、第2部『開発チームと生産性』という観点に代わり、事例紹介の比重が高くなっています。
「第5章 実践エンジニア組織づくり」では、エン・ジャパン株式会社のソフトウェアエンジニアリング組織を1から作り上げた過程で、専門家向けに等級・評価・報酬制度(給与設計)を作ったことの他、開発の進め方は「若干の例外的状況もありつつ、少人数のアジャイル開発チームが複数で、一つのプロダクトをつつきあう」状態になっていることが事例紹介されていました。
続く「第6章 エンジニアリングイネーブルメント」では、ナレッジワーク株式会社で取り組んでいる、ソフトウェアエンジニアのスキルアップや成果向上の施策についての事例紹介がありました。
ちなみにイネーブリングチームとは……
「イネーブリングチームは、特定のプロダクトや技術のスペシャリストから構成されるチームで、プロダクト開発チーム(『チームトポロジー』の言葉ではストリームアラインドチーム)にプロダクトや技術を教える役割を持つチームです。必要に応じて開発チームと密に協業することもあるでしょう。」
……そして「6-4 エンジニアリングイネーブルメントの活動の進め方」では……
「(前略)ナレッジワーク株式会社ではまず自分がやっている仕事をきちんと定義することから始めました。そして、その仕事を遂行するのに必要な能力や仕事の内容を言語化し、その能力向上施策や成果向上施策を定義するという順で進めました。」
この章では、次のようなアドバイスがとても参考になりました。
・ドキュメントは作成した後でそれを見つけられる状態にしておくことが重要(ドキュメントを集約し永続的なURLで参照できるようにすること)
・オンボーディング用のドキュメント・プロセスを整備しておく(すべてのエンジニアが行うことや読むべきドキュメントをまとめ、オンボーディングタスクとしてタスクリスト化し、新しく入った人が上から読んでいけばこなせるようにする)
・オフボーディングプロセスの整備(人がチームから離れる場合にやらなければならないことをまとめておく)
*
そして最終章の「第7章 開発基盤の改善と開発者生産性の向上」では、開発基盤の改善に責任を持つ専門チームの立場から、生産性の定義や、開発基盤の課題発見と改善に焦点を当てて解説してくれました。
開発者体験改善のための4ステップは……
1)抽象課題の発見:日常の開発や他の開発者から体験の悪い点を抽出する
2)課題の具体化と改善策の発見:抽象課題から実現の技術的アプローチを考える
3)ベンチマークの考案と検証:改善効果を示すためのメトリクスを考案する
4)改善の実行:他の開発者と協調しながら改善を実行する
……だそうです。そして……
「開発者生産性や開発者体験の向上の最終目的は、エンドユーザーまでの価値提供の速度を最大化すること」
……です!
『エンジニアチームの生産性の高め方 開発効率を向上させて、人を育てる仕組みを作る』……ユーザーニーズの変遷や技術の進歩など、環境が変化し続ける中でいかにして効率的に開発を継続していくかについて、専門家の立場から多くのヒントをもらえる本でした(もちろん本書内には詳しい解説があり、実践的に役立ちそうな多くのアドバイスがあります)。
エンジニアリングマネージャーやテックリードなど、開発生産性を改善したいと考えている方々はぜひ読んでみてください。
* * *
なお社会や科学、IT関連の本は変化のスピードが速いので、購入する場合は、対象の本が最新版であることを確認してください。
Amazon商品リンク
興味のある方は、ここをクリックしてAmazonで実際の商品をご覧ください。(クリックすると商品ページが新しいウィンドウで開くので、Amazonの商品を検索・購入できます。)
『エンジニアチームの生産性の高め方』