14 レガシーコードからの学び
内容
紹介した9つのプラクティスによって保守可能なコードができ、それによって保守コストを下げることができ、それによってユーザーに価値を提供し続けられることを知った。
特に、テストファースト開発、リファクタリング、ペアプログラミング、設計スキル、継続的インテグレーションといったXPの技術プラクティスが、開発成功の鍵。
アジャイルもXPもソフトウェア開発者がソフトウェア開発のために始めたものであるにもかかわらず、それが正しく定着していない。
オブジェクト指向プログラミングが一般的になったのは1990年代だが、うまく活用し保守性を高められた人は少なかった。
スクラムはXPを支えるはずだったが、技術的なプラクティスはそれほど重きを置かれず、マネジメントプラクティスになってしまった。
経験上、アジャイルの本質的な価値は技術プラクティスを適用することによって得られる。だから技術プラクティスはマネジメントプラクティスと同じくらい重要。
プラクティスを正しく使うためには根本にある原則を理解する必要がある。開発者もマネージャーもそれを理解する必要がある。
ここで紹介したプラクティスを「習得する」のは一つのゴールと言える。
学び
- アジャイル開発シーンには紹介されたプラクティスがいくらか適用されていることが少なくない。
しかしそれを開発者が意識してない場合があり、それぞれのプラクティスの習得に向けた動きが出来ていないことは多い。 - 開発者が意識できていない理由として、以下が思い当たる。
- プラクティス適用を明言していない。明言しないと、フォーカスした取り組みが難しくなる。
例えば、経験の浅いメンバーへの教育が出来ないし、いちメンバーとして習得に対しての学習効率も悪い可能性がある。
プラクティスの適用は、チーム内のレベル感は置いておくとしても、明言することが大事だと感じた。 - また、プラクティス習得をトライはしたが、納期の関係などにより、未熟なまま一時中断し、そのまま陳腐化してしまった場合も考えられる。
- プラクティス適用を明言していない。明言しないと、フォーカスした取り組みが難しくなる。
- プラクティスの習得には時間がかかるが、習得しないままだと本質的なプロセス改善はできない。既存の慣れた方法で開発しながらも、同時に練度を上げる方法を考えて進めたい。
学びを活かすアイディア・行動
- 現場で簡単な案件をペアプログラミング。
- 現場でCI/CD環境構築