The Difference Between A Developer, A Programmer And A Computer Scientist
skorks.com
skorks.com
I've had the job titles "Software Engineer", "Software Developer" and "Computer Scientist" but I was basically doing the same job each time. A job title doesn't cause a fundamental change in behaviour or capabilities. If it does, then you have a whole other major problem.
FWIW, I always refer to myself as a "programmer" socially as it seems to be the simplest form for people to understand.
He's also not trying to classify types of jobs, but types of people, and how the different types think. I don't know if he's totally right, but it seems like a valuable enough line of inquiry to me, both to better understand who you are and what kind of role is best suited to you, and to understand others in the field and what roles they are best suited to.
For the category of career types, definitions can only remain constant to an upheld ideal when there's a professional body that enforces what the term means. The professional body may or may not be successful in its efforts. For example, there are a lot of P.Eng folks who dislike it when software guys and network guys call themselves engineers.
Why put ourselves into different camps? Why can't I write poetical Rails code during the day and read the latest research papers on type theory at night? Placing ourselves in these artificial camps hinders us from exploring new places and ideas. This is why I'm tempted to call myself an artist or inventor (though to much ridicule) instead of a programmer or developer or computer scientist.
A Programmer is a specific role - write code to do exactly this. A Developer has a broader role - they're often also heavily involved with the BA side of things, overall architecture and DB design.
Developers tend to exist in smaller companies, and are replaced by more specific titles an the company grows. A startup may have a handful of Developers, whereas a larger company will have a team of BAs, a team of DBAs, another team of Architects and sometimes multiple teams of Programmers. In large companies like this, Programmer sits almost at the bottom of the IT food chain, just above Helpdesk
I don't think I've ever met a Computer Scientist
Largely because it is self-enforcing: most "Developers" don't like to refer to themselves as merely "Programmers", because programming is only a subset of what they actually do. People who just code have no problem referring to themselves as "Programmers".
You also see this reflected in the way companies communicate: companies for whom the people writing code are at the bottom of the food chain will commonly refer to them as "Programmers".
Basically, the term "Programmer" has over time become the IT-equivalent of "grunt".
Overall, I think this is a pointless discussion that gets resurrected by blog writers (or are they "authors") periodically, and doesn't add much to the field.
Programmer: A good breadth of algorithmic knowledge is imperative
Developer: They are consummate generalists without any truly deep specializations
Since those are bolded I assume the author means those as the defining characteristics of each group. Yet I see all of those in myself. Depending on the project, some aspects stand out more than others, and some styles (throwing together, designing, refactoring) stand out more than others as well.
I'll just nod my head to the other commenters who don't find this article very useful.
Programs and products are two different thing in this metaphor. A program is just something a machine can read while a product is something a human can use.
News at 11.
I personally don't think of a "computer scientist" as being the kind of person who writes very much code at all. Their main concern is with the mathematical properties of various (potentially theoretical) methods and algorithms of computation. This thinking trickles down over time into language design and (very) occasionally into some new whiz-bang algorithm for doing stuff really fast.
A "programmer" (to me) is someone who writes code for a living. They may not know too much about data structures and the like, but maybe they don't need too if they're using a modern language that makes that kind of thing easy. I don't really know what the difference between a "programmer" and a "developer" is, but my job title has "developer" in it and I spend all day programming so I'm probably allowed to be plenty confused about that :-)
For instance, I once got a C program from one of the machine learning masterminds of our time which crashed in the static initializer on 32 bit machines because it allocated a 4GB array that it never used. If you get some software from an academic research group there's a high probability that it won't build or won't run.
"Programmers" and "Developers" both write software for a living and I don't think it's worthwhile making a distinction. Lately I've been using "Web Developer" as a title for myself that more like a "Real Estate Developer" than a "Software Developer" but I'm afraid this is a non standard usage.
Some of these graduate to Developers, the ones who don't and want to stay in the industry become BigCo Managers...
A decade and a half later, turns out they'll pay you for this sort of thing. Not making snowflakes fall down, but programming in general.
He asked me if its possible to improve his system and I said I didn't know where to start.
I was quite surprised indeed, the things office workers can come up with ;).
Programmer: writing software code on a spec.
Developer: building the next Facebook.