# Audience
This applies to software developers at all levels. I use **Java** to demonstrate the code snippets, but this talk is about Software Design and is agnostic of programming language.
# Takeaways
- How **Isolated components** can makeup long-lasting structures and keep the rate of entropy-growth in check.
- How to use **MOM** process (Methods, Obstacles and Metrics), to build a case for your Refactoring story and pitch it to your team and Manager for funding.
- How **Exceptions** and **Mutation** hinder refactoring goals.
- How to eliminate **Exceptions** from your code using **ADTs (Algebraic Data Types)**.
- How to replace **Shared Global Mutable state on your Shared Codebase** with **Immutability** and **Data Transformations**.
- Demo of a real-world app with these problems and how applying these simple methods can change the face of this service, thereby reducing the cognitive complexity and organically boosting the testability.
- Metric-driven approach to objectively realize the results and improvements achieved.