DEV Community

Audrey Hayes
Audrey Hayes

Posted on

Glossary of Software Development Terms

Why a glossary?

When I first entered the field of software development, one of the biggest barriers to overcome was being unfamiliar with the many words seasoned developers used daily.

I'd like to help out newer generations of juniors by collating a list of helpful terms to be aware of when you are trying to land that first job.

Many of the terms listed below are, of course, highly dependant on the area of software development you work in as well as the particular lingo used in your workplace. I've attempted to keep them as general as possible.

Please shout out in the comments if you have suggestions of terms to add or alternative definitions for the ones I've already included!

Glossary

Build

'Building' is a fairly general term, and it can refer to anything that is needed to go from editable source material (source code, scripts, raw data files, etc.) to a shippable software product. Building can (and usually does) involve several steps, such as pre-processing, compiling, linking, converting data files, running automated tests, packaging, etc.

Build Pipeline

A pipeline is a set of automated processes that allow developers to reliably and efficiently compile, build and deploy their code to their production platforms. The pipeline process is often referred to as CI/CD (Continuous Integration/Continuous Development). The process is generally run automatically when deploying a piece of software (see 'Deploy' definition).

Compile

The act of taking a higher-level language (like TypeScript) and translating it into a language that a platform understands (such as JavaScript if you want your code to run on a browser platform)

Dependencies

Pieces of software external to your program that your program uses in order to run. There are 'dev dependencies', which are pieces of software (i.e. libraries, frameworks, packages) that are only used during the initial stages of writing source code (the development stage). A linting tool is an example of a dev dependency. They are generally removed during the build process in order to make a deployed program smaller. Dependencies required in order for the deployed program to run in production are kept.

Deploy

To take built artefacts (the results from 'building') and either copy them to a server, or execute them on a server.

Linting

The automated checking of source code for programmatic and stylistic errors.

Minification

The process of removing unnecessary spaces and line breaks while shortening variable and function names to optimise file size. It’s one of the main methods used to reduce load times and bandwidth usage on websites.

Module Bundler

A tool that takes pieces of code (i.e. Javascript) and its dependencies and bundles them into a single file, usually for use in the browser. Popular module bundlers are webpack, browserify, and rollup.

Package Manager

A package manager is a programming language’s tool to create project environments and easily import external dependencies. For example, npm is a package manager for node

Preprocessor

A program that translates input data into output data that is then used in another program (like a compiler). A preprocessor can also add functionality that doesn't natively exist in the output language.

A CSS preprocessor (like Sass) is a program that lets you generate CSS from the preprocessor's own unique syntax.

Release

Distributing software to the end user or consumer. In CI/CD (see 'Build' definition), a release is made any time a piece of software is updated. They are associated with a specific version number or name (see 'Versioning' definition).

Task Runner

A way of automating common tasks. Gulp is an example of a task runner.

Transpile

A specific term for taking source code written in one language and transforming into another language that has a similar level of abstraction. It can also mean translating from one version to another version in the same language (i.e. transpiling JavaScript version ES6 into ES5).

Versioning

The act of assigning unique version names or unique numbers to a release (see 'Release' definition). To make version descriptions more cohesive across the field of software development, there are versioning schemes widely used such as SemVer.

Watching

The act of a program 'watching' for changes in your source code and then taking some kind of action when a change is detected. Actions taken could be re-building your source code or reloading the browser to show new changes.

Top comments (0)