I’d like to propose a new programming religion, a religion based on the following articles of faith:

There’s no consistent substitute for a thorough understanding of your problem, though sometimes people get lucky.There’s no solution applicable to every problem, and what may be the best approach in one circumstance may be precisely the worst in another. There are many useful approaches applicable to more than one problem, so it pays to become familiar with what has worked before.The trick to problem solving is not just know-how, but know-when which lets you adapt the solution method to the problem, and not vice versa.No matter how much you know how or know when, some problems won’t yield to present knowledge, and some aspects of the problem nobody currently understands, so humility is always in order.

Jerry Weinberg, in Beyond Structured/Agile Programming (via alexandreaquiles)