I went on a course a few weeks ago for the first time in about 12 years. I was learning about a well known content management system. The course was split into two parts: firstly, the principles and use of a content management system (CMS) and secondly, developing a presentation layer using their web application framework. I have to say that I was really impressed by the ideas on CMS, especially the idea that you can have large numbers of people that, given the right tools, can contribute to a web site with only a bit of common sense and without any real technical knowledge. An example would be a whole load of reporters constantly updating a news website. Brilliant.
Then it came to the development course and here I guess that I was hoodwinked. The name of the course contained, amongst others, the words ‘Java’ and ‘Development’, so you can imagine how disappointed I felt when it turned out that it was all about writing JSPs. That’s not too bad, you might say, but this JSP programming was ten years behind the times, bending and breaking many of the rules that have become industry standard ‘good practice’. For example: mixing business and presentation logic, littering JSPs with scriptlets, hacking variables into whatever JSP scope is available. The framework didn’t allow you to write any Java classes, or use the shared tools that we all take for granted. There’s no way you could do TDD, CI and the idea of MVC didn’t apply. To quote the tutor when referring to their code: “it’s not pretty”.
And this got me thinking: why was I so disheartened? After all, the code works, products are written, people are employed and money is made. It all comes down to the fact that I like to take pride in what I do, I like TDD and other Agile practices. I like my code to be as snazzy, maintainable, testable and as bug free as I can possibly make it ...and I don’t think I’m alone in thinking like this.
And this got me thinking even more: as a tools developer, isn’t it a good idea to get your development community on board? Bring people with you? Create a buzz about your product? Get people using your tools? Compare this company, the one that teaches 10 year old programming techniques, to for example, the Guys at Spring. Spring is, I guess, probably the most the most popular and influential development framework in the world. So, consider why this is, it didn’t happen by accident it took a lot of had work; in fact the Guys at Spring write so much new stuff that it’s difficult to keep up. This demonstrates that the software tools business rides along on a cushion of innovation, innovation creates excitement and excitement gets people using your tools to write their ‘killer app’, which in turn means that your tools are perceived as ‘cool’, and the more developers that think your development tools are cool and want to use them, the more companies there are that will buy your products and services and the more money you should make. Excitement and innovation sound like a good business plan to me.