The ELI5 Web Developer’s Lexicon

Damir Kotorić
43 min readMay 7, 2017


Learning something new means getting barraged by what looks like an endless flow of strange words. Here’s a list of words you’ll get drowned in if you — like me — aim to learn web development in 2017. Written in ‘explain like I’m five’ format.

Known as “that little shit that sneaks into your Git commits”. That is, until you configure Git to ignore those files. Apple puts a hidden file called .DS_Store in every folder in macOS. This file remembers the view settings you specified for the folder (View, Arrange By and so on). Normal users never see it and never care. Web developers see and clinch their fist.

404’s unappreciated cousin. Here to tell you that the thing you were connecting to loaded successfully. You never see a cool “this page was eaten by my dog, here’s a photo!” type page with the HTTP status 200. And why would you when everything’s working properly? 200 never wins any awards. Let’s have a toast to HTTP status 200.

HTTP status code saying “that link is old, that page has moved. I’ll redirect you to the new link”.

Props to the web community for turning the most party-pooper HTTP status into something beautiful like (literally the only reason to still have Flash installed).

HTTP status code saying “the connection between client and server is good but there’s an error on the server”.

A Record
Type of DNS record. Stands for “Address Record”. Tells the DNS Server the IP of the domain that the web server is on. The most important of all DNS records. It’s usually the one you have to fiddle with when you register a new domain name.

Abstraction is making code that is a black box. We don’t care how that box does things for us, as long as it does them. Imagine you telling your dog “Hey boy! Fetch the newspaper!” The dog then runs outside, bites hold of the newspaper, and runs back for a pat on the head. Good boy! This is abstraction. We don’t care how the dog does it, so long it gets us our sweet morning newspaper. The code version of this would be to run a function called fetchNewspaper(), and have it do the rest without you worrying about how it gets the job done. The world is too complex to micro-manage everything, and that also applies to programming.

Now dead, ActionScript was the language used to make Flash applications.

Amazon AWS
Forget books, the Kindle, online shopping, and all that. Think iCloud for websites. Turns out Amazon was so incredibly good at setting up big floors of server farms to host their website, that they thought “hey, why don’t we offer this as a service to other companies?” Boom! Amazon AWS. It allows web development commoners like us, to make websites without worrying about routers, cables and so on. If our site goes viral we can just tell Amazon, “more servers please” and BAM! our site is back up.

A JavaScript framework that helps make development of single-page web apps faster. Tools like Angular make it possible to create apps in the browser that feel more like apps on your computer than websites.

The most popular web server software on the planet. And it’s fully free and open source! The “A” in the LAMP stack.

Application Programming Interface is a neat bit of tech that allows two computers to talk to one another. Like when you shop online, you buy something from Amazon without having to go to your bank’s website to complete the purchase. How’s this possible? Boom, API.

A unique password you use to access an API. Allows APIs to monitor and control their usage.

A special object in JavaScript (and every other programming language) containing a collection of other objects. Imagine a huge warehouse filled with boxes. The warehouse is the array.

An encoding character standard created for the Anglo-World that’s available on almost any computer today. Used as a way for computers to display text on screen. In ASCII every letter has a corresponding number code that’s used to store that letter. For example, the $ symbol is stored as the number 36 in ASCII, this eventually gets stored as 0100100 in binary code on the hard drive. So, why’s it an Anglo-only character set you may ask? That’s because it was developed by some non-forward looking geeks in America, before the age of the Internet. There was no need for international characters like ć, é, à, ö, ę and so on. Some web app still use ASCII today. They drive me insane. When I enter my surname Kotorić in those apps, it displays it as Kotori? or Kotoriࡠ or something weirdly similar. Errmerrgerrd! This is like, so not #diversity!!! So, to get around this mess different countries rolled out their own flavour of ASCII, but it was all one helluva mess until the Unicode encoding character standard came to save the day. Btw, here’s a great historic article about this momentous milestone in human civilization.

The simple technology that made the Internet. Turning the web from simple news-style sites to full-blown apps like Google Maps, Twitter, Airbnb and co.

No punch-ons here. Arguments are ways different parts of a codebase talk to one another in JavaScript. You might say “hey, search module over there, please do a search for ‘cat photos’ from the server”. In this case “cat photos” is the argument you pass from one bit of code to the next.

Arrow Function Syntax
A neater way to write functions in JavaScript. Introduced in ECMAScript 2015, and widely adopted by the development community.

Asynchronous IO
Refers to how web servers do their job. Traditionally with synchronous IO, you’d have servers that would do one thing at a time. Kind of like a waiter in a restaurant who could only deal with one table at a time, having to take an order, wait for the food to be made while twiddling their thumbs, and serve the table. All before being able to move to the next table. Ridiculous, right? So to get around that problem web companies — restaurants in this analogy would employ one waiter per table. Ridiculous, messy, and expensive! Modern servers running on Node.JS have properly trained waiters that can serve more than one table at a time. This is called asynchronous IO.

An ECMAScript to JavaScript compiler. Lets you write with the awesomeness of ECMAScript, while not losing support for older browser who only speak JavaScript.

Back End Development
As grotesque as this may sound, it simply refers to being a web developer who mainly focuses on databases, servers and other ‘under the hood’ stuff. As opposed to a front end developer who worries more about the UI level.

Behaviour Driven Development (BDD)
An approach to writing software where you write tests for your code, before you even write the code in question. Say whaaa? Yup, for realz. This is great because it gives you a more structured approach to writing software. Kind of like an engineer that does calculations to check whether a bridge will stand or fall before putting up the bridge. Not a bad idea, right? However, in the web dev world we don’t always do this because no one dies if a website crashes. It’s a balance of she’ll be right vs doing it properly with more overhead and cost in the short term.

A way to write modular front end code, so you can more easily reuse UI elements across your site.

Normal images everyone is used to. Completely different to vector images. JPGs are bitmap images. So are PNGs and GIFs. Unlike vector images, bitmaps have a fixed canvas size, take up more space, but are the best solution for photographs.

Block (in JavaScript)
Used to group statements in JavaScript. You declare a block using curly braces { }. Most often seen in the form of if statements and for loops.

