Titles Terms and Jargon
When I started learning how to make websites with HTML and CSS, I was aware of titles like Software Developer and Web Developer, but I only had a vague idea what they meant. I was also aware there was a thing called Computer Science and Computer Programming, but I wasn’t entirely sure how much they related to just making websites. I associated Computer Programming with Operating Systems, Bill Gates, and COBOL. COBOL because my mom worked at an insurance company that used that language.
I’m pretty sure at the beginning, when I wrote those first few HTML tags and learned about the CSS :hover pseudo selector, that I thought of myself as a ‘programmer’. Like, I wouldn’t say that out loud to anyone, but I would’ve describe myself as a coder. However, once I started considering making websites as a career, I discovered Web Design.
Web Design
Let’s get this one out quickly. Writing HTML, CSS, and copy+pasting JS snippets from Codepen to make an image Slider is not programming. That’s Web Design. Yes, you’re writing code, as in you’re writing HTML tags and styling with CSS in a text-editor, but you’re not programming according to the academic definition.
Web Design is also not Front-End development. There was a long period while I was in school pursuing my Interactive Design degree where I thought of myself as both, a Web Designer and a Front End Developer. But Front-end development is just a fancy way of saying client-side web programming. Design and Front-End Development do overlap, but they are not mutually inclusive. While there are Front End developers who can design, you don’t really have to know Design. Hell, there are Front End developers that don’t even know or care to know CSS. The inverse is also true. A Web Designer doesn’t really have to be a coder either. You can use applications like Dreamweaver, Muse, Webflow, and others to make websites without having to write a single line of code.
There’s a lot to unpack here, but the generally gist is this: Web Design is just one specialization of Design and not an aspect of Front End Development.
Front End Development
Knowing what I know now about the differences between Design and Development hasn’t made the title Front End Development any less confusing tho. Client side web programming has changed a lot in the past couple of years, but before we dive into this, let’s establish and agree that there’s a difference between a website and a web application.
Website
A website is strictly a static informational document, page, or a set of pages, hyperlinked and mostly built with HTML, CSS, and some JS. A website can be or not be interactive and I point this out because if you google the ‘difference between a website and a web app’ you might find articles describing websites as not interactive, but I think this is totally misleading. A website doesn’t need JS to be a website, but having JS doesn’t automatically change a website into a web app. For example, if what you have the JS doing is DOM manipulation to make some animations and if the JS is not really changing anything this doesn’t make your website an app.
Webapps
Here’s were I think things get confusing for people. Web sites can be web applications. If we’re talking about a traditional web site with a couple a pages, paragraphs, heading tags, very document based, there could be a lot happening behind the scenes. Take a blog for example. A blog has comments, search fields, forms. It is interactive and dynamic. There are many websites out there that are web apps in that sense. This definition is essentially what a single-page application (SPA) is.
Then we have the more obvious and easier to define web apps like like say, Google Docs, Facebook, Twitter, Amazon, online games, etc.
But let’s get back to unpacking Front-End Development. For a long time, client side development was document based pages with some JS thrown in to make them snazzy. There was a period were there were other weird things being thrown in to work with web browsers. Java Applets, Flash, etc. At the beginning JavaScript was used a lot for the things we use CSS today.
The meat and logic of web applications were made with backend languages like PHP, Ruby, Java, and others. This is what the ‘real’ programmers did. These were the ‘real’ programming languages. It wasn’t until recently that this changed. With the release of Node.js and libraries like React, there’s been a huge shift in the responsibilities of client vs server side programming. React has made front-end development super awesome, but at the same time super complicated.
Back-End Development
Server side web development is still the meat and potatoes of web programming today. Don’t get fooled by the everything is JS/Node world. There’s a whole lot to dive in here than just setting up routes with Express to serve JSON(aka APIs). Here is where you will encounter the use of other languages like PHP, Ruby, Python, Rust, and others.
Software Developer
This is a generic term. Same as Computer Programmer. Be careful with giving yourself this title because depending on the context, it could imply that you’re more than just a web developer. Someone might ask you if you know Python and you could be like, “like the snake”.Saying that you’re a Software Developer and you don’t know what Python is like saying that you know about all the religions but have never heard of Islam. Awkward.
Software Engineer
According to Wikipedia, this seems to be at a higher level than Software Developer. “Software engineering is the systematic application of engineering approaches to the development of software.” I’m interpreting this as someone that first, has a ton of experience, and two, knows a couple of different programming languages, and can architect and lead a project. However, I’ve seen this used in the same generic context as Software Development. I avoid calling myself this.
Front-End Engineer
Avoid it at all cost. If you see this job title, and you meet the requirements, then apply, but usually this is a unicorn position.
UX/UI Front-End Engineer
See Front-End Engineer. Avoid this one as well, no matter how great you are at Design, or how many times you read The Design of Everyday Things
Back-End Engineer
This might actually be more legit. If you know PHP and you’re learning RUST, you should strive for this.
Dev-OPS
The CCNA of Back End development? AWS ninja? I really can’t speak about this one. Seems like a super senior role for Back-End Developers to strive for.
Full Stack Developer
Up to you. This is tricky. For the most part being ‘full-stack’ is a misnomer. I don’t think any web developer is equally good at client side and server side coding. Think about that tho. That’s like saying your 50% good on either. That’s not good, that’s mediocre. I would go with just Web Developer, but I understand that you want that extra dough and you want to communicate that you know how to deploy an app to Heroku.
Conclusion
I hope this helps someone out there. If there’s one thing you should take away from this rant, is to start thinking about websites vs web apps. There’s a lot there to unpack and I recommend doing some Google searching. I think this would start giving you more clarity as to why people are making websites, that are web apps, with React for say a Restaurant.
I wrote this for people who have fallen into the world of web development, either by accident, or got shot into it like a rocket from a Bootcamp, who like me just wanted to make websites.
Do your homework and learn your trade.