Organizuj kod po funkcjach/domenach (a nie tylko po warstwach technicznych), wystawiaj małe wewnętrzne API między modułami i zabraniaj “sięgania” do wnętrza innych modułów importami. Dodaj ownership (kto utrzymuje co) i checki architektoniczne (granice modułów), żeby granice nie rozjeżdżały się w czasie.