The Finish Line Is Just Another Milestone
Speaking of remodeling updating your code, If you’re releasing a new version of your code, that means you’ve already released a version of your code. That means that at some time in the past, you finished your code. Or at least thought you did. But now, here you are releasing a new version. So I guess you weren’t done. Or to put it another way,
The finish line is just another milestone.
Yup. Unlike a race, the finish line with software almost never means you’re done.1 Especially with version 1, but really, for all versions. EVERY new project I’ve working on that made it to the first release, has had things that I knew could have been done better. Features I thought should have been added. Errors that needed better handling. From personal projects to school projects to AAA games to multi-year multi-million dollar defense projects released the initial version with known work I (and the team) wanted to do. Those things didn’t make the initial release, for very good reasons. Reasons like boredom and more pressing issues, homework due dates, hitting a release date for game sales, to contractual obligations. Time is fleeting, but there’s always an important date in there somewhere.
First, you work hard. Then you release. You take a break and regroup. You listen to what your users are saying. You combine that with what you know you didn’t do but thought you should. Then you do it all over again.
This time, the list of things you didn’t do is smaller, but it’s more targeted, because you know more. More about the problem space. More about the constraints you added the first time. More about what your users really want to do. You’re starting from a different place, but the process is pretty similar. You develop the code. You learn more along the way. You make mistakes and fix them. Then, you release again.
But again, you’re not done. There are still things you wanted to do. User requests you didn’t get to. Rough edges that you want to fix. And the cycle begins again.
And it doesn’t matter how long your cycle is. It could be a 2-week sprint. It could be 5-year plan. It doesn’t matter. Release is not the same as done.

That’s the real lesson here. Release is not a finish line. It’s just another milestone along the path. And like all those other milestones, there’s another one coming up. So be ready for it.
-
While there is a tremendous amount of personal learning that can be done releasing version one, there’s also a whole different type of personal learning and growth that comes from releasing version 2. And the versions after that. If all you do is release version 1 of a project, then move on to a new green field and build another version 1, you’re missing out on a whole different class of things to learn. ↩︎