Monday, February 16, 2009

It's not rocket science!

Last weekend, I was attending some family function. Somehow (ie. my mom), everybody knew about my very likely internship with Google. Of course, I was flooded by questions about what I'll be working on next summer by my non tech savvy relatives. As always, I failed at the task of explaining what the heck is computer/software engineering all about.

There is a popular saying "It's not rocket science". Because of this saying, probably from the 60's, rocket science is still considered by the proletariat to be the pinnacle of complexity. Yet, I still haven't met a single person who is not aware of the basic working of a rocket. On the other hand, I have met plenty of people who do not understand in the slightest the inner working of a computer. Most of those people use a computer every day.

At the moment, it is not very clear to me why that is. But the question that interest me at the moment is: Is computer science/engineering more complex than rocket science or other professions. I would argue that it is, or at least, that it's way up there.

Computers are design to handle large and complex calculations. They do that by doing simple arithmetic very very fast. The software that solves a particular problem has to be written by engineers. The problems solved by computer software are often too large to be solved otherwise. These problems are often very abstract. During the design and implementation of the software, the engineer has to understand the problem, one that was to difficult to solve manually in the first place. He then needs come up with a solution to solve the problem. Of course, various techniques are used to reduce the complexity of the problem. Those techniques usually consist of splitting the problem in smaller, more understandable, parts. The engineer can then juggle those smaller parts in his mind to find a solution.

So, by this definition, engineers are people who solve problems to complex to be solved by traditional means. The abstract nature of software is, I think, what makes computer more complex to understand than a physical system like a rocket. We can explain or demonstrate some features of a software, we can display the large data center filled with computers used by our software, but we will never be able to explain the inner workings of the software. It is the curse of the computer engineers.

How do you answer those questions during family parties?