Ted Krueger tagged me “Deciding I need to delete it all and start over again”.

What can I say, during the process of writing this post, I expect to delete it all and start over again at least once!

I suspect that most people would think that “starting over” is generally bad. I couldn’t disagree more. Every time I have started over, I always end up with code that is easier to read, more efficient and ultimately has less bugs.

My wife and I own a software company named Orbit Software. We have a product that optimizes school bus routes. I started writing this product 14 years ago, and I am constantly amazed that there continues to be more features that ultimately enhance this product. During the 14 years, we have released 10 versions of this product. Each version has many more features than the previous version. What’s interesting to me is that each version has shown an increase in performance, and that increase is NOT due to better hardware.

How did I accomplish this? By starting over!

I’m not suggesting that each version was completely re-written. That would be insane. However, each version has large portions of it that have been re-written. There is a constant struggle between writing “perfect code” and actually delivering a product that is useful to your customers. If we had waited until the code was perfect, we would still be working on version 1.

My approach to software development has always been, “Make it work, then make it fast”. Sometimes there isn’t enough time for the second part, so it has to wait for another version. I don’t think there is a single line of code in the most recent version that existed in the first.

Every developer has a different tipping point where they decide that starting over is the best course of action. I encourage everyone to give some thought about their own tipping point. Starting over with a block of code is something that should be encouraged, not avoided.