If you’re on the founding team of a startup, or just a really early employee, having to pivot at least once or twice really shouldn’t come as a surprise. Even if it’s not a full 100% change of product and industry the odds are good you’ll have to make some tweaks to your original plans. That’s just the nature of learning as you go and proving what kind of market might, or might not, exist for your original idea.
But one problem I’ve had a hard time getting a handle on is the affect this has on a code base. I tend to be someone who prefers to keep tech debt to a minimum but am willing to concede the need to cut corners at times in the interest of getting something out the door. I don’t mind making this concession because I know I’ll be able to go back later and clean it up. But there’s a big difference between abstracting out a bit of copy-pasted code into its own class or function, and have to clean up an entire half of a product that no longer exists except in your code base and database.
Normally I set aside a tag in whatever task manager I’m using and just fill it up with tasks for clean up and refactoring. I’ve seen plenty of posts from folks who like to store this with the codebase in something like GitHub Issues but one problem I’ve run into with with that approach is that it hides the amount of accumulating work from the product team. By putting the two together I’ve had an easier time justifying taking time away from feature work to do clean up. But doing that alone doesn’t solve the problem that the cleanup needed to be done after a pivot can often be more work than launching the new product you’re pivoting to.
So far it seems like the solution to this really just comes down to good old time management skills. You need to acknowledge the trade off between working on the new and cleaning up the old and it’s vitally important that those you’re working with also at least acknowledge that a trade off exists even if they can’t appreciate the importance of it. So for now I’ll keep loading up my task manager with tickets relating to tech debt and just churn through them as I can make time to. Now, cleaning up the database, that’s a whole other bundle of fun …