Software development and design is part art and part science, but which part wins out in most projects? It seems even the most prolific developers disagree.
Capers Jones, software quality expert, says it is 90% art and 10% science.
“There’s no way to prove [software development] is a science. There’s no board certification,” he said. “Eventually, it will be board-certified, but for now, the knowledge of quality today is roughly the same as doctors had before sterile procedures.” He added that it will be a combination of calls for certification from vendors and end users that will ultimately change the process of development.
Standardizing the development process, as well as requiring software developers, engineers and designers to take a variety of tests and certifications, will, in Jones’ mind, help make software quality better.
Jones believed a stricter and more standardized certification process is most needed for mission-critical projects, such as medical devices, aircraft, and in the financial sector and beyond. Today, he said, the FDA certifies medical devices such as hearing aids and pacemakers, and he believed that is a step in the right direction.
This certification process makes the software development process more scientific, Jones said. Science, according to Joe Pezzillo, cofounder of Push IO (a mobile cloud services platform), is based on one’s ability to create a pattern based on a repeatable formula that almost guarantees a common end result.
Pezzillo said that a successful software project “depends on how closely [art and science are] balanced and how one dominates the other in a specific ratio.” He said it also varies by type of software.
“If you’re working on a piece of financial software, the science should be perfect. This type of app doesn’t allow developers to express themselves. You don’t want to try out cool, new things in a financial application,” he said.
Much creativity in mobile
Mobile applications seem the most creative to end users, Pezzillo said, because developers are charged with transporting users to another world, a world that really is only limited by a developers’ imagination.