In our field, I think of those involved in academia and research projects as computer scientists. The most common benchmark used to measure computer scientists’ performance is to look at research papers and/or books they have published. Since the results of their research are usually closely inspected by their peers and some of which is tested out empirically in commercial applications, a lot of their work is spent in proving the correctness of their results.
A software engineer, on the other hand, is measured by the quality of the products he has helped deliver. If his applications are robust and perform well, he is worth his weight in gold. Unless you work in a very specialized field, when is the last time a customer asked you to deliver an application along with a formal, mathematical proof?
I like to refer to computer scientists as idealists and software engineers as pragmatists. Until recently, I wanted to be one of the former. A few years ago, a professor of mine called me into his office for a meeting where he suggested I study for a PhD. Despite being sorely tempted, I declined his offer then, but kept it as a definite option for later.
After a break of several years, I have had the opportunity to read several research papers this year. They have shown me I will never again be a computer scientist. Theory just seems too dry a subject now; it is a lot more interesting to create solutions in the real world. Reading a recent research paper written by someone I knew 6 years ago, doing stuff similar to what he was doing back then, drives home the point that I am very happy having moved on in life.
If the field of computer science can be pictured as a tree-like data structure, I’d rather traverse the breadth of the tree than traverse down to the leaf in any given branch. Some people call it being the jack of all trades and the master of none. I call it a richer life experience.