We started from a big application covering multiple functionalities for a large variety of purposes, that led to a never-ending story of difficult releases and unsatisfied customers. Aiming for faster, iterative application delivery strategy, balancing in flight project demands with future tech goals, we went through a challenging transition while continuously learning and adapting.
To help you learn from our hard-earned wisdom, I will share in this talk our meaningful experiences. This talk will go over my experience as an architect and opinion leader, highlighting a few of the key aspects and decisions we needed to make based on general theories:
- Incremental evolution through refactoring or Big Bang rewrite?
- Our choice was Componentization through refactoring and gradual replacement with rewrite. We could keep some level of engagement with customers and the rest of organization.
- DRY versus LOOSE COUPLING dilemma
- It was a dramatic and unpopular decision to copy a large amount of code just to be step in the right direction.
- Custom Code or Third party software
- Having customers activating in highly regulated domain like Pharma, there was a deep seeded belief in the organization that we should produce all the software in house for compliance and security reasons. Moving away from that closed system approach was a sort of paradigm switch in our organization.
- “SaaS first” versus “On premise first”
- This was a tough business decision recently made with confidence that the software team will be able to deliver.