Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Currently working on a complete front-end and back-end overhaul of our webapp. W

ID: 650530 • Letter: C

Question

Currently working on a complete front-end and back-end overhaul of our webapp. We did this because a lot of changes needed to be made to the database schema as well as the user experience.

Now we are almost done with the overhaul and I'm thinking if we could have taken a more incremental approach? We started a new codeline for this overhaul and now we have to figure out a good data migration plan to make sure the old data is transferred over to the new schema properly.

We made the decision to do a separate codeline because we thought that if we did incremental changes to the schema, there would be more downtime to the site. A separate development cycle for it would reduce that downtime to the final day when we do the data migration. And of course that carries more risk.

What are some good approaches to this problem for the future if we ever need to do another major overhaul? Incremental approach would be desirable.

Explanation / Answer

You are right to fear the complete rewrite, nothing is ever scarier in the world of refactoring. There are many strategies for breaking down the rewrite into digestible chunks, and it depends on what's wrong with the code base to begin with. Was it spaghetti? Was it inherently unstable? Or, based on deprecated services?

Without understanding more about your code base, I can only offer something generic and hopefully it helps in some way. Some things to try, maybe, assuming the problem is poorly structured spaghetti.

Start decoupling everything. Try to eradicate state and dependencies, piece by piece. This can almost always be done incrementally. Also, break apart the monster functions and modules.

As things get decoupled, sic the unit tests on them. You need stability throughout the refactor, and that should be your baseline.

You now have lots of little, independent things. Look at the patterns and start to organize and recombine.

As you do this, it may help to adopt an agile dev approach.

At the end of all this, you may not have the Ivory Tower that proponents of the rewrite might hope for, but you'll have tangible improvements that will likely eliminate the need for a complete rewrite.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote