A while back I had the idea of bringing the concept of Acceptance Test-Driven Development into our department, where we mostly maintain an existing, pretty large, mature and complex solution. The conclusion after my presentation and following discussions was that we already do it, at least partially (as I mentioned in this comment). With this post I want to elaborate where we currently stand.
Sometimes we implement the tests first, sometimes in parallel with the implementation but we never craft the tests during sprint planning. Main point is that we do not make any changes, fixes or new features without full tests covering the area of change. This is, in my opinion, the most important point. We do not accept code that is not covered by tests (unit and system tests!). For legacy systems this is an absolutely necessity. Otherwise you won’t survive. My presentation was deemed as a good one and it gave names and clarified concepts of certain things we already do. It is now much easier to discuss issues and improvements with a common vocabulary.
Very recently our team was chosen to implement something totally new. A greenfield project.
This brings totally new aspects to our development effort. We would have the possibility to do things right from the very beginning. With a long history of legacy systems this feels like a breath of fresh air. It is still quite unfathomable to me at least. We would be in a position to choose our testing framework (most likely the Robot Framework), and continuous integration and deployment policies. We would be able to define our working agreements and definitions of done so that we drive development with tests. I think we would be technically empowered.
On the other hand I don’t feel that we have been doing things in vain. The Legacy System will live on, it will need nurturing to stay in shape. It has a huge and lively customer base which generates a steady stream of feature requests and issues. I am convinced that our efforts of bringing its build, test and deployment systems to modern age will bear fruit.
Interesting times indeed!
(photo by angesnop)