I was recently asked about the difference between a “coder” and a “programmer.” Here are my current thoughts on this subject:
A “coder” is someone who knows just that: how to code. They can write software, websites, scripts, etc in at least one programming or markup language. I define “programming” as the art of creating something the computer can understand. Sure, a large portion of this is coding, but there are more steps of this process that are just as (if not more) important. Such steps include storyboarding, algorithmic design, testing, making the code more efficient, etc. These steps require a deeper knowledge of how programming languages and computers interact.
Consider three people: a person who knows French, a person who knows Spanish, and a person that can translate between these two languages. The Spanish speaker may be completely fluent in Spanish, but if they are unable to translate Spanish to French they cannot interact at the most efficient level the French speaker. Sure, they can use language “hacks” like hand gestures, a few phrases they may know, etc. to communicate at a basic level, but they will not able able to have a meaningful conversation. This is like a “coder,” where the French speaker is the computer. In order to have a better connection and understand each other fully (even down to the slightest nuances), the translator or “programmer” must step in.
I’ve noticed that there’s a general misconception about what “computer science” is. Sure, arguably the most practical aspect of computer science is coding software, but the study of computer science encompasses so much more. As mentioned above, programming itself is also often confused with coding, so there’s a lot of misunderstanding happening. Some use the terms “programming” and “computer science” interchangeably, but I do not. I consider computer science the study of the art and practice of programming or more generally, the study of the art and practice of communicating with computers. This includes historical information, general engineering ethics, how computers affect society, studying algorithms for the sake of studying algorithms (and not with a specific computer program in mind), etc.
Why, then, are most software-related bootcamps and outreach programs labeled with “code” (e.g. “Girls Who Code”, coding bootcamps, etc.)? I think there are two reasons for this, both of which are related to marketing purposes. First, coding is the considered to be the most practical aspect of programming and computer science, so this term is widely used to draw attention. (For the reasons mentioned above, I firmly believe, though, that coding is just one of the important components.) To be frank, though, I think the main reason most programs use the term “code” is because it simply sounds better. “Girls Who Code” is catchy – “Girls Who Program,” not so much.
There is definitely a blur between the lines of “computer science,” “programming,” and “coding,” but I believe it is important to define what they are, even if your definitions are somewhat fluid. In my mind, computer science is more of a general term for the field, programming is the process of creating a specific piece of software from start to finish, and coding is one of the steps of programming.