In version control you can suggest improvements to a software project by making a branch. Doing this creates a copy of the project on your computer. You make the changes you want to make, then you suggest to merge it back with the main repository in version control. If the maintainers of the repository dig the changes you made, then your changes become a permanent part of that software project.

The box you view the Internet in. It’s your job to make sure your code works in all the browsers out there. Chrome is that kid at school that was both amazing at academics and sports at the same time. Internet Explorer is that very slow kid. We all kinda got used to it being slow. In rare moments when it keeps up with the other browsers, we all give it a standing ovation. And it cheers too, before falling flat on its ass again.

Browser Console
That in-browser panel you can open with CMD + ALT + J, which makes non-technical people think you’re some kind of god. Used to easily identify and fix problems with a site, performance test, and do a bunch of other geeky stuff. A front end developer’s best friend.

An error. Something in your app that happened that shouldn’t have, and now it’s a little awkward. They hide until you show your work to someone. The more eyes watching, the more they like to come out.

Having a ready-made page waiting for you before you even request it, so when you ask, it loads super fast. Imagine you opening Facebook. The server at has to see who all your friends are, combine their latest posts, then put in some promoted ads so the company can make money, and it needs to check if it’s a public holiday to wish you a happy holiday. As you can imagine, this takes some time. Even with Facebook’s super-fast computers, it’ll be a noticeable delay. So to get around this, Facebook grabs all that information for you every little while, and keeps it ready. Then, when you sign in, it just gives you the latest cached version of your timeline.

Callback Hell
See Pyramid of Doom.

Character Set (when talking about encoding)
Technology like ASCII or Unicode. Character sets answer the question “how do we go about storing letters and other characters on a computer?” Back in the old pre-Internet days the character set was limited to characters that appear in the English language. Eventually, us humans figured out how to make better more inclusive character sets, so the entire world can write properly in their native tongue without having to Englishanise their language and spellings of their names in a digital medium.

See Command Line Interface.

Moving from design into development, client is no longer a bad word! When referring to a browser client anyway.

A Content Management System is a bit of tech we use to easily make websites that non-techie people can update. WordPress is a popular CMS.

A type of DNS record. Allows you to point to, and have users automatically redirected. A bit like an attendant at a parking lot. Helps people get to where they need to go.

Coder vs Hacker vs Developer vs Programmer vs Engineer
What’s the difference? Is it the same thing? I don’t even know myself. There are lots of conflicting views online, but the one thing people agree on is that ‘coder’ and ‘hacker’, are mostly derogatory words. It’s where ‘code monkey’ comes from: a low-skilled worker building tons of crappy, buggy sites. Most web folks are either developers or programmers. And the more senior among them, and better paid, will usually be engineers.

A pre-processor for JavaScript. Allows you to write neater code than JavaScript, and have your code converted to JavaScript to make your web browser happy. Though it’s starting to slowly go out of fashion, now that JavaScript is getting more pleasant to write. See Pre-Processor.

Command Line Interface
The scary thing that sits on your computer. You mainly use it to do server-y stuff and to interact with Git. When you eventually get the hang of it you feel like Neo from The Matrix.

Compiled Programming Languages
Traditional software is compiled. The code is run through a compiler, that turns the code into machine code which is basically unreadable by humans, but computers love it. Native apps are compiled programming languages, whereas web apps running on JavaScript are interpreted programming languages.

See Command Line Interface.

A bit of code you never want to change. Like the user’s id for example. By declaring it a constant with ‘const userID’ you tell the rest of the code, “hey, hands off here. Don’t go changing this because you’ll wreak havoc”.

Constructor Function
Used to create a class in JavaScript. The language isn’t a proper object-oriented language so we don’t write ‘class className() {}’ like we might in other languages. A constructor function, which looks like ‘function className() {}’ simulates classes in JavaScript.

Used for easy signing in, and so web companies can more easily snoop on you online. Instead of you having to sign in with you username and password every time you visit a site, the server gives you a temporary passcode known as a cookie. Kinda like a pass-out stamp at the club. Allows you to go outside for a smoke whenever you want without having through the entire authentication process of showing your I.D. You might lose the cookie, by accidentally wiping off the stamp while you’re outside. Too bad! To get back in you have to go through the entire authentication process again, and show your I.D. by typing in your username and password. Then the bouncer gives you another cookie. Don’t lose it!

Cross-Origin Resource Sharing. A little hack you need to know to easily fetch content using JSON, in some situations. Tells the user’s web browser “It’s cool, chill the f#*k out. I’m just doing a simple request to another server. No hacking involved here.”

Nothing to do with shit. All to do with how a client requests and updates information on a server. Stands for Create, Read, Update and Delete. You might send a request to a server to create a new user account, to read the home page, to update your password or to delete your account. Every possible interaction a web browser has with a server can be summed up in one of those four basic requests.

The make-up artist for websites. In a .css file you keep all the info about how your website needs to look. Without it, your website looks like it vomited all the content.

The massive warehouse where you store all data related to your app.

Declarative v Imperative Programming
When it comes to front-end development we prefer declarative. This means telling the computer what you want the result to be (think writing a <select> element in HTML) and then the computer figures out all the intricate details in implementing (think web browsers taking that <select> HTML and rendering it on screen, and worrying about all the details of implementing a select box).
Imperative programming is a lot more like traditional JavaScript programming. You have to tell the computer in detail how you want that part of the UI implemented. Think about having to custom create a <select> box whenever you create a website. We can go a lot faster with declarative programming. React.js brings declarative programming to front-end development, and this time saving and its modularity is why it’s all the rage.

Used to quickly cherry pick specific properties from existing objects, to put in a new object. This is done by replacing the name of the key with a new name that you give it. You might use this if you are working with a big object, that you’re only using a handful of properties from. You can create a new object with just those properties that interest you, and you can give them more semantically meaningful names, for better code.

Meganerds who hack on strange server-side things no one understands. DevOps people know how to develop—that’s where the first part of their name comes from—but spend more time on operations. That is, worry about keeping the web server up, and having everything running smoothly so that developers have a working website on which to do their work.

The postal service of the Internet. Like the postal service, DNS holds information on the exact IP address of every computer that’s connected to the Internet. DNS Servers are the postman acting as the agents connecting clients and servers. See DNS Server.

