I don't really agree with the arbitrary world defined in this article, it seems overly simplified and makes a lot of assumptions. I understand this might be just for beginners or people who want to get a simple view of the world but it's totally not how it works.
The "real world" is actually much simpler. A "coder" is somebody who "codes", a "programmer" is somebody who writes "programs" (is this different from coder? Maybe the way we perceive the word is, but deep down it really isn't). A "hacker" is somebody who "hacks", which can mostly mean who engages in playful cleverness[0], it needn't be software or hardware, low or high level. A "developer" is somebody who "develops" software (this might be a step up from a programmer because a developer is usually the creator/architect of that software too, not just a code monkey). A Computer Scientist is somebody who studies Computer Science, which is a branch of math, usually (but not necessarily) with a degree.
Feel free to criticize me, this is my view of this world as opposed to the author's view of his own world which I don't agree with.
I ask because English isn't my first language. Is a scientist really considered someone who studies a field? You might have a degree, but does that make you a scientist?
I always thought a scientist usually is at least at PhD level.
English isn't my first language either so I apologize if this is incorrect.
I think a scientist is somebody who applies a scientific method or, more broadly, does research in a field. Since "Computer Science" isn't really a science (it's closer to Math) it gets muddier, I'd assume a computer scientist is somebody who does research in the field of computer science. That's as "objective" as it can be in my opinion.
All in all what's important is that these fields needn't be mutually exclusive, one can be a programmer and a computer scientist. (And the original point of my comment was that applying arbitrary definitions to roles is way too simplistic, the best we can do is apply those words as literal value)
To my mind a scientist means someone who is doing research - whether that be academically or industrially - and qualifications are secondary to that. I don't really feel comfortable with "computer science", as it seems to mean different things to different people, and isn't always in line with what I think of as "science".
I understand what the overall article is trying to present, and I agree that there are differences between each of the labels presented.
I think that understanding each label means more about understanding the person using the label than understanding some absolute definition of each term. My understanding of a self-assessed hacker or coder is going to be far different from my understanding of a person that is labelled by others as a hacker or a coder. I think most of these labels are really interchangeable in most circumstances and it comes down to understanding how each is being applied rather than each having their own definition.
Language has incredibly subtle nuances that mean different words change meaning in various ways, and the ways in which they change it vary between speaker and listener. Unless the speakers of a language decide that the nuances aren't worth the effort of maintaining more than one word for the same thing, in which cases, less favoured words die out. You used the word "isotonic" instead of "equivalent" or "synonymous", presumably for good reason.
In my mind, "code" implies something opaque, mysterious, and difficult, rather than something which is open to all.
that's not true, its very popular outside of web development in general day to day use as slang.
in my circle we probably use it much more than 'developer', which is a woolly term that encompasses all kinds of artists, designers, producers, teams and whole companies. although the standard term is definitely 'programmer'.
I have always seen 'coder' used for someone who essentially transforms designers intent into HTML/CSS/JS (or other GUI code) and does not especially care about backend code. I have seen it used with this meaning even in job postings (mostly web development related).
i dont have much contact with that part of the programming world (although i work in a web dev office atm) - every time i've heard it used its to refer to a programmer working on performance critical desktop software or AAA games... that's the opposite end of the spectrum pretty much.
I find this interesting - even though scott says he doesn't think its coding in the traditional sense a lot of people do.
This is something that never comes up in my circles (web programmers aren't 'real' programmers) we all believe it is a way to encode data...
However, there is a common confusion here - code as a word is meant for the sense of encoding data. Program code seems to have swallowed this original meaning so a lot of programmers think of programs and instructions as being 'code' probably because its a short 4 letter word
Even though the conceptual requirements to understand HTML and CSS are far below that for program code, they are very much still a subset of it so I don't think its especially harmful to use the word 'code' in this way.
HTML and CSS are each a language by which a person expresses instructions for specific transformations of an input string into computer output. If Kernigan and Ritchie were correct to call "Hello World" a program then HTML and CSS would quack in the right way to be programming languages even if it were not possible to make syntax errors or they did not require f5 to see if the latest attempt at debugging worked.
That they are easy and forgiving, ought to make us consider them as worthy models for our next language not as objects of scorn,
One certainly could describe html and css as 'declarative' programming languages in that sense, but I think its a pointless definition then because all data fits that same definition - so why not just call it data?
The key thing here is about what is encoded, not what the output is. A C Hello World program encodes a call to printf along with a data string as a piece of executable code in the entry point of some executable format - the fact that printf is a library function is deceptive - because the encoding of that is important too and it describes how to interact with the OS to output text. HTML containing "Hello World" encodes merely the string and gives you no choice of what is done with it - nor can you interact with the OS, the hardware or any of the surrounds without introducing more (e.g. JavaScript).
However, the fact that you edit it directly in a text editor makes it coding. I have no disagreements with that at all... but the fact that HTML and CSS are difficult to use data formats doesn't qualify them to be 'full' programming languages imo.
As for scorn, I have no scorn towards HTML and CSS because of their perception of being code. I do however have plenty due to the design and real world implementations - not because they are 'easy', but in fact they are much harder than they need to be due to a combination of poor design and poor browser implementation. I can qualify that a lot, but its an article of its own I guess... not a comment. :)
Any decent programmer should be able to design a superior alternative to HTML and CSS imo. Its not a difficult task.
To push the analogy further, just for the hell of it, the html:
<p class="fancyText">Some fancy text</p>
does in fact transform the data without javascript [or rather it might transform it in combination with appropriate CSS].
Pushing further: How is #include in C much different from <script></script> in JavaScript?
I mean hello_world doesn't do anything interesting without calling `printf` and `printf` for all we know might have been written in assembly. To put it another way, without the various libraries, about the only interesting thing a C program can do is crash your computer.
One of my definitions for hacker is someone who learns coding, while simultaneously being told by the majority of peers and relations that they are wasting their time and should stick to what they are capable of.
The "real world" is actually much simpler. A "coder" is somebody who "codes", a "programmer" is somebody who writes "programs" (is this different from coder? Maybe the way we perceive the word is, but deep down it really isn't). A "hacker" is somebody who "hacks", which can mostly mean who engages in playful cleverness[0], it needn't be software or hardware, low or high level. A "developer" is somebody who "develops" software (this might be a step up from a programmer because a developer is usually the creator/architect of that software too, not just a code monkey). A Computer Scientist is somebody who studies Computer Science, which is a branch of math, usually (but not necessarily) with a degree.
Feel free to criticize me, this is my view of this world as opposed to the author's view of his own world which I don't agree with.
[0] http://stallman.org/articles/on-hacking.html
ps: shall we add also sysadmins, IT techs, Software Engineers and Computer Engineers in the mix?