I think that maybe human disciplines evolve through four stages.
- art (can't really be taught)
- craft (can be taught, can't really be written down)
- soft-science (can be written down using many small rules and processes which can't really be proven)
- hard-science (can be described by a few basic principles which can be proven)
I think that maybe human disciplines that study or build systems based on physical forces are mostly hard-science (physics, civil engineering, ...).
I think that maybe human disciplines that study or build systems based on information flow are mostly art/craft/soft-science (software, economics, business, psychology, ...).
I think that maybe software development is 10% art, 50% craft, 30% soft-science, and 10% hard-science (everybody will have their own numbers).
I think that maybe patterns help move software development from art and craft to soft science (they write down previously unwritable stuff).
Since software development is mostly unprovable, you can't use traditional science to study it. What can you use? UseJudgementNotProofs
Before you can teach someone, you have to be able to do it.
- ''Not entirely true; my wife taught a bunch of kids how to do complex arithmetic in their heads, but she never could do it.
It is easier to teach something interactively than to write down how to do it. And you have be able to write it down before you can write it down succinctly.
But what does this have to do with art, craft, and science?
Experimental proof exists for art and craft as well as science.
Music professors often do experiments about how to teach music (craft).
Following some economic theories leads countries to economic ruin,
while others lead to success. Biologists experiment, but they have
do not have a small number of rules that imply everything.
So, I sympathize with your desire to get more written down, and I
agree that a lot of things in software are too expensive to prove,
but I think that this way of categorizing this is too simplistic.
I agree with Ralph, but I'll go further. Science is about discovering what it is not possible to construct. Art is about constructing things that have never been constructed before. Craft is about learning how to reproduce constructions. Engineering is about constructing the tools with which further construction can be crafted. And Engineering provides us with the tools we need in order to do Science. Nor does this cycle turn only in one direction. So there is no steady evolution here - ArtCraftEngineeringScience are not a continuum
Now, as to Stan's thesis, here's a more traditional way to look at it:
- Science never proves anything. The basis of science is the ScientificMethod, which can only disprove, never prove. No scientific theory is proven, and any scientific theory can be killed by new empiricism. Yes, even the big ones; see how relativistic and quantum empirical empiricism killed classical mechanical and optical theories, which were far and away the most successful theories of their day. Because this can always happen, we may discover tomorrow that even evolution and thermodynamics are incorrect; such a discovery seems highly improbable to us, but it is the essential distinction between science and dogma that even the most successful theory is not a proven principle.
- I find this oft-heard adage misleading. I believe that I can prove beyond a shadow of a doubt that the theory of relativity, in combination with the other ideas that we join with it to make "Einsteinian" physics, more correctly predicts a wider range of phenomena than does classical mechanics. Scientific theories are models, and models cannot be "proven". One model can, however, be quantifiably proven to apply more exactly to observed phenomena than another. -- DavidSaff
- The distinction between hard and soft science is the ability to falsify theories and reproduce experiments. Soft sciences like psychology, ecology and cosmology deal with realms where it is often impractical to replicate particular experimental conditions or to test particular theories, so the results that come from them are a lot mushier than you get from computer science and quantum physics, where experiments can be precisely repeated over and over again. So hard science is simply more reliable than soft science.
- What distinguishes art from craft is ingenuity. So it is fair to say that art evolves into craft. A good example is this here wiki, Ward's incarnation of which is certainly art, and the WikiWikiClones, which have become more or less a craft. Patterns, I conjecture, are the elements of craft.
- Craft and Science are different activities conducted for different ends. Software development, as a craft, is rooted in hard science - in computer science, which is as hard as they get - and it is often used to accomplish and/or benefits by engineering - but it is essentially and will always be a craft. -- PeterMerel
Let me add another spectrum of disciplines, that I think makes more sense. This would be ArtCraftEngineeringScience
. -- RobMandeville
See Also: PractitionersRejectFormalMethods