インフラを見ることのほうが多いが、やっていることの一つにはソフトウェアアーキテクトっぽいものも入っていそうだなと思ったところに見かけたので読んでみることにした。
目次は以下。
1章を読み始めてすぐに出てくる、文言がとても気に入った。それは以下。
ほとんどの設計ミスは、知識不足ではなく、判断力不足が原因で起こる。 ソフトウェアアーキテクトのための意思決定術 p.2
知識は大事だとも書かれているが、それと同じくらい判断力も重要だということが説明されている。そして、大体のミスは知識不足ではなく、判断ミスであるということがとても印象に残っている。ここで、本書のタイトルに意思決定術とついているのかと納得した。
そして、どのような判断軸を持って日々の開発業務にあたると良いかが「質問」と「原則」によって示されている。それぞれ紹介されている5つの質問と7つの原則は以下。
5つの質問:
* 市場投入に最適なタイミングはいつか?
* チームのスキルレベルはどの程度か?
* システムパフォーマンスの感度はどれくらいか?
* システムを書き直せるのはいつか?
* 難しい問題はどこにあるのか?
7つの原則:
* ユーザージャーニーから全てを導く
* イテレーティブなスライス戦略を用いる
* 各イテレーションでは、最小の労力で最大の価値を加え、より多くのユーザーをサポートする
* 決定を下し、リスクを負う
* 変更が難しいものは、深く設計し、ゆっくりと実装する
* 困難な問題に早期に並行して取り組むことで、エビデンスに学びながら未知の要素を排除する
* ソフトウェアアーキテクチャの凝集性と柔軟性のトレードオフを理解する
この後はパート3では著者がマクロアーキテクチャと呼ぶ、システムアーキテクチャに従って個々のトピックが深掘りされて技術的な説明がされている。トランザクションやセキュリティ、スケーラビリティについてなどここは知識を蓄えるためのパートとしてとても勉強になった。知っていることも多いが、再度まとめて読めるのはとても勉強になる。
パフォーマンスの話やアーキテクチャのようなエンジニアリングの話だけではなく、UX やプロジェクトの進化についてなどにも責任を持って判断することが説明されている。ちゃんとプロダクトを作る時にはそのプロダクトの目的や戦略についても考えていくようにしていきたいなと思った。
まとめ
- 知識があるからこそ判断ができると思うので必要な知識は身につけたい
- 判断をしたからには責任をもつことを誓うぞ
- 判断ができるようになるためには技術以外も引き続き勉強しよ



