Customizing Odoo without painting yourself into a corner
Odoo's strength is that apps share one database and data model, so sales, inventory, accounting and manufacturing stay consistent. Its weakness is that careless customization makes major version upgrades expensive. We favor small, well-scoped modules that inherit views and models instead of overwriting them, and we avoid patching core code. Small, reversible changes also make it easier to compare behavior against the standard apps.
Before writing a module we check whether Studio, automated actions, server actions or an OCA community module already solves the need. Each custom model or override is documented with the business reason, so whoever upgrades the system later knows what can be dropped. Reviews of Studio customizations are part of the process, because exported Studio changes can hide logic that is hard to trace. Where a decision affects accounting, we involve your finance lead before any code is written, and we keep a changelog that lists each overridden method and why.