MindRetrieve Blog

MindRetrieve - an open source desktop search tool for your personal web

Friday, December 30, 2005

Incremental Development

I was looking at the subversion checkin log at

http://svn.berlios.de/wsvn/mindretrieve/trunk/?op=log&rev=0&sc=1&isdir=1

I notice I have made many many small checkins. Often several times a day and each checkin include a group of several files (taking into consideration I am not working on this full time). This style is quite different from my work on other projects when I do a lot less checkin but usually in a larger chunk.

Perhaps this say something about the productivity? Perhaps I was acting thoughtless because I'm the only developer right now. But just now I have come to another characterization - this is incremental development!

Each time I made small changes, add some new feature or a methods, refactor code, fix a bug, add a test. I made the code changes, test it, and then I check in. The code base is functional most of time. Seldom did I make big changes that break the code base for several days or more.

Is incremental development the best development process? I'll leave it to other discussion. But from a developer's perspective, having a functional system most of time and being able to test and verify any code change easily is wonderful. Everytime I do a checkin I have the satisfaction that something is done. Coming from an environment where changing only one line of code would lead to tedious work of building a test environment and a painful testing process, this is just pure joy.

2 Comments:

  • At 7:50 PM, Blogger James Gray said…

    It seems clear to me that this is really the essense of Test Driven Development as described by Kent Beck. Using automated testing gives you immidiate feedback on if your code works or does not and wether it breaks anything that you had already done.

    I think checking in very small changes has a lot of big advantages I thought of a couple of the top of my head: You get Rapid feedback telling you if you are on course or not. You can release software "early and often." If something breaks you know it is something in that small change you made that broke it; making debugging easier.

     
  • At 6:32 PM, Blogger Wai Yip Tung said…

    I haven't gone as far as Test Driven Development (i.e. write test cases before writing code). But yes automated unit testing is really a crucial part of the development. Last time I count, there were 300 test cases make up almost 1/3 of total code. Not a complete coverage but it is really an important resources.

     

Post a Comment

<< Home