views:

1290

answers:

12

What is the difference between a Computer Scientist and a Computer Programmer? What is the difference in the actual work they do in industry?(not in academia) Can you provide some real world examples too?

+3  A: 

*puts on the not serious answer hat*

One is pragmatic, the other, not.

Ólafur Waage
+5  A: 

actually the wikipedia definitions are quite nice for this.

Computer Scientist

and

Computer Programmer

Konstantinos
My only problem with that Wikipedia article on Computer Scientist is that it says that they might focus on software engineering. In my opinion, they are two very different fields and someone who has studied true computer science is not necessarily cut out for the work of a software engineer.
Thomas Owens
well, it's wikipedia, so you could always edit in your opinion if it's well justified ;)
Konstantinos
True, but most people would disagree with what I said.
Thomas Owens
@Thomas, dunno about that. Imagine most people would rather have an architect build their house instead of physicist. @Konstantines, well, it's wikipedia, so remember *anyone else* has come through and edited in their opinion.
Roger Pate
I'd say that Software Engineering is one branch of Computer Science, like fluid dynamics is one field of physics. There certainly are computer scientists who focus on software engineering, and others who know very little about it.
Michael Borgwardt
imo computer science is a very, very broad spectrum of different disciplines. AI, Neural Networks, Algorithms.. you name it.A programmer on the other hand, still very broad in the fields that he can work on, but in a way specialized in a part of the software production model.
Konstantinos
@R. Pate Actually, false information doesn't live that long in wikipedia.
Konstantinos
+7  A: 

its the same as an engineer and a mechanic. unfortunately i think i am a mechanic :P

Umair Ahmed
Actually, I tend to think of it more as physicist and engineer. We build better bridges by understanding physics and some things we couldn't have built without the research into the fundamentals. Still, I'd rather hire a civil engineer to build bridges.
HerbN
+2  A: 

I would use the analogy of a person who builds houses versus someone who designs the houses.

Now there is a third category which would be someone who looks for ways to implement the designs of the houses.

So, I would say the programmer tends to be the builder of the programs while the scientist focuses on the finding ways to implement the peices. For the most part programmers USE the work of the scientist to get their work done.

Specifically I would say a programmer implements a quick sort algorithm while a computer scientist discovers the algorithm.

Tom Hubbard
+19  A: 

Computer science is an academic field. It's a little like studying mathematics. It's studying and researching algorithms, data structures, and similar.

Computer Programmers write programs; the term tends to be used to describe people in industry, although of course computer scientists write programs too.

An archetypal computer scientist would be someone like Don Knuth. His work on algorithms is legendary.

An archetypal computer programmer might be Jeff Atwood. We're using his site right now.

Steve Cooper
Someone like Dijkstra may be even more archetypal as a computer scientist.
nagnatron
Don Knuth is one of the rare people (the only one I know) who is not only a computer scientist but an excellent programmer too; he wrote TeX (current reward $327.68 for any bug found) and CWEB and created the practice of "literate programming".
ShreevatsaR
Huge fan of Don Knuth myself.
Umair Ahmed
And Dijkstra himself considered himself a programmer even though he had stopped using a computer! (See his "The Humble Programmer", " Programming Considered as a Human Activity", etc.)
ShreevatsaR
A: 

:-) A Computer Scientist is a fraud. There really is no such thing as computer science, computers themselves are built by electronic engineers based on the work of physicists and mathematicians. The fundimental basis of software is mathematical, and, it is implemneted by Software Engineers (who freely admit to being Computer Programmers).

Computer Programmers on hte other hand are what they say they are -- people who program computers!

James Anderson
I'm a software engineer. I am not a computer programmer. To me, "programmer" is someone who just sits and writes code. Software engineers (can) do far more than that - requirements elicitation and analysis, design and architecture, testing and QA, project management...
Thomas Owens
@James Anderson: well, if you want to call the study of things like lambda calculus, algorithms, data structures, operating system concepts, computer vision, HCI, genetic programming etc. 'physics and mathematics' then you're welcome to. Most people call those who study these things 'computer scientists', but you know, a rose by any other name :)
Mark Pim
When I hear "Programmer" I tend to think about trained chimpanzees who have learned a trick in return for banana's and who are willing to repeat this trick over and over again, as long as they keep receiving banana's. I'm no programmer either. I'm an Engineer. I don't repeat a single trick, I just keep learning new tricks forever, willing to try new things forever. (So maybe I'm an evolved Chimpanzee, but then again, isn't that Darwinism?)
Workshop Alex
What has computer science got to do with actual computers? Anything that can be computed on any computer can be computed on a Universal Turing Machine and many of the fundamentals of computer science were laid down before computers even existed.
Dipstick
No fair. I did have a little smiley in front of the comment!There are several acedemic fields where people study things deeply, like renaisence poetry, stone age pottery, etc. etc. but this does not make them scientists.
James Anderson
+2  A: 

