Our focus is on writing and supporting software done right. We feel that to be "done right", software must be, in order of importance:
We think that once you've experienced software done right, you'll never want it any other way.
Software must meet the specification it has been designed against. It must be written so its functionality can be understood and so its behavior is predictible. Software that is not correct is fundamentally flawed and is of limited usefulness to its end-users.
End-users depend on their software being available when they need it, and they expect their software to run consistently and at an appropriate level of performance. Reliable software, like correct software, behaves predictibly and inspires confidence.
Manageable software is well-organized and comprehensible. It is easy to maintain, modify and enhance. The process of creating manageable software begins with a solid system architecture. Coding standards, code reviews, and good test coverage all play a part. However, keeping a product manageable for the long-term requires diligence and focus, and a recognition that time spent on manageability now pays huge dividends down the road.
Any software product, to be useful in the long-term, must be well-documented both from a software developer perspective and an end-user perspective. A working software product that no one but its developer understands is perhaps less useful than even an incorrect or unreliable software product that can be fixed because its workings are well-documented. In our experience, well-documented software products are almost always easier to make correct, reliable and manageable.
One of the ways to keep software projects manageable is to focus on "code confidence". When we have confidence in code we can: