Monday, November 12, 2007

Automatic Improvement a.k.a : "What is Meaningless Will Vanish"

In coding, practice like Unit Testing (or any other tool/methodology in general) sometime is done for a preiod of time before it is discarded after it's being outdated/ignored/stalled/out-of-sync. The people who do it does not feel it's worth doing anymore. It's practice that needs a lot of reason behind it for people to willing to give their time/attention for it.

Come to think of it, owning a practice or habit is actually quite similar to owning something, you have to take care of it (that comes from the fact that it has usefulness/meaning to you) otherwise it will deteriorate, become a burden and will eventually leave you .

Take unit test for example, you take unit test practice like taking a car to own. Imagine you buy a car and not using it (you alredy have three of them, just for example), at the very least it will take up space in your garage and everyday you will see it and say to yourself "I have other things that need some space and and this garage is quite perfect for it if not because of this stupid car". Day to day you will end up selling it or in the case of unit test you just let them "rot", unexecuted and, when the time is right, happily delete them since you don't feel it means to you much anyway.

However, the contrary is also true though and even more exciting, a good unit test is something you can not live without and you will even feel the urge to get it to a better and better shape everytime. Improving it just feel natural to you and you don't feel any burden in doing it. The unit test will be improved semi-automatocally.

In a more general way, as long as the thing in discussion is a meaningful one it will be automatically improved. You can say that the universe will "conspire" to improve it. Anything that you take as meaningful will be enhanced for you, vice versa. A good, useful software will be refactored, modularized, rewritten and improved.

So, the lesson is : Is what you test/code/maintain something meaningful?, it's more about why you do/have something than what and how you do/have it. Unit test will be there for quite a while as long as it serve you a purpose, otherwise it will vanish naturally. Software will have a long age when people use it, really has effect on their life. Good habit will stay when you make it relevant and integrated.

No comments: