Channel Insider content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

It’s often said, and I agree, that “‘Better’ is the enemy of ‘good
enough’”
–but I’m not prepared to declare myself the loyal ally of
one or the other.

There are times when I’m 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
didn’t 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 didn’t 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 they’re prepared to
accept as “good enough.” Without the fully
reusable
first stage that was part of the program’s 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 what’s missing are also in the best position to fix it, and with better tools
they can build still better tools
. That’s 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. Oracle’s
JDeveloper 10g
was competitive at $995 for commercial users, but now
it’s free
for everyone. Sun’s 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
I’ve had an opportunity to examine during the past week. Founded in the
Czech Republic, with R&D conducted in Russia, JetBrains brings
what’s 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 I’ve previously associated with competing tools. Like Java Studio
Creator, it paves the way for developers to add value on mobile
devices. Like Borland’s
JBuilder
, it integrates a developer’s views of the Web page, the
underlying code, and the infrastructure that ties them together. Like Parasoft’s
Jtest
or Agitar’s
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, it’s
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 can’t 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 peter_coffee@ziffdavis.com

This article was originally published on eWEEK.com.