Philosophy of Software Development

By: 
Kort E Patterson

The following are a few philosophies of software development that have served me well, but seem to get missed in programming books:

Every tool requires some amount of operating overhead from its user. Any operating overhead required by the tool directly reduces the total mental capacity the user can focus on the task at hand. The ideal user interface would be a single "figure out what I need done and take care of it for me" button.

You won't remember how the code you write today works when you next revisit it - which might be years in the future if you got it right the first time. Write so that the purpose and operation of your code would be obvious even if it was the first time you'd ever seen it.

Debugging is a cost of production that is included in the sale price. The tech support costs of dealing with overlooked bugs in the release version have to be paid out of post-sale profits.

Reliability and usability are far more important than aesthetics to users who depend on their software.

A couple of hours spent pre-emptively eliminating potential sources of user confusion during the design phase can save you from having to spend hundreds of hours dealing with unhappy users later.

The ego of the programmer is best defined by the value his works provide to users, not by how impressed he is with the cleverness of his code.