When custom development is the right answer
Configuration covers most NetSuite needs. Custom code should only happen when configuration genuinely cannot meet the requirement.
Where custom earns its keep: complex approval routing SuiteFlow can't express, integrations with non-standard systems, calculation logic at transaction save time, mass-data operations beyond saved searches, automation triggers on state changes, custom UI components. Every customization adds maintenance cost — the test is whether value justifies the lifetime burden.