We should expect the same level of quality and performance in software we demand in physical construction. Instead of trying to create software that works in a minimal sense, we should be creating software that has internal beauty. Beautiful programs work better, cost less, match user needs, have fewer bugs, run faster, are easier to fix, and have a longer life span. Raising our standards for software is not a luxury to be reserved for programmers with extra time on their hands. Software aesthetics is a qualitative judgment, but, like physical architecture, it includes some general principles.
All beautiful software has the following properties.
Component singularity Functional locality Readability Simplicity Cooperation Just as a building should be designed to blend with and enhance its site, software should work well with its surroundings. The site for a building is the slope of its land, its orientation to the sun, its local weather, other buildings nearby, etc. An income-tax filing system that allows people to submit returns through the Internet, because many users already have Internet access. A reading tutorial for second-grade students that runs quickly on older computers, since schools are likely to have old, slow computers rather than the latest technology. A more technical example is a large-scale document management system I worked on.