Software, when it's complex is easy to break. But large systems are complex.
Software Dependencies (code that affects other part of larger application) can ruin your work.
There are ways to isolate code from affecting too much.
I'd use either software tree structure and relying upon abstractions instead of concrections, or better yet - an event bus.
When we use event bus, software components (aside from initialization) should depend ONLY on an event bus, that is... react to events and produce events and 'side effects' only. Side effects are things that affect 'outside world', for example text on a screen, or image on a printer. Input data, such as for example keyboard or mouse input or data from other sensors should also be event-ized.