Compose Software Like Nature Would - RubyConf 2024
Many years ago I gave a talk that combined biology and software design to a local JavaScript meetup. It was an interesting concept so I proposed it as a talk for RubyConf 2024. Surprisingly it was accepted! The slides can be seen here.
Talk Summary
The only constant in software development is change. When our software cannot adapt, it turns into a big ball of mud. It becomes hard to reason about and hard to change. On the other hand, living organisms have the incredible ability to adapt to their environment. Over eons, they evolved innumerable adaptations. Let’s explore together how we can create adaptable, maintainable, and resilient software with some inspiration from nature.
The conclusions of the talk are:
- Build small components (modules, classes)
- Compose them together with messages (methods, events)
- Have strong boundaries (limit public interfaces)
- Use names, domain language and folder structure
- Push side effects to the edges
- Iterate and evolve your design over time
Resources
- Gary Bernhardt - Boundaries
- Dan North - Software that Fits in Your Head
- Rich Hickey - Simple Made Easy
- Jessica Kerr - Functional Principles for OO Development