location_city Online schedule Mar 26th 12:30 - 12:50 PM IST place Zoom people 41 Interested

_As a Dev, I need to Refactor, to make codebase Refactorable_. Refactorability as defined by Martin Fowler is, "Ability to alter internal structure without changing its external behavior". This applies to each atomic component of an app. Let's achieve our dev story through a unique, yet most effective Method, **Component Isolation**.

Let's huddle over persuasive arguments against _Obstacles_ that hinder our goal causing entanglements among components, and _Metrics_ that measure our success.
Let's refactor a real-world app to and witness how Isolated components make-up long-lasting structures.

Outline/Structure of the Demonstration

## Goal

- **As a Dev, I need to Refactor, to make codebase Refactorable** (That's a recursion!)
- Refactoring is not a one-time activity. And every time you refactor or add a new feature, it's your responsibility to leave the codebase in a state such that it's Refactorable.
- This is just an agile way to say I want to build my components like Lego pieces, Components that can be reused, replaced, and most importantly Composed to form different structures.
Let's follow the [**MOM**](https://www.salesforce.com/blog/how-to-create-alignment-within-your-company/) process to manage our goal. Believe me, Managers love it when you do talk to them in their own language. There are high chances they fund your refactoring in the same release!

Learning Outcome

- 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.

Target 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.


schedule Submitted 9 months ago

Public Feedback