My thoughts on TDD after one small project
First, I must disclose that I really only did Test Driven Development in the beginning while coming up with the object model and basic methods. It worked out well for this. I found that it was much harder to drive the detailed design using TDD at later stages. Although, i'll give the approach the benefit of the doubt and say that it was my lack of experience using TDD that caused this.
The project that I worked on was a calculation engine that takes two objects, each with various numbers of subclasses(I won't bore you with the business details) and outputs numeric values. The computation is fairly simple but output is pretty detailed and isn't easy to see problems by simply eye balling the data. Unit tests worked out fantastic here. We have over 120 unit tests that exercise positive and negative paths. I can honestly say that if management came to us tomorrow and asked for another calculation scenario, we could introduce it and be confident that we didn't break anything else almost immediately. Pretty slick.
Although this was a very positive experience, there were some downfalls. When approaching a project with TDD in mind. I'm having a hard time determining how to estimate it. Since you are not doing BDUF (Big Design Up Front), the scope of change is quite unknown. If you haven't worked with a given project before(legacy or new), it would be very hard to estimate resources or timelines.
In my world at work, we are typically give a production date and then figure the timeline out backwards. This allows us to determine how many people it will take to meet the predetermined date. I realized, this approach is less than optimal, but I have to live with it. With this being the case, how can you not do BDUF?
Gmail Invites to give away.
Although I really don't know what the big fuss is, I have 4 gmail invites to the first four comments to this blog entry. Please leave your email address.
Yet another reason to hate Together Products
In the past, my group used TogetherSoft's TogetherJ Control Center as our development IDE. It suited our needs but was a bit heavy weight, slow, and overkill for the task at hand. The modeling features were decent though. The worst part about it, is that I had to turn almost every automatic feature off in order to get it to perform poorly. Yes poorly, if those features were all turned on, it was virtually unusable. Now I see that my friends at Borland just released a Free Community Edition of Together. While this in itself is a worthwhile and noble effort to bring developers back to their platform, they went and alienated the developers on the OS X platform. Keep in mind there is a pay for version for OS X. I don't know how many conferences you all have been to in the past, but Powerbooks are the norm now. It's amazing how many of these elegant machine grace the desks of developers around the world. For the record, I'd like to give Borland a round of applause for making it easy for me to steer clear of the Together product yet again.