To Retrofit or Rewrite
That’s often a big question to have to ask. It’s basically asking exactly how much time can you afford to do this thing that you want to do? Is there only enough time and manpower to do incremental changes? Do you have enough budget to halt progress while the rewrite takes place.
What are the different trade offs?
As much as I tend to look at something and say: “Yep, that’ll just have to be rewritten from scratch”, there’s always a way to make it a choice. It’s just a matter of seeing the light at the end of the tunnel and figuring out which path you want to take to get there.
For the current refresh we’re undergoing now, it’s going to be a retrofit change. We’re adding in the concept of a bundler (Webpack) in preparation for the day when we will be using it a bit more heavily (at the moment it’s just there to allow us to use some better CSS constructs). We’re also starting to work Vue into our application stack so that we can be a little more modern with our component programming and organization.
At some point, this retrofit will take us as far as we can get to help modernize the application and that will be it. We’re going to have to sit down and do some core restructuring of the backend to match what we want to do with the frontend and make sure that we’re keeping everything lined up nicely, including all of our IDEs and build tools to support the new changes. And so the retrofit will do it’s job to take us most of the way and the rest will have to be a well planned rewrite to take us that last step.
But we’re hoping the combination of the two will allow us to make this happen without too much down time, using a small team, and still make new feature additions over the rest of the year. It’s hard to make sure we’re planning all this properly and that we can hit these lofty goals we have especially considering our team size. But that’s also why we’re trying to make sure our tools feel right for our job and we’re employing tactics, and people, to help make that work well.
It’s definitely going to be an interesting next few months as we ramp up our application refactoring.
Btw, you’re welcome to come and join the team if you like.