I often randomly stumble across podcasts and try a few episodes out. I just did that with Software Engineering Radio, mainly to hear this interview with Kent Beck. He is the person behind JUnit. In my job I try to to test driven development wherever possible (given that I work on a system with many many moving parts.) We have a unit test framework for our C code and if any problem can be reduced to a failing unit test case, that is always where I want to start. I’ve gotten to the point that in those cases where it just isn’t feasible, working without that test coverage makes me itchy and nervous.
There is a second order effect to all this that sometimes gets lost in the shuffle. When it is part of the culture of a team to always unit test their code, outside of the value of the testing itself if forces the code to be written in a testable manner. You tend to not have gigantic functions with many effects because those just aren’t testable. The same aspects that make it unit testable also make it more understandable when new people are brought on board to maintain it, so that is always a long term positive.
It’s been over 4 years now since I wrote Java code on a daily basis, so my understanding of the state of that art is slowly atrophying. One part of the interview I found really interesting was when Beck talked about JUnit Max. I had never previously heard of it, but it is an Eclipse plugin for doing continuous unit testing in the background as you work, in the same way Eclipse is always compiling after every change. There are some interesting heuristics in it, such as more recent tests run first as well as tests that have failed most recently. The idea is to put any failures in front of the developer as quickly after saving a code file as possible, so by guestimating which ones have a higher probability of failure, JUnit Max tries to get to that point faster. Also interesting is that it is not free, but $100/year for a license. This seems like a very good way to monetize open source. JUnit itself is free, and Beck et all have given it to the work for free. This value added enhancement which is primarily of value to those whose time is money (high rate consultants or high wage employees) is not free, but also priced such that practically any organization is going to see a payback quickly. The guy has saved the development world billions of dollars by allowing them to find bugs earlier, it makes sense to kick him $100/license for saving you a little more time if you need it. Everyone is a winner.