Any software developer that has been in the game for more than a few Java release cycles inevitably has stories to tell about the best and worst software products used. From servers that literally took more than an hour to stop and start to integrated development environments (IDE) that actually generated code that didn't compile, there are plenty of software product horror stories to go around. It's easy to tell when a given software product is junk, but it's not as clear what criteria elevate a product from being something that is simply functional to the status of a great software development tool.
"It's very hard to do very nice tools," said Anton Arhipov, product manager at ZeroTurnaround, about the challenge of delivering software that is not only functional but also integrates seamlessly with the day-to-day tasks a software developer must perform.
It gets so much of the workflow right and gets out of your way and enhances the productivity of the developer.
senior software engineer, Moog Music
Software development tools that get out of the way
The importance of this seamless integration can't be understated. It's an approach ZeroTurnaround -- a seller of software development tools based in Boston and Tartu, Estonia -- has always taken with its JRebel product, and it is a philosophy that can be seen in the newer XRebel product as well.
"Developers want tools that will enable them but will also get out of their way so they can stay in the flow," said Geert Bevin, former product manager for XRebel at ZeroTurnaround who is now senior software engineer at Moog Music.
In this regard, some good software development tools end up falling flat by continuously prompting users by requiring complex, one-off configurations, or even by making it difficult to replicate a configuration from one development machine to the next. Core functionality is important, but it is often non-functional aspects to a given tool that lead to backlash from users.
The high-quality nature of the various performance, troubleshooting, monitoring and software development tools on the market today may be creating an incredibly high bar in terms of what passes for a great software product. There was a time not too long ago in which developers wrote code in an editor like Vi, command-line tools performed compilation and, in terms of troubleshooting, there was nothing more than a cryptic log file to sort through.
"An editor who understands Java code, a tool that understands how an abstract hierarchy works, an IDE that can do just-in-time compilation right in front of you -- all of these are now things that people take for granted," said Bevin.
Java community has its say
In terms of getting the product quality equation right, the guiding light in the Java community always has to be IntelliJ IDEA by JetBrains. Three very polished integrated development environments are available to the Java developer, with Eclipse and NetBeans being free to download and install, while IntelliJ comes with a price tag. Despite the Java community's love for open source products like NetBeans, and its members' general skepticism towards commercial vendors, IntelliJ continues to dominate the IDE market while boasting an enthusiastic set of users.
"It gets so much of the workflow right and gets out of your way and enhances the productivity of the developer. It's something we're doing with our own tools like XRebel," said Bevin, explaining how ZeroTurnaround worked hard to create a tool that didn't require the use of complicated profilers or the configuration of application performance monitoring components when the company designed and developed its recently released lightweight Java profiler.
The key takeaway when it comes to developing great products is to start with a product that performs its basic functions well. With that in mind, an IDE must create code that compiles and a troubleshooting tool must make it easier to isolate and diagnose problems. But a great product goes far beyond that point, with ease of use being one of the key non-functional requirements. A tool that works well, is easy to use and gets out of the way when other work is being done often wins the endorsement of a software developer.
Which non-functional requirements do you need the most? Let us know.
Agile development in 2015: Agile software dev tools
A software developer shares insights