Quick question. Can you speak another language?
Spanish? French? Maybe Mandarin?
Now, what if I say “Hola.” Do you understand what I just said?
How about “Bonjour. Parlez vous Français?”
You might not be fluent in the language, you might even claim to not understand it.
But you are able to understand simple words and phrases.
That is the goal of this talk. To help explain basic terms used by developers, so that you can better explain yourself when you’re speaking to a developer about a problem you’re having. And more importantly, that you’re able to understand what they’re explaining to you in return.
How the Web Works
Before we dive head-first into terminology, we need to briefly discuss the fundamentals, the foundational concepts of how the web works.
How You See a Website vs. How a Developer Sees a Website
The way you see a website is different from how a developer views a website.
You see something like this:
You recognize there are multiple elements on a page. There’s text and images and links.
You know that some elements are on every page, and some pieces change.
You know that some elements are dynamic, like a slider or gallery.
Now, a developer understands all this as well. But they look a little bit deeper.
This is how a developer sees a website:
See, they’re looking through the site. They don’t just look at what content changes on what pages. They’re looking deeper, to where the content is stored on the server, how it’s being delivered to the web browser, the steps in-between.
“Front-end” vs. “Back-end”
When a developer is pulling a site apart, they usually draw a line and divide a site into two parts: “front-end” and “back-end”.
These are confusing terms, because they tend to be a bit overloaded.
When you hear “front-end” and “back-end”, you might be thinking about this:
…how the “front-end” is the part of your site that users see…
…while the “back-end” is the WordPress admin area that you have access to…
But that’s not usually what a developer is talking about.
From a developer’s perspective, all of that falls under the “front-end”.
The “back-end” is the realm of the server, the hardware and software used to build and serve both the user-facing side and the WordPress admin side of your website to your web browser.
The specifics of what falls on what side of this line can be a bit fuzzy, but this is the division we’ll be using in this talk.
So let’s start with the Front-end.
The file format of the web.
HTML stands for “Hyper Text Markup Language”. It all comes back to HTML. No matter how you build your website: WordPress, Drupal, SquareSpace or something else, it all ends up as HTML.
What determines how a page looks.
CSS stands for “Cascading StyleSheets”. Layout, color, typography. It’s all controlled in CSS.
Programming language that lets you make changes to HTML dynamically.
You’ve probably heard WordPress themes described as being the way to control or change the look and feel of your website.
There’s a critical fourth piece to a WordPress themes: something called PHP.
We’ll talk about it more later, I promise, but for now, let’s just say that PHP is something that is added to your HTML so you can pull in content from WordPress.
PHP code that adds functionality to your site, frequently to the WordPress admin section.
Since we’re talking about both the user and admin sides of your site when we say the “front-end”, it makes sense to talk about plugins here too.
But admittedly, this is where the line starts to blur. Because WordPress plugins add features and functionality to your site. To do this, they tap into things that fall under the “back-end” part of your site. They’re written in PHP, they connect to your database, they install files on your server.
So let’s move on to the “Back-end” of your site.
A fancy name for a computer.
When talking about the “Back-end” of a website, you have to start with “Servers”.
The problem though is that the term “server” can be applied to two very different things.
“Server” could be used to describe the hardware running your site.
Where your site lives.
And when we’re talking about server hardware, we have to stop and talk about “hosting”.
Hosting refers to the service plan you have for the hardware that your website lives on.
You can think about “hosting” like renting a place to live. Your host is where your site lives.
And just like there are different kinds of places to live, there are different kinds of hosts.
Multiple customers, running multiple sites, on the same machine.
The cheapest and most common type of hosting is something called shared hosting.
You can kind of imagine it like this, with multiple sites all running on the same hardware.
If we continue with the analogy of renting a place to live, shared hosting is like renting a bed in a hostel.
Each customer gets their own private server.
Another common type of host is something called a VPS.
This works differently than a shared host.
With a VPS, each customer gets their own, dedicated server to run their site.
Again, relating this to renting a place to live, hosting your site on a VPS is like renting an apartment in an apartment building.
Now, you might be wondering what the deal is with the dotted line running around those VPSs. It looks suspiciously like the server over here.
The reason is this: while, for all intents and purposes, VPSs behave like their own, private, individual servers, they’re technically all running on the same physical machine thanks to something called hardware virtualization.
We really don’t have the time to discuss the intricacies of virtualization on here, but if you’re curious, there’s some interesting articles out there on the subject.
The reason all this is important is that the fundamental differences between shared hosts and VPSs effect the security and stability of your site. If something bad happens to one of the other sites on your shared host…
…it can end up effecting you. That isn’t the case with a VPS.
Understanding the differences between shared hosts and VPSs is important, because depending on which kind of host you have, you’ll have different options at your disposal when problems arise.
Someone else takes care of all this for you
There’s another kind of hosting option we should mention: managed hosting. With managed hosting, someone else takes care of all of this for you. They worry about whether you’re on a shared host or a VPS. They worry about your backup strategies and your staging options and all sorts of other stuff.
For a lot of WordPress admins, managed hosting is a great option, and there are several great choices for managed WordPress hosts in particular.
Ok, now that we’ve covered the hardware side of “servers”, now we’ll talk about the software side. The term server is also used to describe the software that runs on your server hardware, and serves your website to visitors.
Most common server software
The most common type of server software in the WordPress world is Apache.
There are others though, many others, that work well with WordPress. But Apache is still the most common and is usually pre-installed and pre-configured on most hosting setups.
Now, wait a second. Let’s back up a moment. This little interaction here:
How does that work? How does your computer know to reach out to this server over here when it’s trying to request a website?
The starting point for people trying to visit your site
It’s all thanks to domain names. You’re probably familiar with domain names already. But we’re going to go into some of the details about how they work and why they’re an important part of the back-end infrastructure of your website.
Numerical identifier corresponding to a computer on the Internet
To do that, we first start with an IP address. This is a number assigned to every server connected to the Internet. It’s how servers differentiate themselves, one from another. And while computers are pretty great with numbers, we humans kinda suck at numbers. That’s why we invented domain names. Domain names are much easier for us to remember than strings of arbitrary digits.
Like a phonebook for websites
Domain names and IP addresses are tied together with DNS.
We can explain the way DNS works by likening an IP address to a phone number.
This phone number here, corresponds to me. It…it doesn’t actually. That’s not my real number. Don’t call that. It won’t work.
In a similar way, that IP address corresponds to my website.
But, actually, that’s not really how phone numbers work, is it?
Phone numbers don’t correspond to people. They correspond to phones.
If I gave my phone to someone else and you called it trying to reach me, you wouldn’t. You’d get that other person, the one who has my phone.
So, in a similar way, IP addresses don’t actually correspond to websites, they correspond to servers. If you move your website to a different host, or a different server, you’ll get a new IP address. And if you want your domain name to still point to your website, you’ll need to change your DNS settings, pointing your domain name to the IP address of your new server.
So, you can kind of think of DNS as being like a phone book, or your contacts app in your phone.
Programming language that runs on your server (WordPress is written in PHP)
I promised you we’d talk about PHP eventually.
PHP stands for “PHP: Hypertext Processor”. If you think that sounds strange, that’s because it’s something called a “recursive acronym” and you’re right, they are a bit strange.
Where all your content lives
The most common thing you do with PHP is to use it to connect to a database.
Why? Because all your content lives in a database. All your posts and pages. All your categories and tags. All your WordPress admin configurations, media files, it’s all stored in a database, which is another piece of software that lives and runs on your server.
You can think of your database as a virtual filing cabinet, with all your content stuffed inside…and sort of organized.
Most common database in the WordPress world
The most popular database software when working with WordPress is MySQL. Other types of databases also work with WordPress, and sometimes you’ll see them mentioned. But for the most part, everyone talks about MySQL.
Easy(ish) to use database administration tool
When talking about databases and MySQL, another common term thrown around is a tool called “phpMyAdmin”.
phpMyAdmin is a database administration tool. Why would you need a database administration tool?
Well, if you want to know what’s going on with your database, you’d usually have to use something that looks like this:
This is a command-line interface into the MySQL software running on a server. It looks intimidating.
This is what phpMyAdmin looks like:
It provides a graphical user interface to interact with your database. While it’s certainly complex and has a lot of different functionality, it’s much easier to use than the command-line interface of MySQL.
The combination of software you’re running on your server to make your website work.
Finally, this all brings us to the term “stack”. “Stack” is a term used to describe the combination of software used to make your website work.
The most common stack in the WordPress community is a “LAMP” stack, which stands for Linux (the operating system running on your server), Apache, MySQL, and PHP.
Another stack you’ll hear about is MAMP, the same combination of Apache, MySQL, and PHP, but this time running on Mac OS.
Then you also have WAMP, again, Apache, MySQL, and PHP, but with Windows as the underlying OS. Those last two are most often used in development environments so you can work on your WordPress site on your personal computer.
And there you go! I hope you picked up a few things. As I said at the outset, the purpose of this talk wasn’t to make you fluent in speaking “developer”, but hopefully it’s given you a foundation you can build on in the future.