Please read William Thurston's answer to the question What's a mathematician to do? on mathoverflow. Just to convince you that it is a must-read, let me quote him.
The product of mathematics is clarity and understanding. Not theorems, by themselves. Is there, for example any real reason that even such famous results as Fermat's Last Theorem, or the Poincaré conjecture, really matter? Their real importance is not in their specific statements, but their role in challenging our understanding, presenting challenges that led to mathematical developments that increased our understanding.
The world does not suffer from an oversupply of clarity and
understanding (to put it mildly). How and whether specific mathematics
might lead to improving the world (whatever that means) is usually
impossible to tease out, but mathematics collectively is extremely
I have great sympathy for your question. I did a PhD in logic as applied within computer science and experienced a crisis of utility at the end. It seemed that the strongest skills and deepest knowledge I had, everything I had trained myself in for was completely irrelevant for obtaining a non-academic job. When Matt Welsh , a tenured faculty member at Havard, posted about leaving for Google there was a discussion in which David Patterson from UC Berkeley made the following comment:
I don't think most systems people are going to industry for the money nor are those going to academia so that they can be called Professor. We're fortunate to have chosen a field were there are great jobs in industry as well as academia.
I felt, on reading this, that doing a PhD in theoretical computer science was the antithesis of his statement. Now, I have been applying for engineering (not research) jobs in the industry and I have discovered that there is place for us out there.
- Algorithms are important and relevant in industry. Several problems in industry require good algorithms. You also need solid engineering and infrastructure to make things work. The number of performance bottlenecks to effectively solving real problems is never ending. If you're good at analyzing time and memory consumption of a real system and improving it, there is a lot of work for you.
- Clarity in problem solving is an invaluable skill. You have training in getting to the mathematical essence of a problem and ignoring distracting baggage. You may also be able to implement a good solution, or implement a reduction to a form that can be solved efficiently.
- Aesthetics has value. This comment is based on limited exposure but after looking at code that has been open sourced by places like Google and facebook, I see that effort has been made to exercise logical hygiene. If you care about mathematical aesthetics then I expect you may have similar discipline when you program and my impression is that such discipline is valued.
- Randomization is at its empowering best in a real system. There are so many situations ranging from protocol design to uses of Bloom filters and clever design of caching mechanisms that rely on randomization to scale. To me seeing randomization in action is as fascinating as seeing it in a theorem and even more satisfying.
There are many people with powers that come with a theoretical computer science education who have gone on to have successful industrial careers. I am not concluding that it is this specific knowledge that made them successful, but it definitely didn't impede them.
- In the mid 1970s, an undergraduate at Havard university and an assistant professor wrote a paper titled Bounds for sorting by prefix reversal. When Christos Papadimitriou called up the student to inform him the paper was accepted to Discrete Mathematics, William H Gates had already moved to Albuquerque to start a company.
- Ashok K. Chandra, coauthor of the 1979 conference and later 1981 journal paper Alternation is in the industry.
- The Algorithms and Theory Group in Google has a lot of formidable theoreticians who, as far as I can tell, work on applied problems as well.
This is just a random and tiny list. My aim is not to be comprehensive but to point out that there are theoreticians everywhere. I hope you enjoy coding, because that is an indispensable skill, and I believe it is one of the few common denominators across computer scientists. Of course, you will not use everything you know on a day-to-day basis. But I don't expect this to be the case even if you stay in academia, unless you continue to work on exactly the same set of problems for years on end. If you were thinking otherwise, try Matthew Might's Illustrated Guide to the PhD.