If I had to do it all over again I would change nearly every function call, class, and line of code in HelpSpot. Now that I’m able to see the product as a whole there’s so much I would do different. Places where code could have been reused better, code could be faster, code is unnecessary. Sometimes it’s hard to let this code be. I thought it was hard before I launched HelpSpot and I knew there were some things I would do different, but it’s even worse now. However, I’ve come to realize that you just have to ignore this code.
At the end of the day it’s running well and doing what it’s supposed to do. Is it perfect, no. In some places is it not even clean, yes. That’s life. The choice is move forward making new features customers need and want or look back and spend months re-factoring code just to see disappointment in your customers eyes when your new releases don’t seam any different. Sure, the reports page runs 20 milliseconds faster, but they won’t notice.
So my advice is simply to never look back. Now sometimes, you have to re-factor code to move forward or the opportunity presents itself to do so in order to smartly add new features and those opportunities should be taken but re-factoring for it’s own sake should be avoided like the plague. All it does is slow down your forward motion, which is something all small ISV’s desperately need to cultivate at least in the first year.