Pre scriptum: I might make some scientific errors in this article, but I think the point still stands. Don’t the dragged too much if you find something inaccurate.
In theory, theory and practice are the same.
In practice, theory and practice differ.
We’ve all heard some variation of this. I found it to be fundamentally flawed. Well, at least the theories it applies to have to be. A theory is just a mental model of how something works. It’s particularly useful to do experiments in your head and predict the outcome. At it’s core, it’s in dear contrast with doing, or experimenting, if you will.
So, we have mental model in order to predict and explain how things will or have worked. But, according to the second premise and most people’s experience, this isn’t always the case. I find this completely explicable in “discovering” sciences, those in which you study something to better understand it. For example, all the chemistry formulas you learned in high school are designed to be applicable in vacuum and in a closed system. Why? Unless we have a big obvious deviation from the ideal conditions, if you tried to account all the other factors, you would be lost in a sea of inevitably irrelevant factors. And all that only to raise your accuracy very lightly. If you’re nowhere near the ideal conditions, the result is meaningless.
Theories usually have a context, and only try to explain things in light of that context.
This is all fine and dandy on what I have called “discovering” sciences. However, when you’re dealing with “creative” sciences, those were you build cognitive stuff, a world that exists only in our thoughts (I think programming is such an example. It’s surely the one I know best), this is completely unacceptable. You’re doing all this in your head. While you might not completely foresee the practical amalgamation of combining all the concepts you have thought of, the models you produce to explain or express them can, and should, be accurate. Why wouldn’t they? You invented the whole god damned thing in your head! You have no Higgs bosson to discover. Worst case scenario, you invented one for your concept system! You, by definition, already know it all!
Theories about pure concepts, created by men and existing only in our thoughts, can and should be accurate.
However, it would be presumptuous of anyone to think they would get it right at the first try. You have to mature things, experiment with them. As the ideas unfold into concepts and into systems of interacting concepts, you begin to see and feel how well that world works. Only after enduring such trials you know you have concepts worth modeling. Even then, you might not fully grasp the available reasonings to their fullest and furthest. Even so, those you do understand and can clearly visualize should be part of the theory you build for your model. It’s better to have a theory saying “I can’t predict this and that part of the problem” than to have the pretension of knowing it all. Or, even better, be humble enough to say something like “I can’t really predict, but expect something along these lines.” That way, you provide guidance without inducing in error.
Theories can, and should, be modest enough to cover only subject they are good at. It’s ok to formulate a theory for a particular subset of the whole problem or to provide only some coarse grained expectancies.
If your theory breaks, it doesn’t have to be a bad theory. You might only have an overeager theory, for example. Back up, analyze what happened and re-scope the theory. Don’t try to explain what you can’t explain. Facts can’t be wrong. You don’t have to understand it all. If you have the pretention to explain something, define the scope and the breaking points. Without them, you’re just waiting to be surprised by unforeseeable shortcomings of your formulation.
One of the most obviously disappointing aspects of computer science’s theories are their unwillingness to consider the human aspect of it. Some of them fail terribly at considering they will be used by humans. Humans that aren’t really good at doing repetitive stuff. Nor at sustaining highly intricate cognitive efforts. Nor at foreseeing all the consequences of their acts.
All in all, what I think I’m saying is: theories should be rated by their usability. I would argue that I prefer a usable theory than a super complete and accurate one.