I am a first year college student who just declared a major in computer science. I've been doing different internships this summer building web and desktop applications using asp.NET, Java-ee...etc. I've heard many titles for this job, mostly web/software developer. How does that differ from a computer scientist?? Is it the algorithms part of the study?? Are software engineers the same as computer scientists??

+7  A: 

How do software developers, software engineers, and computer scientists all differ?

By varying degrees of pragmatism.

On a serious note, the terms software developer, engineer, programmer can be used interchangeably IMO but they cant be nowhere close to computer scientist. Also you might see many universities having two distinct programs for Computer Science and Computer Engineering.

The diagram shows the main areas of concentration for developers/engineers/programmers on the above and scientists/mathematicians below although there might be minor overlapping of areas between the two.

alt text
Image source:link

Elsewhere on SO:

I like the picture, but maybe you should explain that you have software engineering above the red line and computer science below it? :)
Erik B
@Erik B, done. Thanks for pointing out.
+1 for "Varying degrees of pragmatism" - QFT.
Wayne Werner

Yea, computer scientist is an academic, not so much a job description. If I'd read a job offer explicitly for a "computer scientist", I'd expect an above-average amount of theory involved.

As for the difference between software developers and software engineers - I'd say it's just a question of taste. In the beautiful book "Dreaming in Code" (hundreds of pages about a writer "embedded" in a complex software project), Scott Rosenberg describes how building software is so not like building bridges and claims that "software engineering" is an attempt to at least make it sound like a discipline of engineering ;)


Simple answer yes, they're all the same. While software engineer may suggest an engineering degree but this is not typically the case. Various titles can largely be put down to vanity and affectation. I used to have a bin man collect my garbage, these days its a refuse engineer :)

Shane MacLaughlin
+2  A: 

SW developers and SW engineers are very much used interchangeably in the industry. I remember 10 years ago when SW engineering was getting a lot of industry attention, most ppl are hiring for SW engineers. More recently with web gaining more popularity, I see SW developer is used more commonly. Computer scientists rather than focusing on developing project/product, is focusing more on theoretical framework, algorithms, logic or novel approaches to all areas of computer science domain and they may develop some practical work as a base to demonstrate their idea/hypothesis.

One simple perspective is to say the measure of success for SW developers/engineers is the code and product they produce, for computer scientists is the idea/theory with sufficient proof.

Fadrian Sudaman

I have a software engineering degree and I would say that the difference seems to be that we have more classes on project management and software development processes than computer scientists generally do.

Erik B

Different problems in software will cause you to put on different hats.

For example, if you're putting together a website with some minor processing in the background - one could argue that you're just being a "software developer". However, if you notice slowdown caused by some searching routine and you get down to the level of analysing the algorithm you're using, then you've entered the realm of the "computer scientist". The management of the your project might be classified as "software engineering" (your methodology, testing strategies etc.)

To be successful in the field, a person shouldn't try to classify themselves exclusively into any of these categories. As Zaki said in their answer; pragmatism.


The employer may be giving you a hint to the type of person they're looking for, or the work they'd expect you to do. Computer Science suggests a systematic seeking of breakthroughs in insight into some problem domain, yielding new techniques. The computer scientist may have very volatile productivity, as bigger problems might require many attempts to solve, might seem increasingly or be proven impossible etc.. Considerable creative thinking can be involved, as well as evolving, combining and transcending approaches taken by others. An engineering mindset involves systematically and professionally applying the most appropriate known techniques to balance an optimal result with the productivity/cost to get there. It's less about doing something insightful (making a new tool/technique), and more about knowing the existing tool set and getting stuff done with relatively predictably reliability and productivity. A "software developer" - to my mind - is someone who is unrestrained by expectations of following either of the above approached, so they might sit for a day trying to get a "science" feel of one sub-problem, then apply their solution in a structured, deliberate engineering way to some larger problem, combining it with some ad-hoc relatively unplanned free-wheeling coding for other requirements.

Cheers :-)


related questions