Dynamic languages allow for a lot of flexibility in typing — sometimes too much. Here's how to add some guardrails to your code.
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.