Many of our values are driven by one core belief: even more than for computers, programs are for humans.
We believe that the most effective programmers operate with a sense of freedom and confidence, rather than uncertainty and doubt. Our training, and our libraries, are designed to bolster that feeling in our students and in our users.
The primary purpose of source code is communication. Most source code is read by a computer once (during compilation) but is read many times—often by many people—during its lifetime. We read and re-read our own source code while writing it, our reviewers read it, and we read it again during testing, debugging, maintenance, refactoring, and analysis. Therefore, clarity is paramount. Even if I am the only one who will ever read my own code, I need to be able to come back in a week, a month, or a year, understand what I’ve written, and see that it is correct.
The primary mechanisms by which we make programs understandable are abstraction and documentation. Simple and powerful abstractions allow us to code in terms of high-level concepts, without presenting irrelevant details to the reader. The ability to express oneself tersely and rapidly depends upon the availability of and one’s fluency with expressive abstractions.
Documentation relates abstractions in code to the concepts they represent. As such, it is necessarily redundant: how can we claim that code is correct until it has been cross-checked against a specification that says the same thing? Documentation is one of the main challenges facing the software community at large. Without high-quality documentation, programs seldom achieve maintainability and tend to resist evolution. At BoostPro, we value documentation highly and actively develop our own documentation skills. As much as anything else, a program is its specification.