Why should I keep the existing code base? - What opportunities exist to improve it? AR E R EWRITES ALWA YS A BAD IDEA? Photo by Chris Lawton on Unsplash - Bias AGAINST: - Are the improvement opportunities really there? - How much work are these “improvements” compared to a rewrite? Photo by Ilkka Kärkkäinen on Unsplash
by Chris Lawton on Unsplash - There is a desire to functionally change the application - There are no small steps to be found - The skills are not in the team and you don’t wish to acquire them 0. 1. 2. Reasons to Rewrite
by Chris Lawton on Unsplash - There is a desire to functionally change the application - There are no small steps to be found - The skills are not in the team and you don’t wish to acquire them - The service is small and scope well- defined 0. 1. 2. 3. Reasons to Rewrite
problem - “End-to-end but very thin” - Best bet is a functional spike - Can help you figure out how to deliver value early AR E R EWRITES ALWA YS A BAD IDEA? Photo by Chris Lawton on Unsplash Photo by Ayoola Salako on Unsplash
change the application - There are no small steps to be found - The skills are not in the team and you don’t wish to acquire them - The service is small and scope well- defined AR E R EWRITES ALWA YS A BAD IDEA? Photo by Chris Lawton on Unsplash 0. 1. 2. 3.
you’re at peak Dunning-Kruger #sorrynotsorry - It’s probably “so complicated” for a reason - Treat the first phase as a discovery or feasibility stage - Prepare yourself to walk away AR E R EWRITES ALWA YS A BAD IDEA? Photo by Chris Lawton on Unsplash Photo by Hobi industri on Unsplash
A BAD IDEA? Photo by Divani on Unsplash - MultiK could work - But we were only dealing with 2D arrays - Kotlin / Spring Boot - Numerical packages in Kotlin - MultiK and SMILE - SMILE overpowered
data class WaffleSales(val type: String, val price: Int, val sat: Saturday, val sun: Sunday) val stroop = WaffleSales("stroop", price = 2, Saturday(15), Sunday(20)) val belgian = WaffleSales("belgian", price = 3, Saturday(25), Sunday(18)) val weekendSalesData = listOf(stroop, belgian)
// 20.0855 val naturalLog = ln(eToPower) // Log to base e of 20.08 println(naturalLog) // 2.9997 (about 3) // other handy functions // pow() abs() sqrt()
functionally change the application - There are no small steps to be found - The skills are not in the team and you don’t wish to acquire them - The service is small and scope well- defined AR E R EWRITES ALWA YS A BAD IDEA? Photo by Chris Lawton on Unsplash 0. 1. 2. 3.
context of your company and team - Unfamiliar technology = more risk - Add value as early as possible - Conduct experiments - What so your users / stakeholders think? If you really must rewrite AR E R EWRITES ALWA YS A BAD IDEA?