Modular
Avoid scripts and systems directly dependent on each other.
Editable
Scriptable Objects makes it possible to make changes to your game at runtime.
Debuggable
Modular code is easier to debug than tightly coupled code.