Where are my stable isotopes and is computer science really a science?
If you ask someone with a “hard science” degree about the discipline of Computer Science, they’ll be the first to tell you that Computer Science “it’s not a real science”. I guess I kind of see their point because while I don’t have a CS degree, (I’m probably too old to have one anyway ), I did graduate from UW with a degree in Interdisciplinary arts and sciences which means that I got to dabble in many different scientific disciplines.
Whenever I hear hard scientists say something like Computer Science “it’s not a real science” I think are just trying to convey that the hard sciences, like Chemistry for example, demand that you have a kind of decision tree where each subsequent decision is made from the conclusive output of the previous decision which was also based upon hard scientific research. It is also scientifically sound if you base new research upon research that the scientific community has either already done or has concluded is an acceptable starting point. Even a “radical departure” in the scientific community is still based upon some solid scientific foundations.
In the field of computer science however, you can go completely mad. You can ignore most or all of the facts, and you can even choose to ignore the entire CS community for that matter and design an entire solution however you want based upon your own conclusions about what is the right thing to do. And guess what? Your design will actually work well too, at least for a while anyway.
I understand this completely, I have been there myself and I’ve even had to forgive myself over the years for these mistakes. Perhaps it’s because Computer Science has a bit of Art mixed in with real science that we tend to move forward with enterprise level decisions on our own before asking what the rest of our community is doing or even testing our ideas first.
Forging ahead when there is no prior foundation for what you are doing is gutsy and pioneering, but forging ahead on your own while ignoring the entire community who went before you is wholly offensive to scientists, and is tantamount to accepting a “flat earth” model.
Nowadays, I’m starting to attend more and more meetings where questions are being asked like “what is the reality of that situation?” and “what is the likelihood that this will ever happen?”. Is it good science to go in a direction based upon what may happen in the unpredictable future? Should we base our entire platform design on a few legacy clients when it would be cheaper and more efficient just to redesign the legacy clients to use the new platform? What does this thing in the middle here do?
I believe questions like these are the foundation for the good critical, scientific examination that our profession requires in order to evolve. But what is the answer? Where are our stable isotopes?
To the extent that we argue against well established patterns, algorithms, and design principals and just “do our own thing” in the face of proven methodologies and best practices of our community, we fail to elevate our vocation to that of a “real” science.
At the core of Computer Science is the computer, and at our most basic level we are merely dealing with electrical circuits, switches if you will, and we’re trying to determine the most efficient way of turning them on and off. Many well established patterns are out there, many of them have already been discovered and there are many more are yet to be discovered. I promise you that stable isotopes do exist in our profession, we just need to remember to use them.