David Anderson writes some stimulating words, but troubling ones as well...
What does it mean - "Management science for software engineering"? Why do I say that on this site?
I'm not making it up. What are we saying when we say we are doing science? Science is the idea that we can predict the outcome of events given our understanding of how things work. Our understanding is typically expressed using a model. Sometimes those models are expressed as mathematical equations but often times they are simple visual models or sets of rules or abstractions that appear to be true for a given problem domain. These models can be used to predict a cause and effect relationship and the effect can be measured. If it concurs with the predict results based on the model then the model is believed to be true.
David has got the first fourth of the "doing science" ...
- Observation and description of a phenomenon or group of phenomena
- Formulation of an hypothesis to explain the phenomena. In physics, the hypothesis often takes the form of a causal mechanism or a mathematical relation
- Use of the hypothesis to predict the existence of other phenomena, or to predict quantitatively the results of new observations
- Performance of experimental tests of the predictions by several independent experimenters and properly performed experiments
What's missing is the hypothesis of why the observations exist or have impact, the prediction of this impact outside the observed situation, and the set of experiment that test the predictions through independent experimenters and the most important through the proper performance of these experiments.
One of the critical classes in any graduate program is the "experimental methods" class. This is where the students learn how to conduct experiments. For the physics students (like me) this would be a hard core mathematical class, for the social science students it would be a bit softer in rigor. But for all graduate students the concepts of experimental evidence connected to the hypothesis is important.
Finally for the hypothesis to be useful it needs to state the Null Result as the test. This is the basis of the refutable hypothesis. What this means is that it is not science if I can not perform an experience that refutes your hypothesis. "Are the aliens visiting earth?" Good question. But since I can't refute the hypothesis the question is not a science question. Is there intelligent design? Can't tell, because I can't construct an experiment that refutes the hypothesis.
Is there "management science" being applied to software engineering? Where is the refutable hypothesis and the supporting independent experiment?
Sorry David, what you're doing might be called software engineering, but it is not science.
Why is This Important?
First let me state my biases and deep seated prejudices:
I was trained in physics. I practiced physics for a short time as an experimentalist. Then I was recruited to write software for money, which paid better than particle physics and learned that signal processing algorithms for the particle detectors had direct application to radar and sonar processes.
As a nation we are far removed from the practice of science. I live in a town that has three national laboratories, a university with several physics Nobel Laureates and a slew of research laboratories doing searching for cures to cancer to nanotechnology for consumer products.
We hear about intelligent design, global warming, cures for disease and theories of almost anything modern and technical. But few actually understand what science does for a living. We toss around terms that scientist use like proof. Things like ..."this week I published a paper that proves this point," without (and I conjecture here) actually knowing what a scientific proof actually looks like in a refereed journal.
So Who Cares and Why?
Because we as a nation are getting sloppy. China, Japan, probably most of Europe see the sloppy thinking about science and smile. Keep going boys we'll be catching you soon. I was in graduate school with some students from Japan. One of our principle investigators was native Japanese. Our brash and swagger approach to problem solving problems with the equipment - "turn it on, that's why they invented fire extinguishers..." - clashed with their thought processes. But in the end we prevailed because we were willing to take risks and "do the experiment" without knowing exactly what would happen (the fire alarm was close at hand).
But the core understanding the science is a hypothesis that requires rigor and disciplined thought has somehow been lost in the politics of our modern era. No one wants to discuss the details of the evidence. That's much too difficult and effort. "My method works for this instance and it'll work for you too."
At best, this is muddled thinking and at worse it is plain shoddy work.
What's My Real Beef
It starts when Computer Science is used as a description of what is essentially computer programming skills and goes down hill from there. There is little science in Computer Science. What passes for education in CS is programming skills development - higher skilled programming of course.