You can made a parallel to Mathematics and Applied Mathematics. One is capable to explore and investigate new mathematics models and theorems and the second one is how to use and apply them on practice. So exactly the Computer Science and Computer Programming. One explore new CS field theorems and explore new efficient data structures and the second is more about how to use scientific result efficiently.

Artem Barger
A: 

The Computer Scientists will worry about the road you have to take to reach your goal, but worries less about the goal itself. A Computer Programmer cares less about the road and worries about reaching the goal before the deadline whooshes by.

The best software tends to be written by people who are a little of both. You need a good road so others can easily follow and perhaps even improve things along the way. But this all should not be a too big a distraction for the deadline to pass by without you reaching the finish first. Many new projects have failed to start because the Scientist needed too much time working on the road. Also, too many existing projects have failed too because Programmers took a quick route and no one seems to be able to follow it again.

Workshop Alex
And people who are both Scientists and Programmers are called Engineers... ;-)
Workshop Alex
+2  A: 

There was once a joke that went:

Q: What's the difference between an ape and a CS professor?
A: An ape doesn't think he can program.

This is rather mean to CS professors, many of whom can actually program. However, not all are in the habit of doing this on a regular basis. At the theoretical end you see people who are essentially mathematicians. Some HCI people are more in the applied psychology space than programming. Other examples of this sort can be found - there is considerably more to Computer Science than just programming.

On the other hand, there are many practicing programmers who lack basic understanding of CS theory such as big-O notation. Regardless of one's views on whether it should, it certainly doesn't stop people from practicing as a programmer.

This, one can take the view Computer Scientists and Computer Programmers are not the same things, although they are by no means mutually exclusive. One can be both a Computer Scientist and a Computer Programmer.

ConcernedOfTunbridgeWells
I find it a bit unfair to say that computer scientists may not be able to program - fullstop. Maybe they are not able to deliver real world systems in reasonable timeframes, but this is very different from saying "they cannot program".
Andrew from NZSG
True enough. The original joke is really referring to the ability to make working deliverables than programming at all. I think the key point here is that one can be a Computer Scientist without being in the regular habit of writing large production application systems.
ConcernedOfTunbridgeWells
+1  A: 

1 word: scientist or programmer.

kenny
+5  A: 

I'm a Computer Scientist (says so on my degree, so it must be true!) with 26 years' experience. I've spent maybe 5% of that time writing programs; the rest of it has been:

  • performance testing applications that others have written, and recommending solutions when problems are found
  • building testing competency groups in big companies
  • running operations teams
  • running R&D teams
  • software architecture
  • investigating and approving architecture solutions (recently, Ruby, F#, Erlang) as appropriate for the organisation I work in
  • designing infrastructure solutions
  • running technical training courses
  • ...

I write code now primarily to make my life easier at work, or for my own interest; I don't work as a "coder", and have very rarely had to rely on my coding skills for income.

If you are looking for a simple explanation of the difference in industry, I'd suggest that a programmer is primarily concerned with WHAT gets done and WHEN, and a computer scientist is primarily concerned with HOW it gets done and WHY. I'd be interested in hearing others' thoughts on whether this distinction fits their experience

+1  A: 

Nowadays, one can call himself/herself a computer programmer even if the only language they know is VBScript. Cynicism aside, I have frustrations with some of the industry terminology myself, e.g. computer programmer or software developer.

See Definition of a software engineer, Difference between programmers and engineers

The difference between scientists and engineers is pretty clear though. Both need to know computer science, but the main focus of scientists is expanding the scientific body of knowledge, whereas engineers are focused on applying this knowledge in real-world systems.

Andrew from NZSG
Thanks. You just saved me from writing the same answer. Only I'd have used the analogy between physicists and Electrical Engineers.
John Saunders