An event-driven architecture can reduce dependencies, increase safety, and make your application easy to scale. But designing your systems and topics is a non-trivial task
While the future may be a mystery, you can design software to accommodate future changes. But how much future-proofing gets in the way of good design?
When rewriting software in a new language, how do you test that your new and old programs do the same thing?
While computing has changed a lot in the 20 years since the SOLID principles were conceived, they are still the best practices for designing software.