DNS Records
A bunch of records a web server on the Internet gives to a DNS server, informing the latter about how to exactly find that server and what IP addressed belong to it. Kinda like the paperwork you’d have to fill out with your local government when registering a newly built residential address.

DNS Server
The postman of the Internet. When you type a URL in your browser. Like, your web browser sends a message to the first DNS Server asking “Hey do you know the IP address of”. The DNS Server then gives your web browser the proper IP address, like Your web browser then uses this to make a connection to the Twitter website. All this happens in the background without you seeing any of this. Kinda like how lots of things happen between you putting a letter in the mailbox and it being delivered on the other side. Yet you and the other person don’t see any of it.

No bloody idea. I’ve watched videos and read about it and it still doesn’t make any sense. Something something separating the dev environment from the underlying system. Something something more portable. Something something developers and DevOps not hating each another. All I know is it’s hot shit, and a lot of people are excited about it.

Document Object Model (a.k.a DOM)
The running, live version of your HTML, CSS, JS code that your web browser brings to life when you open a web page.

Domain Name
Turns out people prefer writing ‘’ in their web browser to ‘’. Who would’a thought? Domain names are human-friendly IP addresses. Us humans memorise the domain names. Our digital devices talk to web servers using IP addresses. And DNS servers keep track of which domain name corresponds to which IP address, to make both human and computer happy.

A CMS I used to code in and hate. Tries to do everything and fails.

A holy oath among developers. Don’t Repeat Yourself. Repeating the same block of code many times is bad because it slows down your work, and makes you error-prone.

The official language of the web’s scripting language. One dialect of the language, JavaScript became the most popular scripting standard. Now that web browsers are starting to agree on some common standards (more or less), we are moving to a newer, better version of ECMAScript.

ES5, ES6, ES7, ES 2015, ES2016, what?
Web standards development usually turns into a slow, 1-step forward and 2-steps back, design-by-committee exercise. Reading the history of JavaScript though, sounds like nothing short of a season of House of Cards. ECMAScript / JavaScript’s naming conventions are a clusterfuck. First, you have ECMAScript which is the core language behind JavaScript (a dialect of that language). Funny enough, the core language was founded after the dialect, JavaScript. Da fuq? Yeah, wait it gets better. ECMAScript 5 came out in 2009. Then, in 2015 ECMAScript 6 came out. Sounds legit, right? Aha, no! They changed it to ECMAScript 2015 just before releasing it. Okay, a little confusing but you might think that’s okay. They made a name change to encourage themselves to ship yearly releases of the language. You might think that’s a worthy call to make, even with the pain in the short-term. The only problem is that many people in the community got used to counting in the old way, so now they refer to ES2016 as ES7. 😶 (The only logical response.) This is exactly the kind of thing that makes native app developers point to web developers and laugh. For good reason.

A specific way to do abstraction in computer programming. There are other ways. But this is one very common way. The way it works is you create a class. The contents of the class remain hidden, except those that have been deliberately exposed by the programmer writing the class. As an analogy, this turns the encapsulated code into a black box with a few exposed buttons. You push those buttons and the black box does what it needs to do. But you can’t fiddle with its contents directly. This is not only good for decluttering your code, but also for security. See Abstraction.

Not to be confused with encrypting. This has nothing to do with hiding information. Quite the opposite! It’s the server on one end yelling out to the client on the other “You ready? I’m about to send you some content. It’s all HTML. Just letting you know so you don’t get confused about what it is when you open it.”

The key technology that won the war for the Allies in WWII, or so the story goes. Cryptography dates back to ancient Greece. In today’s world it’s used in internet banking, video calls and anything else that people don’t want others to be able to see.

End-to-End Testing
Tests the entire flow of the app from anonymous user, through to new user, and every possible interaction a user might have with the app. This kind of testing is very thorough but also very expensive and might only be done a few times per year as a health check for an app.

Event Listener
In programming, an event listener is a bit of code that is assigned to wait for a certain user or network action to happen, before it’s run. Imagine you have a dog and you teach him to bark whenever he hears something weird. Terrible idea, but anyway. In programming terminology we would call this ‘attaching an event listener’ to the dog object. You might write it like so:
dog.on(‘weird noise’, function (e) { bark() });

A framework for Node.js projects. Kinda like a Rails for Ruby apps.

The little logo icon you see in the top left corner of a tab. Used to help you quickly scan your tabs, and to embed your logo into people’s retinas at any opportunity to do so.

A web feed is one way for one computer to subscribe to updates from another computer on the internet. RSS and podcasts are examples of feeds in action.

First-Class Objects
Objects that are permanent residents of the language they’re in. Gives them extra rights, and just makes it easier to use them. The same way it’s easier for an employer to hire permanent residents than those on a visa.

That thing Steve Jobs killed with fire.

Using version control you can create a copy of an existing software project, and take it in a completely new direction. Unlike branching, this is a major shift in the direction of a software project.

Foundation Framework
A front end development framework. Competitor of Twitter Bootstrap. It helps you create websites faster, and also helps developers with little sense for design create reasonably looking apps (in most cases). It gives you a bunch of ready-to-go JavaScript and CSS files for things like design grids, styled forms, dropdown menus, buttons and so on.

Code that speeds up your web projects by giving your a readymade template for what you’re working on. Think of a ready-made pizza base. Instead of you making the dough etc. you grab the ready-made base, and add your unique flavour on top. Unlike with ready-made pizza bases, the end result here can actually be pretty decent.

Front End Developer
A web developer who mainly focuses on code close to the UI, as opposed to worrying a lot about databases, servers and so on.

Full Stack Developer
A web developer who is a generalist. Instead of specialising in either front end development or back end development, the full stack developer says “Why not both?”

Lines of code that tell the browser how to do things. If you had a search box in your HTML, you’d hook that search box up to a function written in JavaScript. Say ‘function doSearch(keywords) { … code goes here …}’. The cool thing is that we often don’t need to know, how the function works. We just call it and it does the magic for us. So we get to code less, because we’re cleverly lazy like that. See Encapsulation.

Function Declaration
The classic way to write JavaScript functions.
function functionName(parameter) { … code … }

Function Expression
A newer and better way to write functions. But not as new, and awesome as arrow functions.
var functionName = function(parameter) { … code … }

