Let’s say you’re a recruiter at a networking event. You’ve just met Chris – a bespectacled nerd with a beard like Hagrid the Half-giant, and he’s just told you what he does for a living. You can tell it’s something web-related. You smile and nod, and in a few seconds, you’ve already forgotten what it was he said he did.

Here’s the truth about technical roles: they’re often made up amalgamations that have a lot of overlap. It only takes a basic understanding of the nuances of these ultra-techie sounding labels to prevent your eyes from glazing over. In this post, we’re going to stick to terms found in the web world to keep things simple. However, you’ll find most of this information applies to other computer industries.

Terms That Describe A Person Who Writes Code

Coder

You saw this one coming, didn’t you? This is probably the easiest role to understand, but as it’s something of a layman’s term, is not commonly used by professionals. However, a coder is anyone who writes code – anything from HTML to C++.

Programmer

A programmer is very similar to a coder, but we get into some slightly debatable territory when differentiating these terms. Many people argue that HTML & CSS specifically do not count as “real programming”, and for the sake of clarifying things, we’re going to adopt this assertion. Programming tends to refer to much more complex computer languages that make use of logic like loops, variables, and conditional statements. Programming languages are able to be much more articulate and thus can command computers to perform actions that are much more involved.

Developer

This is definitely the most popular term in the web industry used to refer to people who write code in some way. It’s a term you’ll see used in other industries as well, even non-computer related industries. The reason that developer has become more popular in recent years is because it encompasses not only the technical responsibilities of a programmer, but also the strategic and architectural planning involved in building complex software and websites.

Engineer

The term engineer is, like developer, a commonly used role in a number of different industries, and because it’s so vague and sounds quite loft and impressive, has been adopted by the web professionals as well. An engineer, in both tone and definition, is most synonymous with “developer”. The difference, however, is that you’ll find people opting for “engineer” more when the work is backend related, and/or falls into a more senior role.

At the end of the day, if anyone gives you shit about this difference between these roles, you have my permission to smack them upside the head for being trivial. It would be like arguing over the difference between a “cook” and a “chef”.

blog_techroles_inline_1

Before moving on, I think it’s worth noting something about these roles in relation to the industry in which they are used. The term programmer is used more when the terms developer or engineer also mean something entirely different. For example, in the video game industry, almost everyone involved is considered a game developer, so the individuals responsible for writing the code are considered programmers, as this level of specificity is necessary.

In the world of web professionals though, the above terms are pretty synonymous.

Front-end vs Back-end Developers

blog_techroles_inline_2

Now that I’ve defined the above general terms, we can get into the vocabulary that actually differentiates these technical roles.

Just like you can’t have a phone conversation without two phones, you can’t display a website without two computers. One computer makes the call with an application called the client. The second computer involved receives and interprets the call and returns the website code with software called a server. The client is just your browser of choice, like Chrome, Firefox or Internet Explorer. The server is something most people never deal with unless they have a website of their own, in which case the server is essentially their web host.

The client and the server are what divide the different fields that web developers specialize in.

Front-end

A front-end developer means someone who builds websites using HTML, CSS & and possibly JavaScript. Front-enders live in the client-side of things, meaning everything they build is what the client spits out when a website is loaded. Your browser is the software that reads their HTML, CSS, and JavaScript files and knows how to display the page based on those instructions.

Back-end

Back-end developers are the people who build the heavy lifting that goes into complex websites. If any content needs to be dynamic – like a shopping cart, or a users’ profile – that’s where you’ll find a back-end developer. Languages that these guys tend to use are probably PHP, Ruby, ASP.Net, Python, sometimes even JavaScript. Back-end developers are also people who work on database schemas and plan the architecture of a site.

It’s worth noting that not all websites have back-end developers. If you’ve heard people talk about “static HTML pages”, it means that there was no backend development involved at all, only front end.

Full Stack Developers

A developer that does both front and back end work is often referred to as a “full stack” developer. A sort of jack-of-all-trades in the web world.

All Those Other Terms You May Have Heard

What about Web Designers?
This is a tricky term, because it means different things to different people. Generally though, it implies a set of skills involving both graphic design and usually some knowledge of front-end code.

What about Information Architects?
While less common in the web world, this term refers to someone who focuses on the structural design of data or information and how information is displayed and interacted with. Often this individual has expertise in UX (user experience) as well. If this person does any programming, they are probably a back-end developer.

What about an IT Person?
Web developers aren’t really IT people, despite what our parents might think. An “IT Person” is often the guy in the office who works on more general computer hardware, software, and networking.

By now, you probably get the main point – when defining technical roles, a lot of it comes down to nuance. While these job titles can sound intimidating and fancy, this post should give you a high level understanding of the work and experience level of these people. So the next time you meet Hagrid the Half-giant (err…Chris), you won’t just smile and nod out of courtesy – but because you’ll totally know what it is that he does for a living.

Comments
  • Mike

    This was really well written. Thanks Annie, for taking the time to define the roles. A definite bookmark and also source for referrals.

    • Annie Sexton

      Thanks Mike!

  • Annie, this is an excellent post. No one has made an effort to explain what these technical role actually means and the work involved. This post will make things much easier for common man.

    • Annie Sexton

      Thanks Bhavia! Glad you found it useful!

  • Annie, for a great explanation! Now I know how to describe myself!

    • Annie Sexton

      Glad you enjoyed it! I definitely wrote this with my parents in mind – now hopefully they’ll understand what my kinda people do for a living. 🙂

  • Great article . After reading this I have no doubt that I am a Information Architect or meybe a UX designer . Anyway thanks for sharing .

  • It’s obvious that engineer sounds way more “cool” and interesting than coder, but as far as I can see, those terms are not very well defined when it comes to a job position. For example, someone might be a coder and still perform the work of an engineer.

    • Annie Sexton

      There’s definitely a lot of overlap in these terms, Wayne, I totally agree! I think that’s where a lot of confusion stems from for the not so technically inclined.

  • Spot on Annie. I’m not quite sure how I landed here on this 2 years later but your article is still completely relevant so thought it would be nice to drop a comment.

    I used to think myself as a full stack dev, but thesedays front-end and back-end development is getting more muddy by the day. So many new massive frameworks are available. On the frontend there is Angular|2, React, Php there is Laravel. JavaScript isn’t just clientside anymore with node (and doing amazing things on the server).

    As a dev, Is it ok to feel overwhelmed sometimes? Because, although I am trying to do my very damn hardest to keep up, how do you keep on earning and learning at the rate this thing moves at?!?