Today we made what is hopefully the last change for CTP5; one last code change (7 lines in 2 files), one setup fix and the build is running as I write this blog. If everything goes well, build 50727.145 will be CTP5 of "Visual Studio Team Edition for Database Professionals" and be available for download this upcoming Monday afternoon.
For those of you who are not familiar with the whole CTP model; we have been releasing a CTP about every 7 weeks (CTP4 we released after 4 weeks). We do not just push out some bits after every 7 weeks period; we are going through an iterative and predictable development cycle every time. This way we also practice how to ship :)
The model is very simple: 1 week of planning in which we determine what needs to get done; perform the necessary investigations and estimate how long we think work items on the back log will take etc. This is followed by 4 weeks of development and 2 weeks of stabilization.
During the 4 weeks of development it is not just a free-fall of check-ins. Developers are hold to (quality) standards; for each workitem they check-in, there needs to be a accompanying set of unit tests that achieve 70% code coverage. So they have to test there own code before it goes in. This allows the testers to focus on the end-to-end scenarios and integration of features and functionality. Everything that is wrong results in a bug as you might expect; to make sure these get fixed in a timely fashion we have a simple concept called bug-jail. This is a simple metric of bug scores that enforces that we fix bugs first before we move on with new feature work, if we exceed the pre-defined tripwire. This is painful, since you want to add "the new" stuff, but if you are in jail you need to fix your bugs first before you can move on to work on new work items; this way we do not allow the number of outstanding bugs to take over the control over our own destiny and ship dates. The final 2 weeks in the Sprint are dedicated to product stabilization; this allows testers to catch up with the latest code changes and this is where we focus on fixing those issues that are most important for our user base.
This enables use to share the incremental improvements and integration of functionality with the CTP users while the product matures. By keeping the feedback loop short, we can address the issues that users log, which also stimulates users to provide ongoing detailed feedback, so we can validate if we are moving in the right direction and can take action when we are getting off course.
For those of you who are old-school and still thinking in terms of alpha, beta, rc0, rc1, rcX and RTM releases, CTP5 will be our beta release; CTP6 is going to be the first RC and then we are getting ready for RTM!
This is my first real agile project, after having worked on SQL Server since 1996, where I worked on 3 releases in 10 years: SQL Server 7.0, SQL Server 2000 and SQL Server 2005, I'm finally able to deliver something within 1 year and it sure feels good so far!
Up to the next CTP and RTM.
"DataDude" Development Manager