O’REILLY Learning「Modern Software Engineering: Doing What Works to Build Better Software Faster」3 Fundamentals of an Engineering Approach

https://learning.oreilly.com/library/view/modern-software-engineering/9780137314942/

3 Fundamentals of an Engineering Approach

この業界は学ぶことに苦労し、進歩を遂げることに苦労しています。
この相対的な進歩のなさは、私たちのコードが実行されるハードウェアの驚くべき進歩によって覆い隠されてきました。

指標
安定性
・Change Failure Rate:ある変更がプロセスの特定の時点で不具合を引き起こす率
・Recovery Failure Time:処理中の特定時点の障害から回復するまでの時間
スループット
・Lead Time:開発プロセスの効率性を示す指標。1行の変更が「アイデア」から「動くソフトウエア」になるまでにかかる時間。
・Frequency:速度の尺度。どの程度の頻度で変更が本番環境に導入されているか。
いくつかの欠点、正しいものを作っているかの尺ではなく、正しく作っているかどうかだけを示す。

私たちは学習のエキスパートになるべきでしょう。
私たちの学問は創造的なデザインの学問であり、生産技術とは意味のない関係であることを認識し、受け入れ、代わりに探索、発見、学習のスキルの習得に焦点を当てるべきである。
これは、科学的なスタイルの推論を実践することです。
また、複雑性を管理するスキルの向上にも力を入れる必要があります。
私たちは、自分の頭の中に収まらないシステムを構築しています。
私たちは、大規模なシステムを構築し、多くの人々がそれに取り組んでいます。
これに対処するためには、技術レベルでも組織レベルでも、複雑性を管理する専門家になる必要があります。

学びの達人
・Working iteratively
・Employing fast, high-quality feedback
・Working incrementally
・Being experimental
・Being empirical

ソフトウェア開発とは、探求と発見の訓練。

複雑性を管理する達人
・Modularity
・Cohesion
・Separation of concerns
・Information hiding/abstraction
・Coupling

memoO'REILLY Learning

Posted by shi-n