The default way that Tim Berners-Lee’s HTTP protocol gets new information from the server. Pun intended. You can even pass information to the GET request to tell the server, specifically what you’re after. Sound complicated? Fear not, you’ve seen it everywhere. Here’s a GET request to YouTube: see those weird bunch of characters at the end there? That’s a GET request. You’re telling your browser “Go to the YouTube website. When you get there, tell the YouTube server to get me the video with the id of dQw4w9WgXcQ”.

The image format that made computers fun. But why do we use an image format for silent videos? Politics. Not international politics, but board-room politics. The big IT companies needed to agree on a common file format for short internet meme videos. And, of course being corporate douchebags, they couldn’t agree. But internet memes couldn’t wait. So, now we have an image format that’s used for silent videos.

A type of version control.

Github is a service — run by a private for-profit company — that makes Git more friendly to work with. Git is awesome but ultra nerdy and doesn’t have a nice design, because it’s all in the command line. Github slaps a nice layer of design on top of the endless lines of command line code that is Git. Github is such a popular service that the entire web development community hangs out there after work, and even uses it for hiring.

Globally Accessible
In code like JavaScript, if a function or variable is globally accessible it means that we can see it and interact with it from anywhere else in the code. It’s not good programming to have all your code globally accessible. See Abstraction.

Graceful Degradation
Leonardo di Caprio, Halle Berry and George Clooney are all examples of graceful degradation. Like an old wine that only gets better with time, code written to degrade gracefully is the beez neez under optimal conditions — when viewed in a modern browser. But, it will also work well in less than idea conditions, like when viewed in a shitty, old Internet Explorer browser. Code written this way is written for optimal conditions first. Graceful degradation is the polar opposite of progressive enhancement.

A command line task runner you might use to compress multiple JS files into one or to turn SASS into CSS.

A pre-processor for HTML. Writing HTML is so 90s. HAML is where the cool kids are at. It makes it writing HTML nicer the same way SASS makes writing CSS nicer. See Pre-Processor.

Turning plain text ‘mypassword’ into encrypted gobbledygook ‘$2a$10fjlfds3jDJ#331jaISjDasSk2k’. Used for storing passwords on a server. The output of the hashed text is always the exact same length, no matter if you use different input. This makes it even more secure. Hashing is a one-way process. You can’t easily unhash or decrypt a password that was hashed. This is why apps like 1Password and co tell you to write down your master password. There’s no way of recovering it. To make hashes even more secure, we use a salt to randomise the hash value. See salt.

Hexadecimal Numbers
You might not know the name at first but you’ve seen them. #FF0000 is red. #666666 is grey, and so on. The great thing is that if you know how to use a colour picker and copy/paste the hex number, you’re good to go.

A bit of software that runs in your terminal, that makes the terminal less of a nightmare to work with. It’s like npm but for entire software programs that run in the background on your computer. The difference being that npm only installs packages, which are more like snippets of code than full-fledged standalone pieces of software. I think.

Where you keep your website.

Content is king! What CSS makes looks nice, and JavaScript makes interactive. The words you are reading right now are written in HTML.

The latest version of HTML. Brought us the video element that helped kill Flash for good. YouTube used Flash videos that would eat up your battery life like now tomorrow. It also brought us the canvas element which brings hardcore 3D processing to the web. Still not as hardcore as proper games you’d buy on your computer, but a step in that direction.

Tim Berners-Lee’s life work. The postal service and telephone were the heart of world communication in the 20th century. HTTP is the equivalent for the 21st century. As a developer, you use this technology to find out if the information sent between client and server has been received.

HTTP Headers
A bunch of metadata that’s sent along with every message sent between client and server.

The type of HTTP request. One of GET, POST, PUT, PATCH, DELETE.

Same as HTTP, but encrypted. The NSA can still know which server your computer is talking to, but they have no way of knowing what is being said through the network.

In JavaScript, you must first load the code declaring a class before you can instantiate it. In hoisted languages the order doesn’t matter, but because is half-hoisted and half-not hoisted, it’s best to write the bit of code before calling it. Same with extending a class. The parent class must be defined before the child class before the parent class can be extended by the child class.

Hybrid App
Traditionally, outside of the realm of web development, but now with the emergence of hybrid apps, web developers can make native apps too. Most of the app is written in HTML, CSS, and JavaScript making it easy to develop for web, iOS and Android without having to learn a whole array of new languages for those platforms. The apps aren’t as good as native apps, but get the job done for 80% of use cases.

Icon Font
A clever trick web developers used to bring vector images to the web before all browsers — Internet fucking Explorer, who else? — properly supported SVG images. Fonts are a type of vector image format. Just like SVGs. Sure it’s a little weird using a font file to deliver a vector graphic, but the web has done weirder things. Like use an image format for video. See GIF.

An Integrated Development Environment is the program programmers use to write code in. Personally, I use Atom. Sublime Text is also popular. The big boys use Vim.

In object-oriented programming, inheritance is used to make you write less code. We’re a lazy bunch like that. But beyond the cushiness it also means you write better code because you don’t repeat yourself. See DRY.

In object-oriented programming, you create an object out of a class, by giving birth to it with the ‘new’ keyword. As in ‘var obj = new ClassName()’. This is referred to as instantiating the object from the class. 🐣

Integration Tests
Your unit test might pass just fine and the new piece of code you wrote works well on its own. But, when added to the rest of the app does it break anything? Does it play nicely with all the other bits of code? Integration tests are there to find out.

Interpreted Programming Languages
Scripting languages like JavaScript are interpreted programming languages. Unlike traditional software, these programs are not compiled into a final file like an .exe file on Windows. Instead they are only one of a number of different pieces of code running in the software system. Interpreted programming languages run slower than compiled languages.

IP Address
Your computers address on the internet. Used to talk to other computers the way a postal address would be used for sending snail mail.

The hard-working, heavy lifting, worker ant in your browser that brings your website to life. You put your code in a .js file and JavaScript does everything you for you like loading new content without reloading the page, updating the interface, moving UI elements around, you name it.

JavaScript Engine
A mini-program in the browser that takes JavaScript written in .js files and manipulates the DOM (the UI). Google’s V8—appropriately named for being very fast—is the most famous JavaScript engine. All this happens in the background and most web developers don’t worry about what JavaScript engine the host browser is running.

