Glossary of Software Development Terms
Tags: beginners, juniors, software
Published: 2020-10-15 10:10:56

---
title: Glossary of Software Development Terms
published: true
description: Useful terms for junior developers to know
tags: #beginners #juniors #software
//cover_image: https://direct_url_to_image.jpg
---
# 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](https://webpack.js.org/), [browserify](http://browserify.org/), and [rollup](https://rollupjs.org/guide/en/).

### Package Manager
A package manager is a programming language’s tool to create project environments and easily import external dependencies. For example, [npm](https://www.npmjs.com/) is a package manager for [node](https://nodejs.org/en/)

### 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](https://sass-lang.com/)) 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](https://gulpjs.com/) 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](https://semver.org/).

### 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.