JUnit Max Origins
Telling the story of “the origin” of an idea provides context and purpose, even if the story as it happened isn’t as tidy as the story as told. That said, here is the story of the beginning of JUnit Max.
Since Erich and I wrote the first version of JUnit I’ve wished for a way to commercialize it. I don’t need to become a bazillionaire, but I’d like to pay for college, pay the mortgage, and fund retirement. Writing useful, popular software used to be a path to financial reward. It still is, potentially, but the rules have changed and I’m still working out the new system. As my partner Cynthia said when she first saw JUnit, “So, if you give it away a bunch of people will use it and find it valuable but if you charge for it nobody will use it.” That’s about it–finding something between $0 x ∞ users and $∞ x 0 users. At first, we came down on the side of $0.
Michael Cusumano gave me a valuable reality check while walking to dinner at a conference in Sardinia six or seven years ago. While talking about JUnit I put out a line about the abstract value of contributing to my community. He pulled me up with, “That’s not going to pay for college.” Ouch. But true. I was going to have to take responsibility for building a business. No one was going to hand it to me.
At the same time, I was getting frustrated with the state of tool support for JUnit. I didn’t like using the tools that were available. In Contributing to Eclipse, Erich and I took the initial steps towards reimagining the place of tests in the programming cycle. No one took this up, though. The test running interface stayed essentially static since Andre Weinand put together the first AWT-based GUI in 1998. I wanted a better runner.
A few years ago I took a contract programming job. I got absorbed in designing and re-designing the software, of carefully joining the platform and the requirements, of exceeding expectations in useful ways. In short, I re-discovered that I love programming. I had drifted into spending more and more time on non-programming activities: speaking, writing, consulting, punditing. All these are potentially valuable, they just aren’t what I love doing. I needed to reprioritize my work so I brought more of myself to the tasks I chose. I needed to be a programmer.
A year or so ago I got talking with Avi Bryant at a conference in London. I’d seen and admired DabbleDB so I asked him about it. The thing he said that really struck me was, “The more I program, the more money I make. When I add features, I make more sales.” Sounds like paradise to me–programming turning into money.
Late last year these strands came together in a conversation with Mark de Visser, CEO of Sonatype, the Maven company. He encouraged us, told us we could create a viable business selling software. At about the same time, the opportunity cost of my time dropped to near zero. That’s when I started writing JUnit Max.
Max has been out for a couple of months now, and I’ve discovered that my motivations in launching it aren’t all quite so noble and rosy as implied by the story above. I am an external validation junky. JUnit Max has become a vehicle for trying to get people to say, “Kent, your program is cool”. I love the positive comments, but a little too much. I’m working on discounting this part of my motivation, because it leads to poor prioritization and, in the end, poor engineering.
So that’s it in a nutshell: JUnit Max is my attempt to make a living programming a better environment for programmers who test, but trying to avoid the lure of doing it for attention. So far, not bad.
Congratulations on figuring out that programming for profit is an acceptable alternative in polite society! Best of luck with the new product!
Most of the time, it’s the sweet little tools which support the developers most. Stuff like built-in JUnit Runner in Eclipse or the perfectly working assertEquals(String,String) comparison view. That’s what makes us more productive and fun. A collegue of mine put together a small JUnit Test-Cyclometer – and I’m still having a look on it once in a while. However, I don’t feel that one can make money out of developer tools. That is, except the Atlassian guys
– (Junior) Developers tend to use only free stuff, no matter how much they would benefit from a commercial tool.
Hey, Kent, best of luck for your new programming life. I have similar confusing with whether I should spend more time on non-programming stuff too, which I actually don’t like. So, thank you for sharing the story.
If you figure it out Kent, let me know.
Good luck!
[...] of the most influential programmers of a generation is trying to figure out how to make a living. You think capistrano would be abandoned if Jamis got a nickel everytime someone ran cap deploy? [...]