JavaScript Interpreter
See JavaScript Engine.

Sounds like a protein-shake-drinking jock from an American college movie, but it’s actually a way for a client to communicate information with a server using JavaScript. Very good friends with AJAX.

Used in combination with CORS to tell web browsers to chill out as you request information from servers on the Internet. See CORS.

Key-Value Pairs
A very common way to store and retrieve information, especially in the JavaScript world. A key-value pair looks like this: [username: ‘SnoopDog’]. Key-value pairs are normally contained in an object or a map. You often see them when interacting with JSON files.

Linux Apache MySQL PHP is what made the Internet. It’s a combination of technologies, with each playing their role in running a website. We call a combination of technologies like this one a stack. Different stacks come and go out of fashion, but LAMP is a timeless classic that’s still used all over the Internet to run websites big and small. Although the really big websites like Facebook, Twitter and move on to more complicated stacks.

The epitome of open source software development. Powers the majority of all servers on the Internet. Based on the Unix operating system.

Loading State
The state your browser is in when content is being loaded from the Internet. Too few apps design these well.

Loosely typed
JavaScript is a loosely typed or a dynamic language. That means you can make a variable without specifically saying whether it’s a string, number, boolean, array or whatever. JavaScript will make a best guess when you start using the variable. This makes it convenient and reduces the amount you have to code, but errors can be really hard to fix when JavaScript makes the wrong guess. I personally prefer strongly types languages like Apple’s Swift where you must always specify what type your variable is. It’s a bit more effort to write it out, but you’re glad for it later when reading code makes sense, and doesn’t error as much.

An object similar to an array but more specialised. Unlike an array the Map is completely unordered, and we don’t care about its order. That’s because we use key-value pairs to set and get information from it. In an array you’d get the first piece of content with array[0], but with a map you can specify exactly what you’re after with map[“username”]. This makes your code clearer. The Map object is different to the .map() function used on arrays, which is something different entirely. This tripped me up for a long time.

A very basic computer programming language that tells the computer how to process some information. HTML is the most popular markup language. It tells the web browser how to display its content using tags.

A web development framework stack where you use Mongo DB, Express.js, Angular.js and Node.js as the mix of tech to run your server. A very modern way of making super responsive web apps.

Data that provides additional information about other data. Kinda like the credits at the end of a film. In HTML the ‘description’ meta tag, for example, is never visible to users, but it’s used by Google to show the website in search results.

In object-oriented programming objects can have behaviour associated to them using methods. We write them the same way we write functions, except that we assign them to an object, whereas functions can just float around in the global namespace without a care in the world.

Middleman (static site generator)
A great framework for building static websites. Provides some neat features a web developer would be used to from traditional web programming languages.

Third-party modules that you can use on the server to speed up development on the server-side. Used for things like authentication, routing, session handling, and all those things that servers need to do but you don’t want to custom code yourself.

Modular Code
On larger projects you divide code into self-contained chunks that talk to one another, but don’t reveal everything to each other. One part of the codebase doesn’t need to know everything about another part; only enough to interact. Ever met someone who shares a little too much information with strangers? Yeah, don’t write code like that.

A NoSQL database system that is easy to write yet powerful. Unlike MySQL databases, Mongo databases can send write operations to multiple databases. This makes them more performant for big apps.

A Node.js library that interacts with Mongo databases, and makes Mongo a bit more like relational databases in that it requires more structure (using a thing called schemas) in the data that it passes to Mongo.

Model View Controller confuses the shit out of me. In theory, I get it, but practically I always stumble. Anyway, MVC is a way of programming to make code more reusable. This is the best, and most fun explanation I’ve found to date.

The “M” in LAMP. A free, open-source database, based on the RDBMS model and used in millions of websites around the world.

Native App
The typical app you’d download on the iOS App Store or Google Play. Written in “real” programming languages like Swift, Objective C or Java. For the user they are faster and work better than hybrid language apps.

It’s the little worker ant that sits on the server and fetches everything for JavaScript, your worker ant on the client side. To this day — but especially in the olden days — this would be your PHP, Ruby on Rails, .NET and co.

Non-Blocking IO
See Asynchronous IO.

Stands for “not only SQL”. A new breed of databases that’s more focused on performance than data integrity.

Say you want to make spaghetti bolognese. Hang in there, I’m going somewhere with this. 😄 Technically, you could make the dish by growing your own vegetables, growing and harvesting your own wheat and so on. But you’re a normal person. So you’ll go and buy everything you need at your local market. Web development is like this too. We use ready-made ingredients like Express, jQuery, Bower, Grunt, MySql warm them up in the microwave, and then add our custom code on top of it. Where does npm fit into all this? Imagine, instead of having to go the market every time you started a new dish, you had an assistant who runs to get all the ingredients for you. Instead of you manually having to go and download the third-party files to add to a folder in your project, you let npm handle the menial work for you. You just tell it “Hey npm, I need the following ingridients…”

Object-Oriented Programming
A way of writing code where instead of writing out every possible scenario, you instead create some clever objects that know how to talk to one another. Kinda like catching fish versus teaching your code how to fish. It takes more effort, but it’s a better long-term investment for big apps.

Individual bits representing parts of your program. Say we had a simple JavaScript car racing game. The car you’re driving would be an individual object, and all your competitors would be individual objects too. Each car, or object would have some properties, like colour, horsepower, maximum speed etc. Your car object would also have methods, like accelerate(), break(), turnLeft(), turnRight() which you could use to interact with it. All cars, or objects would share a common Car class which acts like a blueprint. It specifies how properties the object can have and how its methods are performed. Writing our code this way is good because once we have a class clearly defined, we can make as many objects as we want by simply writing ‘var myCar = new Car()’. If only getting a car was so easy in real life!

Object Literal
A way to create simple objects in JavaScript. Used mainly for objects that are just there to hold some data, without any methods. For more complex objects, go for a constructor function. Similar to Dictionaries in languages like Swift, and others.

Object Data Type
Commonly just referred to as ‘Object Type’, this represents what the object is. Is it text (string), or a number, or an array, or something else? Object data types are like ready-made classes that are so frequently needed that the makers of JavaScript decided to embed them into the language.

