7th June 2007

Worth Reading - Testing Anti-patterns

Thanks to Frank Kelly for pointing out James Carr’s great list of testing anti-patterns - things to really avoid when writing automated test cases. This is definitely a page worth reading.

posted in Skillfulness, Software Design, Software Process, Testing | 0 Comments

6th June 2007

Is commercial off-the-shelf software dying?

A few days ago, I wrote about dividing software into two types: algorithmic and arbitrary. Algorithmic software does things that are elegant and logical. Arbitrary software does things based on business rules which were never meant to be algorithmic, or things like data mapping.

There will always be a market for people to write arbitrary software - businesses will invent new processes, more and more systems will need to exchange data, and so on. And while better tools become available every day, there is still the raw job of mapping data and specifying business rules, no matter how sophisticated the tools. But this market is the custom software market - these resulting software has no value to anyone else.

But for algorithmic software, the market is shrinking. Time and time again I’ve written code in-house that has been replaced, just a year or two later, by a much better open-source solution. Logging, monitoring, load balancing, testing frameworks, and dynamic HTML generation: probably several years of my professional life is now confined to the dark pit of forgotten in-house software.

Then there were the commercial web servers, application servers, and databases. Anybody still paying for Netscape/iPlanet Web Server? And while BEA WebLogic, or Oracle, seem securely part of the market for now, they have serious free competition: JBoss, MySQL, PostgreSQL, and more. Microsoft has Linux, and OpenOffice, and Mozilla, and so on. Where would Apple be without their hardware design?

If more than a few companies do something, then the economics are in place for an open-source solution. And the economics of open-source are hard to fight when they come to your back yard. Unless you provide a service with your software, you face a double edged sword - the more people who might pay for your software, the more reason to create an open source alternative, and the better it will be.

So what do you think? Can an individual company survive the pressure, or will they fall one by one? Will the biggest fall first, leaving nothing but smaller niche players? Will they all go? Or is commercial software here to stay? Let me know.

posted in From the Fringe | 1 Comment

6th June 2007

Code Read 10 - Guy Steele on “Growing a Language”

When doing software design, a common question is how much “advanced” functionality to build in, and how much to let the users create themselves using a simple set of tools. For example, a reporting module could have many canned reports, or could have a tool which allows users to build reports themselves (or both). Often the canned reports can do things more efficiently or elegantly than user-built reports, because they have access to the full internal workings of their environment. Designers of programming languages face a similar problem - how much should be included in the language, and how much should be left to users to build. In the latest of Scott Rosenberg’s Code Reads Guy Steel shows how the ideas of the open source movement influenced the designers of Java to think in terms of growing a language to avoid this dilemma.

Read the rest of this entry »

posted in Code Reads, Guy Steele, Skillfulness, Software Design | 0 Comments