When I started my career at Atomic Object, I drank from the firehose… a lot. After years of working on projects, getting exceptional mentorship, and asking a ton of questions, I feel like I finally have a firm grasp of the jargon I encounter daily.
Often we’re working with clients that have little or no experience creating software. We love collaboration and want our customer stakeholders involved throughout our engagements. It’s unfair to expect them to follow conversations that took me months or years to follow, even after being immersed in them daily.
So, in this series, I’ll take a stab at creating a glossary of terms for people new to custom software that will enable them to understand more quickly what their development team is talking about and allow them to focus on contributing instead of seeking to understand.
This series will cover three key areas of creating a software product from scratch: process, design, and development. Each post will focus on a specific area. I mean for these definitions to provide enough context to follow a conversation without going too deep. You should know that there are nuances in many of these terms that I will not cover here.
Let’s dig into my list of development terms. Please feel free to add a comment with your own terms and definitions that I’ve missed (I’m sure there are plenty!).
Definition: The unique technologies a team combines (aka stacks) to build custom software.
Tech stacks consist of several building blocks, which include pieces such as frontend and backend technologies, app hosting, database, etc. Each building block has a ton of options. And, generally, a team can use any combination of options to create a holistic solution.
However, there are benefits to choosing particular combinations of building blocks as they may be built to work more seamlessly together.
Definition: Software that’s built to help developers create instructions that a computer can understand.
Definition: Software that exists within a programming language to make development in any piece of a tech stack faster, easier, or less error-prone.
Frameworks that have large adoption rates amongst the developer community make it easier for developers to move between projects and understand new code more quickly.
Definition: A system that contains no visual aspect (head) to it.
Headless services are valuable for their ability to store related data in an efficient way. This removes a time-consuming task for developers when building a new set of features.
Because these systems have no visual aspect, it is up to the developers to build a visual layer around the data. In many cases, this is desirable because each application has different needs around viewing and navigating the data.
Contentful is an example of a headless CMS (Content Management System) platform. It provides an efficient way to manage and store rich content, such as blog posts, PDFs, and product listings, without forcing a particular way of viewing or navigating said content.
Definition: The place where code and data storage are stored for a web application.
As a simplified explanation, the internet helps route people to different hosts. The hosts then serve up applications (websites) to the user.
You’ll probably hear developers talk about two types of hosting; cloud and on-prem (ises). On-premises hosting means code is stored on a server that’s managed by the company that created it. This type of hosting solution is used when the data that’s stored is very sensitive (health care, identity, etc.).
Cloud hosting is when code lives on another company’s server. Amazon AWS is an example of a popular cloud hosting service. Cloud providers reduce costs by managing the hardware and hosting software for you. They also may provide tools that make scaling your applications dead simple.
Definition: Application Programming Interface (API) is a system that developers both build and use to interact with other applications.
APIs allow the owners of an application to restrict how other applications interact with it or what data those applications have access to.
Typically APIs are the layer between a piece of software that a person interacts with, like a website, and the database that stores information that drives data on the website. But, this isn’t the only use of APIs. You can also build APIs that allow users to interact with hardware. Those are used for tasks like enabling temperature control of a smart thermostat or turning a light on from a mobile app.
Definition: Continuous Integration (CI)/Continuous Deployment (CD) is a process by which deploying new applications doesn’t require humans, is more reliable, and is more repeatable.
CI/CD platforms create standard ways for developers to deploy new versions of applications with little human interaction. They do that by ensuring code has passed automated checks and by leveraging software that deploys code in the same way every time. These processes provide fail safes (such as catching failing tests) that prevent users from seeing bad code.
Definition: Where code is stored, managed, and versioned.
Code repositories have become complex systems that allow multiple developers to collaborate on creating and editing code. Common features of code repositories include tracking historical changes, allowing multiple tracks of development to happen simultaneously, and creating safeguards for introducing new code.
Common code repository services include GitHub, BitBucket, and Azure DevOps. These services include several features in addition to being a repository for code.
More Software Jargon
In my next post, we’ll dig into some of the common process jargon you’ll hear when building custom software. As I mentioned above, please comment with your own development terms, definitions, and examples.