Testing two variables in a controlled environment to see which performs significantly better.
API stands for “Application Programming Interface”. Within the context of the web, we’re generally talking about a specific type of API (REST) that runs over the HTTP protocol. However, it’s important to note that the term API could mean something very different outside the context of web development and that even within web development that are other types of HTTP-based APIs (e.g. SOAP).
When someone adds items to their cart, then they leave the website before purchasing.
A tag given to images, used mainly to assist visually impaired users with screen readers, however, alt text can also show while moving your cursor over an image.
Amazon Web Services (AWS)
AWS is the 800-pound gorilla of web services. They provide an enormous suite of services that can be used to form the infrastructure set to run your applications on. AWS goes far beyond the bounds of an IaaS provider and into PaaS and SaaS territory.
Competitors include GCP and Azure.
A string of text which has a designated link assigned, users are able to click the string of text to be taken to the linked webpage. Google uses the keywords within a link’s anchor text to more accurately rank the page being linked to.
An application provides added functionality that allows users some type of utility. They may solve an abstract problem (e.g. a content management system or eCommerce platform) or a more concrete problem (automating a business process).
An application can also be thought of as a concept. An application in this sense is a collection of code, sometimes built with a framework that accomplishes some type of work.
Examples: Gmail, Trello
Authentication refers to the process of proving your identity. This is most commonly seen (on the web) with a login form.
Once you prove your identity, you generally gain access to protected resources. The act of proving your identity is saved (cookie + session, JWT) so that you do not need to log back in (at least for a time).
Automated testing refers to the practice of writing code (tests) to validate that other code (features) performs as expected. Each “unit” of code that validates a function works correctly is referred to as a “test”.
Test help save time and ensure quality by automating the testing of important business features.
Larger applications may have hundreds or thousands of important features that they provide to their customers.
At the beginning of development, it is easy to manually test all features within a reasonable timeframe. As development continues, it stops becoming efficient to work that way. At a certain scale, the manual approach becomes uneconomical.
In larger applications, each change you make may have far-reaching side effects. Having good test coverage can increase confidence in making large changes, and ultimately reduce risk.
Automated testing approaches prefer writing tests to validate functionality, and then validating that the test does indeed test the software feature correctly. By doing this, you write your validation test once, and you can run it many times afterward.
The backend handles everything the frontend sends it, or that it requires. It’s everything that is not in the user’s browser. As above, the question of “what computer does this run on?” applies here. If the code is not running on the user’s computer, it’s the backend.
Note: Frameworks and CMS’s generally provide frontend and backend features. Applications that split these two are called Single Page Applications (SPAs).
Examples: PHP, Ruby
Links from other websites on the internet that point back to your website.
Bitbucket is a competitor to Github that offers many of the same features.
The number of people that access your website and leave before taking an action, divided by the total number of people that access your website.
A series of links that allows a user to easily access pages they have used to reach the current page of a site. Ex. home>shop>item>color
Cost per mille, the marketer’s abbreviation for how much an ad would cost to run an ad for 1,000 impressions.
Customer relationship management usually involves a technology that manages customer interactions and simplifies the transfer of information.
Caching refers to the process of storing a (relatively) computationally expensive operation for later use. Implementing a caching strategy is an important part of web performance.
Examples: Browser cache, static HTML caching (e.g. Nginx, varnish), memoization (e.g. caching the fetching of data from a database)
Call to Action (CTA)
The process of encouraging a user to complete a certain action, determined by your business needs. These are usually seen as buttons on most sites.
The true URL of a page for the content you are serving your visitors. Many times we copy pages or content on our website to fit into other pages. We can also use the tracking code of other delineators of those pages. The canonical URL can take those duplicate pages and point at the true page Google should be indexing when duplicating content or duplicating URL structure with modifiers.
Cascading Style Sheets (CSS)
A style sheet language describes how HTML pages are displayed. CSS influences the presentation of HTML documents. CSS is responsible for the presentation of any given webpage you visit (e.g. fonts and colors).
Click Through Rate (CTR)
The number of people who clicked on your ad or web link, divided by the number of people who saw your ad or web link.
A set of human-readable instructions that can be converted into a format for machines to understand.
Command Line Interface (CLI, Terminal)
Provides access to system functions through the use of typed text. The command line is analogous to a GUI, except that the mode of communication is textual rather than graphical.
The command-line interface (CLI) is commonly used during development to perform tasks.
Components are both a thing and an architectural pattern. Libraries such as React popularized the idea of splitting up frontend applications into small composable components. A component architecture could be considered as a design pattern.
Content Management Systems (CMS)
A CMS is a type of application (and will oftentimes also be a framework). A CMS solves the common problem of creating and managing a reasonably flexible website. Popular CMS’s (e.g. WordPress) are also extensible through plugins and custom code, and can provide features that might be considered to be more application-like (e.g. WooCommerce provides a shopping cart)
There are specialty CMS systems that consider content to be a certain “type” of thing. The most common example of these are eCommerce platforms. Magento, for example, manages products and provides a shopping cart to purchase those products.
Examples: WordPress, Drupal, Magento
Continuous Integration/Delivery (CI and CD)
Continuous integration is a development practice in which new development features are routinely merged into the ‘master’ branch (copy) of the application.
CI can (and usually will) include running a test suite against the merged code. It’s also common to see build artifacts (deployable units of software) generated, or in the case of CD, deployed to an environment. Some CI setups will create a new environment per pull request for manual testing before merging.
The number of people that converted on your website, divided by the number of people who accessed your website. Conversions don’t just have to be sales. They can be form fills, button clicks, or spending a certain amount of time on your website. A conversion is any action you deem beneficial.
Conversion Rate Optimization
Finding ways to increase conversions while traffic flow remains steady. Essentially getting as many people to convert by completing a goal each visit as possible.
Cost Per Acquisition (CPA)
Sometimes referred to as Cost for Action. It is a method for reporting and campaign set up and refers to the cost it took to get an action for a KPI. Normally this is a two-part activity where the action starts on another platform before ending with the action of your choosing, normally a form fill, purchase, or signup. When setting up an ad using CPA it helps reduce the risk factor for the advertiser, but not every platform allows this setup.
Cost Per Click (CPC)
The cost or monetary value charged for an action taken on an advertising or marketing material, normally displayed in averages over time. This includes all ad types that are intended to drive an action from the viewer at that moment and includes but is not limited to display, search, and video.
Create, Read, Update, Delete (CRUD)
The CRUD acronym refers to common operations that must be accounted for in most applications. CRUD is applied to an entity. For example, if the application is a blogging platform, and the entity is a blog post, then you would need to be able to 1) create blog posts, 2) read blog posts, 3) update blog posts, and 4) delete blog posts.
Customer Acquisition Cost (CAC)
The amount of money spent advertising/marketing to each customer from their first interaction with a company to when they complete their purchase.
A DNS record associates two distinct pieces of information and is exposed for consumption by the Domain Name System. There are different types of records. Most visibly, A and AAAA (and CNAME) type DNS records will connect domain names (e.g. google.com) to an IP address (e.g. 184.108.40.206). Less visible, but extremely important is the MX type record, which is responsible for routing mail traffic to mail servers. (These two distinct record types are why you can host a website and your email in two different locations. For example, hosting your application on AWS but using Google mail).
A database is a specialized piece of software that focuses on storing and retrieval of data. There are two main classes of databases: Relational (SQL) or document (NoSQL).
Databases generally provide the primary persistence layer for any web application. Information the app consumes is very commonly stored in a database.
Examples: Postgres, Mysql, Mongo
A dedicated host provides you full (non virtualized) access to an entire server. These types of machines are usually used if you require guaranteed performance, if you have compliance concerns, if you have security concerns, or if your application has non-standard hardware requirements that are more easily met by building custom servers.
Dedicated seems fairly rare today, but it probably depends and differs business by business and workload by workload. VPSs seem to provide most of the same performance guarantees for a lower price.
Examples: Packet.net, AWS
Deployment refers to the process of moving source code (usually from a version control system) to an environment (staging, production). Deployment processes vary fairly widely, but at its most basic, you’re generally taking source code, running some type of build or pre-deploy process on it, and then making it available publicly.
Examples: Capistrano, Bash, CI/CD + deploy system, Docker (partially), AWS Code Deploy
A design pattern is somewhat related to the idea of a framework in that it provides a structure for a type of problem you are solving. However, a design pattern is more like a library in that its application is mostly up to the coder. A framework or application might employ many design patterns.
Examples: MVC, Pub/sub, Strategy, Factory
DigitalOcean is an IaaS provider that focuses on its simplicity of use. It has a smaller set of services compared to the larger IaaS providers (GCP, AWS, Azure), but it’s generally more affordable and is a compelling choice for many applications.
Docker is both a container runtime and a suite of tools for managing container runtimes. A container is an isolated execution context. You could run a database, a web server, or your application within a container.
Containers are useful because they ensure each developer (and environment) is executing the same source code in the same context.
Domain Name System (DNS)
The domain name system is (most prominently) responsible for attaching human-readable addresses (e.g. google.com) to IP addresses (e.g. 220.127.116.11). The DNS system handles routing of both web traffic (A, AAAA, CNAME) and mail traffic (MX).
A domain registrar is responsible for reserving domain names. You would use a registrar to purchase a domain name for your business.
Note that a domain registrar is different from a DNS provider or a hosting provider. Many domain registrars (e.g. GoDaddy) provide DNS services in addition to registration services.
Examples: GoDaddy, Google Domains
This type of marketing campaign enlists a small number of personalized and targeted ads to keep in touch with your existing customers. Usually, you are able to prewrite and automate these campaigns.
Some retail websites list inventory for sale they don’t physically own. When these items are purchased, the retailer will order from a distributor and have the inventory sent directly from their supplier to their customer. This process is called dropshipping.
Editors & IDEs
Editors and IDEs provide suites of specialized tools for editing source code. Editors are generally more lightweight and provide a smaller set of functionality. IDEs (integrated development environments) are generally more comprehensive and provide many tools and functionalities.
Examples: Sublime Text, Notepad++, VScode, Atom, IntelliJ, PHPStorm
Short pieces of an article which are pulled onto Google’s SERP pages from the body text of a site.
Examples: lists, steps, tables
Frameworks provide structures and utilities for the code you write. Frameworks are often used to increase development velocity (how quickly something can be built). Frameworks are often used to build applications.
Aside: It is entirely possible (and sometimes necessary) to not use a framework.
Examples: Laravel (PHP), Ruby on Rails (Ruby), Angular (Typescript*), Bootstrap (CSS)
The front end can be thought of as “what the user sees in their browser”. A useful question here can be “what computer does this run on?” (execution context). If it’s running on the user’s computer, it’s the front end.
Note: Frameworks and CMS’s generally provide frontend and backend features. Applications that split these two are called Single Page Applications (SPAs).
Fulfilled by Amazon (FBA)
A company can have items that are sold on and shipped by Amazon, kept at an Amazon Warehouse. This allows Amazon to handle the shipping and order information automatically.
Fulfilled by Manufacturer (FBM)
Orders which are placed on amazon which the company selling the goods are responsible for shipping and having stock of their product on hand. The company will then need to update amazon with the shipment information to confirm the order.
Git is very likely the most popular version control system. Git provides a suite of tools for managing different versions of source code with distributed authoring (everyone has their own copy of the source and version control system and they do not need to be connected to the internet unless they’d like to share their work).
Github provides a remote endpoint to sync local git repository changes with, and a suite of tools designed for both working directly with git-based projects (e.g. pull requests) and for areas that are closely related to authoring code and building applications (issues, wikis, CI, package hosting, source code bundles).
The ranking system Google created and is continuously modifying in order to list web pages by search term relevance.
A query language that aims to augment or replace REST APIs. GraphQL more focuses on the structure of data that should be fetched, rather than the specific resources provided by a comprehensive REST API.
HIPAA (Health Insurance Portability and Accountability Act) defines a set of standards intended to protect personal health information. The act defines what qualifies as protected information, how that information must be protected, and who must be compliant with HIPAA (not all companies who collect personal health information, or PHI, must be compliant).
For more information on what the standards are and what compliance entails, take a look at the HHS summary article, specifically the “General Rules” section and the following sections.
HTTP stands for “Hypertext Transfer Protocol” and is the fundamental protocol used for transferring data on the web. Every time you load a web page, the HTTP protocol specifies the way in which that information (HTML, CSS, JS, Images, etc) reaches your browser.
HTTPS stands for “Hypertext Transfer Protocol Secure” and prescribes a way in which information can be transmitted over the HTTP protocol securely.
Most of the web today uses HTTPS versus HTTP.
Horizontal scaling means adding more servers into the infrastructure set to handle more traffic. For example, if you increase the number of application servers from 2 to 4, you’ve just horizontally scaled your application.
Horizontally scaling is generally a bit harder than vertically scaling because you must design your infrastructure set and application to support it. Additionally, some components, like relational databases, can be difficult to scale horizontally.
Hypertext Markup Language (HTML)
Infrastructure refers to the larger set of servers and services that, together, provide the substrate that an application runs on. In the simplest cases, your infrastructure set may only be a single server, whereas in complex cases, your infrastructure set can span many different servers and services over distinct geographical regions.
Example infrastructure set:
- 1x load balancer
- 3x app servers
- 1x bastion instance
- 1x s3 bucket
- 1x PostgreSQL instance
Infrastructure as a service (IaaS)
Unless you handle a large volume of web traffic (e.g. Netflix, Dropbox) it generally does not make sense to manage the physical servers that make up your infrastructure set. Most companies opt to use a service that manages the physical layer.
Examples: GCP, AWS, DigitalOcean
Key based authentication (for SSH)
SSH uses public-key cryptography for authorization and encryption. This type of encryption makes use of two keys (long strings of text), one of which is public (responsible for encrypting data) and one which is private (responsible for decrypting data). We call these the public key and the private key.
To gain access to a server that enables key-based access, a public key can be placed on the server. This allows access to whoever has the private key.
A word or phrase used in search engine marketing. The keyword is what we target to show our information to potential website visitors in hope of getting them to visit our website through organic or paid search.
A library is a utility you might use when building something. They’re similar to frameworks in that they’re often used to increase development velocity. However, they’re generally a bit less restrictive (or prescriptive) about how you accomplish a task. A library (or set of libraries) may be used instead of a framework for projects that have unique requirements that are not compatible with a framework (e.g. You probably wouldn’t use Angular to build a video game).
An open-source operating system. Linux is a very common platform for both developing and hosting web software.
Examples: Ubuntu, Debian, CentOS, RHEL
Local development refers to the process of simulating an environment on your machine to help speed up development and testing. Instead of moving files to a remote server, you can test your changes using just your computer. For projects with multiple developers, it also helps ensure only your changes are responsible for the behavior you are seeing.
Generally, the closer you can get your local environment to your live environment, the better. Having environment parity cuts down on instances where infrastructure differences can cause errors (usually only visible once the application gets deployed).
Examples: Docker, Vagrant (Virtual Machines)
The percentage of a market that is dedicated to any individual company or their product. If there were 100 kittens sold in the world and 25 came from one seller, that seller would have a 25% market share on kittens internationally.
Taking advantage of software to automatically post marketing messages efficiently and on time. This allows for marketing emails to be sent to customers who reach different stages of the sales funnel and also allows a marketer to plan multiple campaigns at once to be enacted over a time period.
A tag that should be attached to every page you would like Google to find. This tag is used by Google as the written portion underneath a link’s listing in a Google Search. Google uses the keywords in your meta description to help accurately rank your page.
Model View Controller (MVC)
MVC is a very popular design pattern that has been adopted by many web frameworks and applications. MVC provides a way to segment responsibilities in the system.
Nexcess is a traditional web host that provides pre-configured software and managed services. We generally use them for WordPress and Magento hosting.
This search method refers to a site visit that was achieved from a user clicking our search result listing on a search engine like Google. This does not include search result listings that are paid for.
An early backend language that remains popular to this day. WordPress, Drupal, Magento, and Laravel are all written in PHP.
Paid Search/Pay Per Click (PPC)
An advertising campaign which is charged depending on the number of clicks your advertisement receives from visitors. Each click is assigned a monetary value which will be charged to the advertiser.
A customer who was directed to a business from another person or company recommending that they do so.
Remarketing / Retargeting
An advertising campaign that uses a customer’s contact information from another related campaign or company to target users who are already interested in your product or service.
Representational State Transfer (REST)
Arguably the most common type of API today. A RESTful API usually exposes meaningful resources into a somewhat standardized URL format and makes use of the different HTTP verbs (GET, POST, PUT, PATCH, DELETE) to provide semantic meaning to different requests.
Responsive Web Design
A term that refers to the ability for a website to respond quickly and without error to a user changing screen dimensions or devices.
Return on Ad Spend (ROAS)
A comparison between the revenue generated by an advertising campaign and the amount spent on the advertising. Used to measure the profitability of an advertising campaign.
Return on Investment (ROI)
A comparison between the cost of an investment and the revenue generated by the investment. Used to measure the profitability of an investment.
SFTP / FTP
Although they provide similar interfaces for users, SFTP and FTP are different protocols. FTP is a legacy protocol and should not be used.
SFTP is a modern protocol based on top of SSH to remotely manage files. Using an SFTP client (e.g. Filezilla, Transmit), a user can browse a remote file system and download, upload, or edit files.
SFTP servers are sometimes used to share files between groups of people, but there are probably better options for this use case (Dropbox, Box, Google Drive, Nextcloud, etc).
SFTP is also sometimes used for deployment, although there are probably better options here as well (see below).
SSH stands for “Secure Shell” and is how developers can open a CLI session on a remote server securely. The SSH protocol can additionally be used to secure any network service (SFTP).
A piece of code which when implemented on your site, will add a special listing type in search engine results. This not only pulls more attention to your site but also allows users to get information from your site directly from the search engine result listing page depending on the schema type.
Search Engine Marketing (SEM)
A type of marketing campaign which allows a company to show their site among the top listings on google for a given keyword search. This bypasses needing to organically rank within the top 10 to show on the front page, at a cost of course.
Search Engine Optimization (SEO)
The process of improving search engine rankings for pages with commonly searched keywords. Search engines will take time to respond to these changes, but they can provide value for an extended period of time even after they are done being optimized.
The string of text that is entered into a search engine to return a search engine results page. (SERP) This text is then dissected by search engines to assign relevant keywords and then shows the most relevant results for each keyword in the search query. (keywords can be multiple words long)
A popular development recently is the rise of “serverless” compute. This is mostly a marketing term and an ops concern. Serverless does not mean there is no server. It means you, the programmer does not manage or have access whatsoever to the server.
With serverless platforms, you’ll usually author your source code in such a way that the platform can package and deploy your code “behind the scenes” without you having to provision and manage that infrastructure.
Serverless might also be called “Function as a service”.
Examples: AWS Lambda, Google Cloud Functions
A server can be thought of as the fundamental unit of computing for the web. In some capacity, a server provides resources (disk, ram, CPU) that can be used to perform work (e.g. respond to web requests).
Note that the term server might not refer to the actual physical box in a data center. In many cases, the server(s) an application runs on might be virtualized and run within a larger pool of physical servers.
Aside from the technical implementation details, servers (as a service another company provides) may come with very different options. For example, servers from a standard shared host (e.g. Godaddy, Hostgator, Nexcess) offer a fairly different feature set than managed WordPress Hosts (e.g. Wp Engine, Pantheon, Flywheel) or an IaaS provider (AWS, GCP).
Big picture, it’s probably most helpful to think of a server as “where the application/website runs” and then describe the additional differences (if required) from there.
Shared hosting means many tenants may be co-located on a single physical server. While it used to be common to see locked-down access to the main physical server, it’s more common now to see a virtualized system only you have access to (e.g. Digital Ocean Droplet, AWS EC2).
While these virtualized systems could be considered a shared host, they’re generally lumped into the bucket of “VPS hosting”.
A benefit of the virtualized approach is that resources can be managed more fairly. A busy neighbor on a traditional shared host may also bring your website down, whereas that is less likely on a VPS.
Examples: Godaddy, Hostgator, Nexcess
A sprint is a way to split up development work into smaller chunks and track progress (velocity). A sprint can be any unit of time (2 weeks is common) in which a certain number of tasks (can be stories) are claimed. The goal is to have all those tasks accomplished by the end of the sprint and to have working, demonstrable software.
Organizing work into sprints was popularized by the Agile methodology (release software incrementally), which is an alternative to the waterfall methodology (build everything and then release).
Test Driven Development (TDD)
TDD is the practice of writing tests to validate the completed feature before you write the actual implementation. The idea is that this approach can help guide your implementation by validating the specific success case, which can help keep your designs simpler.
The larger collection of an application’s automated tests is referred to as the application’s “Test Suite”.
User Experience (UX)
UX design allows for functionality to be the main focus of a site’s design. The focus here is mainly on accessibility, usability, conversion, and ensuring that all content on site is accessible to all potential users.
User Interface (UI)
UI design focuses on the aesthetics of the entire site to ensure that users enjoy using the end result of production. Think colors, shapes, and sizes of elements on-page.
A user story is a tool that can be used to track requirements. They can also be useful communication aids within the team and among stakeholders. A user story will generally be a statement in the format of: “Who can do what because why”.
Example: “A user can log in so they can manage blog posts.”
Version control refers to a standardized process of saving different versions of a file. Version control systems are very popular (nearly ubiquitous) for any type of development.
You can think of a version control system as an advanced version of copying a word doc with a naming convention (for example, copying paper.docx to paper-backup-1.docx)
Examples: Git, Subversion, Mercurial, Fossil
Vertical scaling means adding more resources to the existing components (servers) in your infrastructure set. If you have a database server and you double the amount of RAM it has, you’ve just vertically scaled your infrastructure.
Vertical scaling is generally easier than horizontal scaling, but there’s a limit to how much you can scale vertically. This limit, however, is generally not a problem unless your application starts receiving a lot of traffic. If you do reach that point, and your application cannot be scaled horizontally, you will need to redesign your infrastructure set to support horizontal scaling.
Virtual Private Server (VPS) Hosting
Most hosting today falls under the VPS banner. A VPS looks like a dedicated server (you have full access to the whole system) but is (behind the scenes) hosted on a larger physical server (or pool of servers) that may manage many different VPSs.
VPSs provide more control versus a standard shared hosting setup (you can install custom software that you generally cannot on a traditional shared host) and usually have better performance profiles (a virtualized environment can have its resources usage monitored and controlled more tightly) than a traditional shared environment.
Example: AWS, GCP, DigitalOcean
The structure or layout of a site, mapped out onto a 2D plane to illustrate the flow of pages to users on the site. This helps organize which pages should be linked to which, to ensure users are able to access all relevant information.