Open Source & Commercial Software: Both Are Crucial
Is software development a science or an art? The software industry treats it as a science. It uses processes like MRDs, PRDs, and functional specs to convert customer needs into software that solves their problems.
Various roles like product managers, engineering managers, project managers, architects, and programmers work together to drive the process like an efficient machine. Programmers are usually referred to as software engineers, but unlike mechanical, civil, and other kinds of engineers, software engineers don’t have any certification process or formal requirements. In fact, technically, software engineers aren’t engineers at all.
Many famous people in the field recognize programming as an art. Good code isn’t a commodity that’s just pumped out – it’s composed like a novel or music. Good software is created from good code using a good development process.
I’d argue that quality software is a melding of the two views – that software development is both a science and an art.
In his novel Zen and the Art of Motorcycle Maintenance Robert Pirsig explores the dualistic nature of beauty in technology.
“Classical beauty,” he says, “is the beauty of the way a technology works, the way all its parts work harmoniously together just as designed to achieve the desired effect. For a motorcycle, this could be how the valves, pistons, crank, and ignition system work together to efficiently convert fossil fuel into the rotational energy of the flywheel, which by way of the clutch, transmission, chain, and wheel is converted into forward kinetic energy of the motorcycle and its rider.”
Romantic beauty, on the other hand, is the beauty that strikes the senses. For a motorcycle, this would be how it looks, sounds, and makes one feel as he rides it. While he wrote Zen and the Art of Motorcycle Maintenance in the 1970s, this classic/romantic paradigm provides an excellent ground for analyzing modern software development practices.
Read more

