我々はいかにして不確実な環境下で成果を出すのか: 書籍レビュー"エンジニアリング組織論への招待"
まえがき
少し前は業務外でもコードを書いたり、某サイトに翻訳記事を提供したりしていたのだけれど、公私ともにばたついていることもありしばらくアウトプットができずにいました。それでも書籍は時間を見つけて読んではいるので、気軽なアウトプットの形態として書籍レビューを書いてみてはどうかと思いたちました。
本書の位置づけ
本書は、(ソフトウェア)開発、もしくは開発を遂行する組織に関する様々な課題、及びその解決策を、「不確実性に向き合う」という観点を通して列挙した書籍です。
エンジニアリング組織論への招待 ?不確実性に向き合う思考と組織のリファクタリング
- 作者: 広木大地
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/22
- メディア: Kindle版
- この商品を含むブログを見る
従って、入社すぐの新人のソフトウェアエンジニアよりは、少なくともプロジェクトを1つまたはいくつか経験し、
「いかにきれいなプログラムを書くのか、ということが唯一絶対の課題ではない」
ということを実感したあとに読むのが良さそうに思います。
また、本書では(設計・プログラミングといった)具体的ソフトウェア作成手法よりも、上流工程も含めてソフトウェア開発という行為が本質的にどのような問題を含んでいるのか、これらの問題を踏まえてソフトウェア開発行為そのものをどう設計・改善するかということの説明に力点が置かれています。
(一応補足しておくと、「いかにきれいなプログラムを書くのか」ということは、「きれい」が何を意味するのかということも含めソフトウェアエンジニアとして真っ先に考えるべき事項であり、もちろん軽視すべきではありません)
本書の概要
本書は5つのChapterから構成されています。
"Chapter 1 思考のリファクタリング"では、そもそも不確実性やエンジニアリングとは何か、これらに関連する人間の認知・思考パターンが紹介されています。
本書によると、
エンジニアリングとは、つまるところ、「実現」していくための科学分野
であり、この「実現」の過程で効率よく
「曖昧さ」を減らし、「具体性・明確さ」を増やす行為
を行うことが求められます。
エンジニアリングとの関係を抜きにすると、この章の内容は経験主義・仮説思考・システム思考・ベーコンのイドラといった、哲学・心理学や意思決定の方法論をはじめとした一般のビジネス書でもカバーされている範囲の事柄も多いです。
Chapter 1 における「人間(自分)の認知・思考」に関する解説に続き、これを踏まえて、"Chapter 2 メンタリングの技術"で、コードレビューやペアプログラミングといった場面での開発チームのメンバー、つまり他者との接しかたについて触れています。メンタリングのゴールとして、効率よく成果を上げるためにチームメンバーが「自ら考える人材」となることが挙げられています。コーチングの内容を多分に含まれているのではないでしょうか。
これに続き、「自ら考える人材」から構成される「自己組織化」された開発チーム("Chapter 3 アジャイルなチームの原理")や、このような開発チームのタスク・スケジュール等の管理("Chapter 4 学習するチームと不確実性マネジメント")が解説されています。いわゆるアジャイルとかスクラムの解説ですね。
最期の章である"Chapter 5 技術組織の力学とアーキテクチャ"では、開発チームを含む複数の部門からなる組織の設計・運営の方法論を「生産性」を軸に解説しています。この章では、不確実な状況においては、単に決められた成果物を効率よく作成する能力(「労働生産性」)ではなく、不完全な情報しかない中でいかに効率よく仮説検証を繰り返せるかという能力(組織としての「情報処理能力」)が重要であるとしています。また、OKRといった目標管理の手法や技術的負債に関する解説もこの章で行われています。
感想
様々なソフトウェア開発ツール・環境が以前とは比較にならないほど低コストで入手できる時代になり、ソフトウェアを実装するためのハードルは下がってきている現状を踏まえると、決められた内容のソフトウェアを「どう実装するか」というのと同等以上に、「どんなソフトウェア/システムが価値を持つのか」を見定めるために不確実な状況下で試行を繰り返し、価値規準の変化に合わせてソフトウェアを進化させていくことが重要になっていると思います。
本書はこのような観点から現代のソフトウェア開発に必要な考え方・概念が幅広く列挙されており、少し各内容間のつながりがわかりにくい点があるものの、必要に応じて関連書籍を読み進める出発点となる、総合カタログ的な使い方ができるのではないかと思います。例えば以下のような単語について、ちょっと気になっていた(/なった)のであればまとめて概要を理解することができるでしょう。
- エンジニアリング
- 経験主義・仮説思考
- システム思考
- 論理的思考
- ベーコンの4つのイドラ
- 認知的不協和
- PDCAサイクル
- 意思決定の遅延
- メンタリング
- 心理的安全
- SMART
- アジャイル開発・スクラム
- SECI/ダブル・ループ学習
- コンウェイの法則
- デリゲーションポーカー
- 技術的負債
- 取引コスト
- 目標管理・OKR
- 組織設計・マイクロサービスアーキテクチャ
- ユビキタス言語・腐敗防止層
エンジニアリング組織論への招待 ?不確実性に向き合う思考と組織のリファクタリング
- 作者: 広木大地
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/22
- メディア: Kindle版
- この商品を含むブログを見る
また、個人的には技術的負債に関してそれなりの紙面を割いて議論している点が興味深かったです。ここまで詳細に対応方法も含めて書いてある書籍は読んだことがありませんでした。
あと、コンウェイの法則やマイクロサービスに関しても触れてあり、以前苦労してマイクロサービスに関するマーティン・ファウラーのブログ記事を翻訳したことを思い出しました。もう4年近く前か...懐かしい。
関連書籍
電子版で読んだせいかわかりませんが、参考文献が書籍内にきちんとまとまっていなかったので、知っている範囲で列挙しておきます。何か参考になれば。
仮説思考・システム思考など
- 作者: 安宅和人
- 出版社/メーカー: 英治出版
- 発売日: 2014/09/01
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: ピーター・M・センゲ
- 出版社/メーカー: 英治出版
- 発売日: 2017/06/21
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 河瀬誠
- 出版社/メーカー: 日本実業出版社
- 発売日: 2015/01/23
- メディア: Kindle版
- この商品を含むブログを見る
アジャイル・スクラム・リーンなど
- 作者: JonathanRasmusson,西村直人,角谷信太郎
- 出版社/メーカー: オーム社
- 発売日: 2017/07/14
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
アジャイル開発とスクラム 顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント
- 作者: 平鍋健児,野中郁次郎
- 出版社/メーカー: 翔泳社
- 発売日: 2013/06/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 天野勝
- 出版社/メーカー: すばる舎
- 発売日: 2013/08/30
- メディア: Kindle版
- この商品を含むブログを見る
アジャイルな見積りと計画づくり ?価値あるソフトウェアを育てる概念と技法?
- 作者: Mike Cohn
- 出版社/メーカー: マイナビ出版
- 発売日: 2009/01/29
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 大野耐一
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2012/09/14
- メディア: Kindle版
- クリック: 1回
- この商品を含むブログを見る
- 作者: David J. Anderson
- 出版社/メーカー: リックテレコム
- 発売日: 2014/10/10
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
組織設計・運営など
- 作者: ロバート・K・グリーンリーフ,金井壽宏
- 出版社/メーカー: 英治出版
- 発売日: 2014/10/10
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: James O. Coplien,Neil B. Harriosn
- 出版社/メーカー: 翔泳社
- 発売日: 2013/08/23
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: Eric Evans
- 出版社/メーカー: 翔泳社
- 発売日: 2013/11/20
- メディア: Kindle版
- この商品を含むブログ (7件) を見る