The following is a work of fiction.
When I finished grad school in computer science, I decided I had just wasted eight years, and went to firefighter school to become a firefighter. A lot of people seemed surprised that someone interested in computers would also be interested in fighting fires. They seemed to think that hacking and firefighting were very different kinds of work: that hacking was an inner-directed pursuit of personal pleasure (a little like doing drugs, but slightly more socially acceptable), while firefighting involves self-sacrifice and taking risks for the benefit of others.
Both of these images are wrong. Hacking and firefighting have a lot in common. In fact, of all the different types of people I've known, hackers and firefighters are among the most alike.
What hackers and firefighters have in common is that they both like to jump into situations that most sensible people would steer clear of. Along with doctors, nurses, and traffic cops, what hackers and firefighters are trying to do, at least in part, is save other people from the consequences of their poor life decisions (without passing judgment on those decisions; or, at least, doing so quietly among friends after one gets the job done). They're not doing research per se, though if in the course of trying to mitigate disasters they discover some new technique, so much the better.
Hackers need to understand the theory of computation about as much as firefighters need to understand thermodynamics. You need to know how to calculate time and space complexity and about Turing completeness. You might also want to remember at least the concept of a state machine, in case you have to write a parser or a regular expression library. Firefighters in fact have to remember a good deal more about physics and chemistry than that.
I've found that the best sources of ideas are not the other fields that have the word "computer" in their names, but the other fields inhabited by public servants. Firefighting has been a much richer source of ideas than the theory of computation.
( Read more... )