Open Source
People collaborating on code in the open. Traditionally, software companies would guard their source code with the same security as Coca-Cola guards its recipe. These days, they keep the most important part a closely guarded secret (e.g. Google’s search algorithm). Everything else that is not absolutely business critical is made available for the world to see, and collaborate on. Most open source software projects are found on Github. Popular open source software: Linux, WordPress, VLC Media Player.

A file used to declare npm dependencies. Saves you from having to upload npm packages to Github, or Heroku. Keeps your codebase clean. See npm.

A function is written with parameters when it needs input in order to do its thing. Say you had a butler called Alfred, and you asked him to do some grocery shopping for you. (Because we’re lazy!) The shopping list you pass to Alfred would be the parameters that Alfred needs to complete the task. In code we’d express this as ‘function buyGroceriesPlease(shoppingList) { … }’ When Alfred accepts the shoppingList he calls them parameters. But when we pass it to him we call it arguments. See Arguments.

A server-side programming language very popular in the 2000’s, but still popular.

Pixel Density
Refers to how many pixels there are per inch or centimeter of a device’s screen. Usually, and unfortunately, the imperial version rules and most readings are in pixels per inch, or PPI. In the last decade for the first time we started getting such high density screens that you can’t even see the individual pixels anymore. End result: jaw-dropping image quality. Web developers need to keep pixel density in mind when serving images, otherwise they’ll appear blurry on some devices.

Portable Network Graphics. A type of image format on the web that allows for transparent backgrounds. Not used as much these days.

Polluting the Global Namespace
A cardinal sin for JavaScript developers, and a complete giveaway that you’re a newbie. The opposite of proper encapsulation. Your code is one big blob of spaghetti. The more code you write, the worse it gets. Eventually it’s all a big, tangled fisherman’s line of messy code and it becomes less painful to cut the line and start clean, than to fix the mess you created.

There are a ton of apps running on your computer, and communicating with servers on the Internet at any given time. Your computer gives each app its own port number. Port 80 is used for traffic in your web browser. A web developer will sometimes open a website on a different port for testing.

Another way to get information of servers using HTTP. The twin of GET that doesn’t leave a long and weird trace in the browser’s address bar. Allows us to send more information to the server than with GET. Mainly used when making JSON calls.

A translator. You write code in one language over here, and the pre-processor translates it into another language over there. SASS is a common pre-processor that turns lovely-to-write SASS code into less lovely-to-write CSS code for you.

Most of us know what this is, but it’s worth pointing out how a program differs to a script. A program is a self-contained, standalone piece of software. Whereas a script, like JavaScript, is usually not the only code running in the final piece of software.

Progressive Enhancement
Code that caters for the lowest common denominator first. That would mean coding up the UI so it works for the dumbest version of Internet Explorer that you need to support. Next, you’d add more and more sexy features and UI on top. The polar opposite of graceful degradation. I’m personally not a fan of progressive enhancement unless it’s really something like a government website where it’s your duty to support as many browsers as realistically possible.

A way for you to write asynchronous JavaScript code without it turning into a Pyramid of Doom spaghetti code mess. Promises flatten the pyramid of doom into something much more readable to humans.

Ways we describe an object in code. Say we have a car object. Its properties might be speed, numberOfSeats, colour, brand and so on.

Prototype-Based Language
Diet Coke for object-oriented languages. Kinda similar to real object-oriented languages like Swift and Java, but not the real deal.

Prototypes (in JavaScript)
A way to write performance optimised functions. If you had a constructor with a classic function, you’d have that function copied into each instantiated object, slowing down the performance of your site. Using prototypes you can have one function that’s shared across many objects.

Prototypal Inheritance
Brings object-oriented inheritance in otherwise non-object-oriented JavaScript language. The linking between parent and child in prototypal inheritance is called “creating a prototype chain”.

Pyramid of Doom (a.k.a Callback Hell)
When asynchronous code is nested dozens of levels deep and you forget what’s what anymore. The way to get around this in JavaScript is by using Promises.

Relational Database Management System refers to a type of database that enforce strict usage of tables and data integrity. These databases are bit slower compared to their NoSQL rivals. The most famous RDBMS database is MySQL.

A front end framework for making robust, interactive websites in less time.

React Native
A framework for building hybrid apps. You write JavaScript code, ReactNative compiles to the native language. Greatly simplifies development for native apps, though these apps are usually not as silky-smooth as the properly done native apps. Still, you can’t beat the bang for buck of being able to support web, iOS and Android in a single codebase.

Turning nasty-ass code that works into quality code that works. In the pursuit of shipping on time sometimes you need to ship barely-working nasty-ass code that you shove under the rug. But, unless you then spend the time to fix up the mess, the nasty-ass code will eventually hit a critical mass and your entire app starts malfunctioning and being slow. Depending on how long the code hasn’t been refactored, the process can sometimes feel a bit like this.

Relational Database
A very traditional database like MySQL, where you have to define a database schema before adding to it.

Read-Eval-Print-Loop refers to the way the command line interface works. It takes a command written by a nerd using the command line, and reads it, then evaluates it, and returns it to the user by printing it on the screen. Things keep looping like that in a circle until the user stops the program by typing CTRL+C in the terminal.

In version control a software project is called a repository. Say you’re a web developer working at a digital agency. That agency would have a repository for every distinct client project they’re working on. Version control lets the digital agency keep sense of all the changes being made across projects, and done by many different developers.

Responsive Web Design
A website that reshapes itself to fit the size of the device. Before responsive we had separate mobile and desktop sites. This meant you had to support two entirely different codebases on the front end. Now, with responsive we can support an unlimited number of device sizes in a single codebase.

Representational State Transfer. Sounds like a teleportation device from a science fiction movie, but it’s in fact a way for us to program AJAX applications. To understand REST you first need to know what CRUD and HTTP means. REST acts as a translator between CRUD operations and HTTP. In short, it allows you to fetch things from a server, and to create new things on that server, as well as update things on that server, all from a user’s web browser. Can be used for example, to create a new user account, update a user’s profile info and delete the user account, all using JavaScript and without reloading the page.

