#presentation #wip
Date : 2016/09/27
[https://www.youtube.com/watch?v=4Y0tOi7QWqM](https://www.youtube.com/watch?v=4Y0tOi7QWqM)
# なぜこの動画を見た
[[Monoliths vs Microservices is Missing the Point—Start with Team Cognitive Load - Team Topologies]] で
> Software that fits in your head
という quote が出てきたので動画を見ようと思った
# なんの動画か
> What is the goal of software development
> -> "Sustainably" minimise lead time to business impact
コードを書く際のコスト
- Writing code costs
- 確保しているエンジニアの従業員の費用
- Waiting for code costs
- コーディングを始めるまでの情報の取得など
- Chaging code costs
- 変更のコスト
- Undersanding code costs
- 変更の際などにコードを読んで理解するためのコスト
> Code should be stabilised or killed off
これを支援する2つの考え方
- Short Software Half-Life
- Half-Life = 半減期
- コードの半分がどの程度書き換わってしまうのかという時間を分析する
- Agile なチームでは、6週間ごとにこの半減期を迎えていた (削除して変更していた)
- Design Consideration
- write discreate components
- define component boundary
- define component purpose
- > code is telling what it is but not telling what it isn't or why it is
- define component responsibility
- Stewardship consideration
- write component tests and docs
- Tests are executable specification
- ドキュメンテーション (ADRのようなもの) があることでコミュニケーションが効率的になる
- optimise for replaceability
- 置き換え可能なライブラリを選択して結合度を下げる
- expect to invest in stabilising
- build a stable team
- static team = メンバーが変わらない
- stable team = オンボーディングの際には知識を早くインプットできるし、離任の際にはチームに知識を蓄えることができる
- Fits in my head
- multiple dimensions
- > you can only reason about something that fits in your head
- 大きな問題を分割して小さな部分問題に注目できるようにして他を明示的に ignore できるようにする
- mock や stub がたくさんあるという状況はいろんな依存があることを表現していて ignore しないといけないものがたくさんあるという意味で悪い傾向だと考えてる
# メモ
# 感想