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!
'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.
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).
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.
To take built artefacts (the results from 'building') and either copy them to a server, or execute them on a server.
The automated checking of source code for programmatic and stylistic errors.
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.
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.
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).
A way of automating common tasks. Gulp is an example of a task runner.
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.
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.