Random epiphany - Journal of Omnifarious
Jan. 16th, 2008
11:02 am - Random epiphany
I was discussing the fact that the default Junit report is singularly unhelpful in that it basically provides you with this really nice interface in which you can drill down to a particular unit test result. But this, of course, is not what you care about. What you really want is a list of the unit tests that failed with links to a detailed log of the failure.
She observed that the practice of making very pretty and complete but functionally useless software and reports was something she expected from the business side of engineering, not the engineering people themselves. I asked her what drove Java development and she conceded that was, Java is all about 'solving business problems', not engineering problems.
This led me to think about an idea I've had for awhile. I've long felt that chasing money was a fools errand in business. What you ought to do is chase down problems that need solving and figure out how to make money from them. The value you're creating should come first, and translating that value to money should come second. Money is the incidental reward for doing something that helps people, not the object.
In this context then I evaluate Java. Java initially received a lot of attention by geeks because many things about it were kind of new and interesting. It was a really innovative way to deliver client-side stuff. Platform independent with a built in security model that could be enforced relatively easily by the runtime environment. I saw a lot of interesting and innovative applets written.
But that was all trashed by three factors. First Netscape had a horrible implementation that didn't get any better. Secondly Microsoft tried to sabotage things and lastly Sun didn't go open fast enough to short-circuit Microsoft's attempts at sabotage. The client side was left in disarray and little attention was paid to it.
OTOH, a whole bunch of businessy types saw Java as the solution to a number of problems they were observing. It was hard to hire good programmers and the available languages made it very easy for bad programmers to make horrible mistakes that completely ruined applications. It seemed like Java made things safe enough that you could let bad programmers write code and at worst it would work poorly instead of completely trashing your system. This seemed like a business godsend and Java gained a lot of traction on the server side of things as a way to let armies of no-talent developers write decent server side software.
The developers with talent mostly felt that Java was a poor re-implementation of Smalltalk and only grudgingly went along with the whole thing.
Fast forward to now, and you're left with a technology who's development has been driven largely by business concerns and only a smattering of geeky enthusiasm. The interesting things that people do with it seem like solutions to problems created by other 'solutions' instead of like any real solution to a problem the universe outside of Java has.
The only really interesting stuff in Java anymore is mobile code. But using it involves dealing with dependency issues that have solutions designed to allow some stupid business to use some incredibly old version of something forever instead of taking the time to do even the minimal maintenance necessary to keep current.
It's all very depressing. Java seemed so promising in the 90s.
But I think, as a general recipe, solutions designed to solve 'business problems' are doomed to failure, or at least doomed to being stupid and badly designed. Don't solve 'business problems'. Solve your own problems, or your friend's problems or something you're excited and interested in. The market for it can take care of itself later.