Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The Difference Between A Developer, A Programmer And A Computer Scientist (skorks.com)
101 points by sayemm on June 14, 2011 | hide | past | favorite | 26 comments


This reads like a load of pop-IT-psychology nonsense. Take a few terms and adapt them to whatever preconceived notions you have, and whammo, there's your thesis statement.

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.


I think you're misunderstanding the author's intention. He's not trying to describe how the terms are used, he's trying to classify what he sees as more or less distinct disciplines of the field.

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.


But how he assigns the three titles is almost entirely arbitrary. He might as well just call them Type 1, 2, and 3 programmers instead of trying to artificially force distinctions between developer, programmer, and computer scientist.


The problem with that is that linguistic terms are defined over time and can change through how everyone understands and uses them. For example, see the words gay and hacker.

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.


Alan writes useful things, but this is pretty much meaningless. He says so himself: "Developer are programmers to a greater or lesser extent. Computer scientists are programmers to a greater or lesser extent."

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.


I'd always classified a Programmer as someone who writes code to someone else's spec, and a Developer codes to their own spec

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


Agreed. In my experience, a programmer would usually work in a team lead by a developer. In banking tech (my domain), a programmer is usually a contracter or offshore. A developer would be a employee and would be onshore.


I think this is the most common definition.

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".


In South Africa, the terms "junior developer", "developer" and "senior developer" are used in job ads/specs. I haven't seen the word "programmer" for a while here. Maybe here it's people who work with older technology (mainframes etc) who are called programmers, and people who work with modern technology are called developers.

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.


That's easy. A "computer scientist" is a tenured professor^W^Wsomeone who does research in computer science. A "programmer" is someone who writes code for a living. A "developer" or "software engineer" is a programmer who likes business-y titles.


There are industry "computer scientists." Your definition should simply be "someone who does research in computer science."


OK, I agree.


Computer Scientist: A computer scientist is as much a mathematician as they are a technologist

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.


Agreed. I have a background in mathematics and formal computer science, and a great grounding and feel for algorithms, yet I work as a product manager and hack on stuff in my own time; in fact, I think "hacker" was completely overlooked in this list.


Is it me or do the pictures portray a vastly different level of social prospects for each of these categories?


I really love the distinction that a programmer programs, writing code and making executables, while a developer builds a product, and a software developer builds a product made out of code.

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.


Some people prefer math over code. Some people prefer code over math. Some people are not specialized in either but are good at other stuff.

News at 11.


I think the only way for this to not be meaningless is to have some sort of industry standard, along with accreditation programs and so on.


I don't think this article helps us much at all, although I am sure it was written with good intentions.

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 :-)


Computer scientists get ahead in their careers by writing papers, not by writing software; they often prove things mathematically, but they're not particularly good at writing software that actually works.

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.


.. and then there are CPC - CopyPaste Coders, who glue snippets of code found on the web into an incoherent mess that gets some narrow job done.

Some of these graduate to Developers, the ones who don't and want to stay in the industry become BigCo Managers...


My dad is a CPC on the side; He's actually an accountant. One day I caught him programming Excel macros. His office has this spare computer which just runs macros all day long to automate downloading tens of millions of rows of database data from the company oracle database into thousands of Excel spreadsheet files.

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 ;).


I definitely started off as a CPC who wanted to jazz up his website.

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.


Why can't I just like computers?


Is the "hacker" categorization missing?


Computer Scientist: busy writing the next AES or Bitcoin.

Programmer: writing software code on a spec.

Developer: building the next Facebook.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: