Computer Science vs Development

I often hear the terms computer scientist and developer or programmer used interchangeably. They're actually quite different. I think developer and programmer are synonymous, but both are very different from a computer scientist.

Computer Science is a legit hard-core science tackling problems such as algorithm creation and optimization, encryption, distributed systems theory, artificial intelligence, computer vision, and so on. At some level, Computer Science and Mathematics become one - determining mathematical proofs to hard problems.

Most of us that write code for a living aren't solving computer science-y problems. Web development and general application development is largely taking input data from some source, and writing it to a database. I don't mean to diminish what we do, and I certainly don't mean to imply that it's easy.

A computer scientist is to a developer what a mechanical engineer is to a mechanic. The former is very theoretical, and necessary for the later to exist, and progress. The science is very different from the practical daily work. If your car has broken down, you could seek a physicist or a mechanical engineer, but it would be wiser to find a mechanic. If you need someone to build you an application, you could find a computer scientist, but your probably better off finding a developer.

A computer scientist can be a developer, and vice-versa. Just like someone who has worked on cars their whole life can really excel when taking on a formal engineering education and putting some substance behind the "real-world" knowledge they've built up from hands-on experience.

A developer that can bend code to their will and has figured out their own set of principles from real world experience should really be able to shine in a computer science degree program, and would then have all the technical tools to be really good developer.