Its often said, and I agree, that "Better is the enemy of good enough"--but Im not prepared to declare myself the loyal ally of one or the other.
There are times when Im prepared to hold the line against the assault of "better," but there are also times when "good enough" really is not. Developer tools have often been examples of the latter.
"Good enough" is a phrase that ought to be used only when "success" is clearly defined. For example, President Kennedy in his May 25, 1961, address to Congress didnt say, "I believe we need to take humanity to the stars." He said, "This nation should commit itself to achieving the goal, before this decade is out, of landing a man on the moon and returning him safely to the Earth." The latter statement clearly defined success in terms of a deadline and a result: It drew a boundary, outside of which any additional capability at any additional cost could quickly be dismissed as another challenge for another day.
Would we have had a "better" space program with a different, broader definition of success that didnt end at the nearest big rock? Perhaps--or we might still be talking about what to do first, which seems at least as likely.
More recently, though, the Space Shuttle has been demonstrating what happens when people lie to themselves about what theyre prepared to accept as "good enough." Without the fully reusable first stage that was part of the programs first conception--sacrificed in poorly conceived attempts to reduce program cost--the Shuttle was saddled with the quick and dirty, ultimately quite costly shortcuts of flimsy solid rocket boosters and throwaway external fuel tanks. Between them, those "cost-cutting" measures have cost us two orbiters and two crews. Not, by any reasonable definition, "good enough."
Software development tools, at least, can be readily improved, and in a positive-feedback process to boot: The people in the best position to notice whats missing are also in the best position to fix it, and with better tools they can build still better tools. Thats been most apparent in cases where a programming language had enough power to tell the programmer where it was feeling pain, and to build its own environments that were capable of finding and fixing problems in a productive and reliable way--instead of merely speeding up the edit/compile/debug cycle, making it easier for the programmer to throw the match into the gasoline and sift through the ashes after the explosion.
The languages that I have in mind are Lisp, Smalltalk and Java, which look more different than they are. With its garbage collection, its basis in symbolic expressions, and its ease of writing and reading new code at run time, Lisp is arguably the parent--or even the symbiont personality--of every modern scripting language. Take Smalltalk and give it a C-syntax makeover, send it to a spa for compilation to leaner and meaner bytecode, and you arguably have Java. Exploit fully the object model of Java, and you go back to the future: You find yourself using Java environments that have the same kind of introspective power and self-improvement capability that made me an ardent Lisper, and an aspiring (if never actually expert) Smalltalker, going on 20 years ago.
Java tool sets during the last several years have truly pleased me with their blend of simplicity and strength. Oracles JDeveloper 10g was competitive at $995 for commercial users, but now its free for everyone. Suns Java Studio Creator was a little creaky coming out of the box last year, but the early access release of Version 2 is a dramatic improvement--and will be an impressive value at its planned price of $99 upon general release this fall.
Unaccountably absent, though, from my archive of Java tool reviews are the past releases of JetBrains Inc.s IntelliJ IDEA, whose Version 5.0 comes out today and which Ive had an opportunity to examine during the past week. Founded in the Czech Republic, with R&D conducted in Russia, JetBrains brings whats literally a different viewpoint on programmer productivity: Earlier versions of IntelliJ IDEA have earned several industry awards and inspired at least one "How do I love thee" Web site listing its notable and effective innovations.
Version 5.0 of IntelliJ IDEA makes progress in several directions that Ive previously associated with competing tools. Like Java Studio Creator, it paves the way for developers to add value on mobile devices. Like Borlands JBuilder, it integrates a developers views of the Web page, the underlying code, and the infrastructure that ties them together. Like Parasofts Jtest or Agitars Agitator, it assists the developer with intelligent early identification and resolution of likely defects, detecting likely cases of NullPointerException and offering simplifications and abstractions to make code more readable and easier to maintain. At $499, its certainly not the least expensive tool out there, but five to 10 development hours saved will pay back that initial cost--and false economies can be fatal.
Developer tools cant possibly be classified yet as "good enough." Security flaws, compatibility glitches and continual project delays all demand a continued focus on a relevant definition of "better."
Tell me when "cost reductions" have cost you too much at email@example.com
Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.