On starting over
This is good! It helps.
The week went by way too quickly. But thanks to this newsletter, I am forced to think back and review the week and write short snippets during the week. It helps give a sense of closure to know it wasn't a week wasted.
I am still writing my thesis. The first draft is due this week, along with another paper I have (I think) finished. So it's been lots of writing the past week.
In other news, I open-sourced the tool I have been working on in the last couple of years. I call it MIDES(Model Inference for Discrete Event Systems) pronounced:Myd dz; or something like that. It's been almost 3 years in the making and has gone through 3 major rewrites so far. You can find it here
I wasn't entirely sure what topic to pick for today, but after writing the above paragraph, I think I'll dedicate this issue to my tool and its rewrites.
Starting over
One of the biggest challenges in any project is going back and starting over from a blank slate. I have, in the last 5 years, worked on 2 major code bases. My own project MIDES and Sequence Planner another tool from my department. One thing has been consistent in both projects: to clear out everything and start from a clean slate. Of course, you copy much of the code, but you do so carefully, picking out what is essential. After every rewrite, the quality of the application is greatly improved.
When I teach, I notice the same thing. Students who can easily get rid of their old code and start again from scratch fare way better than those trying to build upon old code.
This has to do with how we perceive and approach a problem. Every time we start from a blank slate, we have the opportunity to develop in any direction without constraints that were there previously. Plus, you can leverage all that was learned and apply it to solve immediate issues.
Becoming attached to what you have built is natural, and destroying it is not an easy task. Stephen King, about the same idea in writing, calls this "killing your darlings." And any writer knows you have to write and rewrite the text 7 times to get it right :). That was one of the primary motivations for this newsletter. I can be more informal and not rewrite more than once.
This reminds me of the poem "If" by Rudyard Kipling.
If you can make one heap of all your winnings
And risk it on one turn of pitch-and-toss,
And lose, and start again at your beginnings
And never breathe a word about your loss;
Sorry for digressing. Though it doesn't talk about the same topic, the idea is still there.
The usual question is: why break it when it works? There could be several reasons. In my case, it was either that I had learned a new concept or programming language that I wanted to practice and incorporate. Apart from that, going back to something you wrote a year ago and trying to understand it gives it a fresh perspective. You see problems that were missed before. It's the same with writing. Proofread the text after several days of writing it.
Ok! I will stop ranting now.
Let me know if you have had similar experiences or if you find it better never to start over from a clean slate. What are your reasons.