Rest Parameters
A way for you to declare functions which can take a flexible number of parameters. Instead of you having to create an array before passing it to a function as arguments, you just throw the variables at the function, and it makes them into an array for you. The way to declare rest parameters is with … and then the name of the parameter. Here param1 is a normal parameter, and param2 is a rest parameter:
function myFunction(param1, …param2) {}

A file sitting in your server’s home folder. It’s used to tell web crawlers like Google, what they should and shouldn’t access. Helps you keep parts of your site a secret from the public.

Route Parameter
Something you use all the time but aren’t aware it’s a “thing” with a name. In the URL for this post,, ‘/@damirkotoric’ and ‘/the-web-developerslexicon-1d9e0d7468b5’ are route parameters. They tell the server what data to fetch.

How you used to stay in touch with a blog. These days email newsletters are more coming. Rich Site Summary is a type of feed, written in XML, that you can subscribe to in order to get updates about new content on a website.

A little spice of extra randomness to make storing passwords more secure on a web server. In cryptography, ‘salt’ refers to random data that you include with the input of the hash function. Salts should be randomly generated for each password.

If CSS was a make-up artist for websites, SASS is a make-up artist that’s far more pleasant to talk to than CSS. You put pleasant-to-write code in a .sass file, and it translates everything to .css to make your browser happy as well.

Some variables are accessible from anywhere in code. They are called globally scoped variables. Other variables are only accessible within the confines of their functions, or blocks. These are called locally scoped variables. If you try to access a locally scoped variable outside its scope, you’ll get an error. But, if you make all variables globally scoped you end up polluting the global namespace. So, you find a nice Zen balance between using the two. See Encapsulation and Polluting The Global Namespace.

Code that is interpreted by another program, and only one of a few different types of code running in the end system. JavaScript is the most popular scripting language. See Interpreted Programming Languages.

Semantic Markup
Writing your HTML in such a way that the tags you use help describe the content of the HTML. This makes the markup more accessible by helping screen readers better read the content. It also helps separate content from presentation making it much easier to update the presentation layer using CSS without having to update the HTML.

Search Engine Optimisation means writing your HTML code in a way so that your site appears high in Google’s search results.

Separation of Concerns
Dividing your code into self-contained chunks rather than mixing everything together into one big pile of spaghetti code. Helps with pretty much everything, especially understanding the code, and maintaining it. One example of separation of concerns is HTML and CSS. We use HTML to describe the content, and CSS to theme it. This allows us to update the content without having to update the theme, and vice versa. It makes life as a developer a lot easier and reduces the cost for businesses as well.

Almost identical to an array with one key difference: can only have unique values. Like asking a room of people “Where are you all from?” and you only care about the different countries. If someone shouts “Australia”, then someone else shouts “Australia” later, you say “yeah we don’t care mate, we already heard that one! Go kill some spiders!”

Think of a kind butler that fetches everything for you. “Alfred, fetch me my latest Instagram photos, will you?” … “Immediately, siiir.” Straightens his monocle, and off he goes.

Server-Side Programming Language
A language we use to interact with our server butler Alfred. Some examples are Node.js, Ruby on Rails, PHP, .Net. See Server.

When you have a database that gets really, really big, you won’t be able to store it all on one machine. Sharding means storing data across multiple machines. It’s also known as horizontally scaling.

Not the dirty, corrupt, war-starting mega-corporation. The shell is the behind-the-scenes engine of a command line interface. Developers give crazy looking commands through the CLI, and the shell then interprets those commands and acts on them. For example, ‘mkdir Photos’ instructs the shell to create a new folder called Photos. Everything you can do on your computer using the typical mouse-and-keyboard UI, you can do using the shell, and more!

Single-Page Web App
A web app that has most of its action unfold on one page. There could be a settings page or something like that sitting outside of that main page, but the main action all happens on one page. Google Docs is an example of a web app. It acts more like a traditional program than a website.

Source Maps
Your CSS and JS files get minified automatically when you’re working with a Gulp like setup. This is great for production but a pain in the ass for development because it makes it hard to see things clearly. Source maps come in to save the day. They accompany a minified.css file with a file which Google Chrome uses to show the original SASS file structure when you’re inspecting a particular CSS element.

Structured Query Language is a computer language that is used to query — that is search — through a database. The most popular one is MySQL.

A way for you to access the terminal of another computer via the internet. Used to setup or make changes to a server, for example.

The little lock you see when you visit a website that starts with https. Used to create a secure connection between a client and server on the web.

A way of writing CSS to make it more modular and reusable.

Spread Operator
Looks identical to the rest parameter, and does a similar thing. The spread operator ‘…’ concatenates arrays. You can write var newArray = […firstArray, …secondArray, ‘someValue’, …thirdArray], and it will jumble everything together.

A handy helper module that combines multiple JavaScript files into one file. Allows us to write modular JavaScript code with dozens or hundreds of different files. Then Sprockets combines all those files into one JS file to make front end performance fast.

The combination of technologies used for either front or back end development. The most popular stack on the web is the LAMP stack. Developers discuss their ‘stack’ to make their rare interactions with other humans that little bit more awkward. You can quickly get a glimpse of an idea of the kind of development environment a company has by talking about their stack. Similarly to how you can get an idea of a country by talking about the makeup of its political system.

Stack Trace
Not related to the definition of Stack above. This instead refers to a diagnosis report about the current state of the program. Used a lot when debugging. It’s similar to a surgeon about to do surgery. The nurse provides the surgeon with a report of the patient. The surgeon needs to know a lot of important health information about the patient before she can begin with the surgery.

Static Site Generator
A tool to help you create static sites with some of the niceties web developers are used to when making traditional websites.

Strict Mode
In JavaScript you can add ‘use strict’ to the top of the file to make the JavaScript language a bit more like a normal programming language that won’t just accept any kind of sloppily written code. This is optional but recommended since it makes your code better by making sloppily written code more visible.

A piece of text in code.

