新しいシステムのコードを書くとき、私は決して必要としないかもしれない不必要な複雑さを設計に導入したくありません。そこで、私はここで YAGNI に従っていますが、柔軟性を高める必要があるか、責任がより明確になるにつれてリファクタリングを行っています。これにより、私はより速く動くことができます。
しかし、若手の開発者には、いつリファクタリングを行うべきか、どこで設計を構築するべきかを認識できないという問題があります。既存の設計にコードを追加するだけです。
それで、これに取り組む最善の方法は何ですか?何も追加する必要がない場合でも、追加するときに彼らが従うべき良い例になるように、より将来性のある設計をより頻繁に構築する必要がありますか? それとも、コードのレビューや教育などをさらに進める必要がありますか? または両方?
この種の問題を経験したことのある人はいますか? どのように解決しましたか?