Semantic Versioning
Known as semver, you’ve probably seen this type of versioning if you ever downloaded a piece of software. The latest jQuery at the time of writing is “jQuery 3.2.1”. That version number isn’t completely random though. There’s logic to it. The first number “3” indicates a major release. If you had a website running the previous major version of jQuery, and now you update to the latest major version, you can’t just yolo it and expect everything to work. There’s a big chance things won’t work, because the code is vastly different between major releases. The second digit “2” indicates a minor release. If you had the previous minor release, and upgraded to the latest minor release, your code should work. Not guaranteed, but it’s rare you’ll find anything breaking. The last digit “1” is for patch releases. These are there to just fix bugs and you can upgrade freely. In fact, you should keep the latest patch fix on your code because it’ll mean fewer bugs in your app.

See Command Line Interface.

Test Suite
A collection of unit tests dealing with one part of your app. You can have a test suite for the user authentication functionality, testing all the code dealing with user authentication. Although, some developers use the term Test Suite to refer to all the unit tests for all the app functionality. It’s not always clear what is meant without context.

Try-Catch Block
Used to debug problems in the code, and also used to provide human-friendly error messages when things go bad. A good app will have lots of try-catch blocks. Every error should be designed for. You don’t just let the system vomit out error messages like it’s Windows 95.

Twitter Bootstrap
Along with Foundation, the most popular front end development framework on the internet.

The United Nations of character sets. The reason I can write characters like ć ñ æ ï and you — on your end — don’t just a see a bunch of random ? ? ? ? characters. Some clever people in the late 80’s navigated the political waters of creating one universal character set. Every major language being supported. Unfortunately, the Unicode character set was a bit too flexible and things started getting inconsistent across different countries. Eventually, a particular flavour of Unicode called UTF-8 came along and sending emails across different cultures became a less awkward ordeal.

Unit Tests
Having an automated program look through your code, and try to break it. You do this before putting your code live on the internet. It’s a cheap and fast way of reducing the amount of bugs and errors users see. A unit test runs a test on a small part of your code like a function you wrote. You’ll probably have a lot of unit tests for your app. Together they are called test suites.

The O.G. of operating systems. Starting in the 70s, this operating system still lies at the core of many computer systems, including Apple’s line of products. It’s mainly used in server systems.

Incorrectly used as a synonym for URLs. Uniform Resource Identifiers refer to the identity, whereas URLs are used for the location. Though, I don’t really know what that means.

Uniform Resource Locator is the fancy word for the web address you put in the browser to visit different websites.

Unicode Transformational Format 8 — as no one on the planet calls it — is the big daddy of character encoding standards. I will be forever grateful to it for enabling me to write my name on a computer properly. Before UTF-8 it was Kotoric. Now thanks to UTF-8, it’s Kotorić. Sometimes even Которић, if I’m feeling the true Slav that morning. How could I live without UTF-8 before you ask? I couldn’t! My life had no meaning. Now with UTF-8 the universe makes sense again. Живио УТФ-8!

A tiny piece of code that holds the value of something. Like when you’re in the middle of a conversation on the phone and the person on the other and tells you a phone number, and you don’t have a pen and paper handy, and you’re too stupid to realise that you can use your phone to write down the number because you were born in the last millennium. Now, imagine you have a buddy next to you, who you ask to remember the phone number “52783509”. From a programming perspective, your buddy just became a variable. His task is to remember something for you. Later you can ask your buddy, “hey what was that number again?”, and they’ll tell you after reminding you that they’re not your personal secretary. The great thing about your buddy is that you can ask them to remember something else in the future. They’re reusable, and so are variables. Ahh, friendship.

Vector Image
A type of image which is completely different to a bitmap image. Think photographs, paintings, anything that has a defined canvas size. Vector images are not traditional images. They are mathematical formulas that look like images. This gives them two great superpowers: you can scale them infinitely, yet they don’t take up much space on the computer. The most popular vector image is the .SVG format. It’s used for logos. You could — in a dystopian fully-corporate run world — take a file like monsanto-logo.svg and print it on a billboard the size of the moon. And it would still come out perfectly sharp, while taking up less than a megabyte on the computer hard disk. That’s the magic of vector images.

Version Control
Imagine you’re in a group of engineers building a huge skyscraper. Now imagine that you have a time machine that allows you to reverse time back to all stages as you were building the skyscraper. Version control is that time machine for web developers. Unreal, right? It gets better. Version control also allows you to collaborate on the skyscraper better. You can have one team working on one floor, the next team on the next floor, and so on. Then, using version control you merge all that work together. And, voila! There’s your skyscraper.

Web App
A website that acts less like a website and more like a program running on your computer, or a native app in case of mobile. Tools like React and Angular help create single-page web apps.

Web Crawler
A little bit of code that visits websites on the internet to fetch information from them. An example is Googlebot, which is Google’s web crawler. It visits every website that can be found on the internet, and makes a note of what it finds. Later, Google uses this info to show your site for matching searches.

Web Scraping
A bit of code a web developer might write when they want to get information from another website, but that website doesn’t have an API. So, we get around that by creating a little program that visits the website and downloads the wanted content to our server, to then be used how we like. Obviously, this can be used for dodgy purposes, but most of the time it’s for legitimate usage where the server with the content was just too lazy to provide a proper API.

Web Standards
The Illuminati that controls the progress of languages like HTML, CSS, JavaScript. They don’t conspire to depopulate the planet, though sometimes I wonder given how painfully slow they are in updating these languages. Other languages that are supported mainly by one group — like Swift is by Apple — develop lightyears faster. But, on the other hand web languages, once they improve are available across the world and on any kind of device. Meanwhile, Apple can’t believe humans beings exist outside of their walled gardens.

A widely popular and open-source CMS, which almost single-handedly sparked the blogging craze of the early 2000s.

A bunch of nerds on the Internet making decisions that will tangibly impact you 10 years in the future.

What all the front end developers were crazy about before the superior HTML5 came out. We still see remnants of it from time to time though.

HTML’s cousin. Instead of storing pages of content, you use it more like a database to store things you’d normally see in a spreadsheet.

This lexicon is by no means complete, and if your a newbie starting out don’t take any of this as gospel. Some of the info here is probably not very accurate. It’s an exercise of putting ideas in my head down on digital paper. This will help me cement the zillions of terms I am learning in my head. I feel a bit more knowledgeable as a result, although I realise I’m still on the tip-of-the-iceberg part of my quest.

I’ll update this post as I learn more!



Damir Kotorić

Freelance UX/UI designer with a founder’s mindset, technical acumen and Fortune 500 expertise.