Terminology
Terminology
Table of Contents
Programming language
Source code
As source code is a set of instructions and statements written by a programmer using a computer
programming language. This code is later translated into machine language (binary code) by a
compiler. The source code is the only stage where a programmer can read and modify a computer
program.
Framework
A framework is a code that is already written and covers low(er) level, generic functionalities.
Programmers can selectively change it with additional user-written code, thus providing application-
specific software. A software framework provides a standard way to build and deploy applications. It
consists of many predefined solutions for common functionalities that are used to help build
software applications, products, and solutions on top of it.
By using a framework, developers don’t have to write all the functionalities of the software that they
are working on. These functionalities are already implemented in the framework and ready to use
with a single command. Frameworks can improve developer productivity as well as the quality,
reliability, and robustness of new software. Thus, a knowledge of frameworks for a specific job is one
of the most important skills a developer can possess. Example frameworks: Bootstrap, React, Spring
Framework, Rails, Symfony.
Library
A library is a collection of predefined functions or routines that a program can use. Libraries are
particularly valuable for storing frequently used routines because you do not need to explicitly link
them to every program that uses them. Example libraries: JQuery, Google Guava, RxJava, d3.js.
Culture IT terms
Agile software development describes a set of values and principles for software development under
which requirements and solutions evolve through the collaborative effort of self-organizing cross-
functional teams. It advocates adaptive planning, evolutionary development, early delivery, and
continuous improvement, and it encourages rapid and flexible responses to change. Described in
Agile Manifesto.
DevOps
DevOps focuses on rapid IT service delivery through the adoption of agile, lean practices in the
context of a system-oriented approach. It is one of the IT terms that emphasizes people (and
culture) and seeks to improve collaboration between operations and development teams.
DevOps implementations utilize technology — especially automation and monitoring tools that can
leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective. The
core principles are consistent with many of Site Reliability Engineering (see: SRE below) principles
and practices. One could view DevOps as a generalization of several core SRE principles to a wider
range of organizations, management structures, and personnel. One could equivalently view SRE as
a specific implementation of DevOps with some idiosyncratic extensions.
SRE is a discipline that incorporates aspects of software engineering and applies that to operations
whose goals are to create ultra-scalable and highly reliable software systems. It encourages product
reliability, accountability, and innovation.
Role IT terms
Front-End Developer
A front-end developer essentially creates whatever has a digital visual presence with which people
interact (client-side environment). Traditionally, a front-end developer is a person who is
comfortable with both design and coding; in other words someone who is comfortable using simple
design tools and is able to create a website using HTML code, style it using CSS, and make it
interactive using JavaScript.
UI designer
A UI (User Interface) designer is someone that designs what the application looks like from the
perspective of the user to enable users to interact with the application. UI designers must
understand what the front-end developer expects from him/her and know how to communicate
with them, as well as have design skills. Often this person does not have to be a programmer at all.
UX designer
UX or a “User Experience” designer, is a person who helps create a better experience of using the
application. This person simplifies the visual part of the application and brings out the features that
are used most often. His/her job is to make the application as easy and useful for the users as
possible to increase usability.
Back-End Developer
Full-Stack Developer
A full-stack developer is someone who is comfortable working with both back-end and front-end
technologies. A general understanding of technologies from every part of the development process
is necessary for a front-end developer. This, of course, means that they will not be an expert in any
one particular field. Instead, they can offer a better overview of applicational possibilities and the
capability to bridge the gap between how the system functions and how it looks and feels for the
user.
MEAN developer
A MEAN developer is someone who uses a JavaScript software stack for building dynamic websites
and web applications. MEAN stack developers are experts in using MongoDB, Express.js, AngularJS
(or Angular), and Node.js. Because all components of MEAN stack support programs written in
JavaScript, MEAN applications can be written in one language for both server-side and client-side
execution environments.
System administrator is a person who is responsible for the upkeep, configuration, and reliable
operation of computer systems, mostly servers.
Java
C#
C# (C sharp) is a programming language that is designed for building a variety of applications that
run on the .NET Framework. C# is simple, powerful, type-safe, and object-oriented.
Python
Python is one of the most commonly used programming languages (top 3 according to IEEE
Spectrum research). It was first released in 1991 and has since gained popularity for being simple to
learn, yet powerful in solving problems. The syntax is similar to C++ family yet equipped with a
variety of modern solutions.
PHP
PHP (Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that
is especially suited for web development and can be embedded into HTML. PHP
JavaScript
Perl
The Perl programming language is a general-purpose Unix scripting language to make report
processing easier. It was originally developed by Larry Wall in 1987. Since then, it has undergone
many changes and revisions. Perl 6, which began as a redesign of Perl 5 in 2000, eventually evolved
into a separate language. Both languages continue to be developed independently by different
development teams and they liberally borrow ideas from one another.
Ruby
Swift
R is an open-source programming language and software environment for statistical computing and
graphics. It is widely used among statisticians and data miners for developing statistical software and
data analysis.
Go
Objective-C
SQL
SQL is the most popular database programming language. Historically, this declarative programming
paradigm has been a key feature for ad-hoc queries run for data introspection executed by human
users directly with SQL (rather than with a UI). In modern times, SQL is also embedded in other,
more general-purpose programming languages like Java in order to access data from central
databases.
Scala
Scala is a general-purpose programming language providing support for functional programming and
a strong static type system. Designed to be concise, many of Scala’s design decisions are aimed to
address criticisms of Java.
Android
Android is the world’s most popular operating system (it’s not a programming language) dedicated
mainly to mobile devices. The source code was developed by Google under the Android Open Source
Project (AOSP). Subsequent versions are usually released annually and are announced at Google I/O
conferences.
Database IT terms
Database
is a collection of information stored and used by the software, organized in a way that can be easily
managed. Traditional databases are organized by fields, records, and files.
Relational Database
is a database organized with the relational model. Relationships are a logical connection between
different tables established on the basis of interaction among these tables. All relational databases
use SQL (Structured Query Language) to operate on data (insert, update, load). It looks like a
spreadsheet. Examples: Oracle, MySQL, Postgres, SQL Server.
NoSQL Database
non-relational or non-SQL database. Unlike relational databases, it uses other forms than tabular
data like key-value collections, multi-level structures, graphs, etc. Such databases are usually chosen
for their performance, scalability, and flexibility in schema design.
CAP theorem
states that it is impossible for a distributed data store to simultaneously provide more than two out
of the following three guarantees: consistency (every read receives the most recent write or an
error), availability (every request receives a non-error response without the guarantee that it
contains the most recent write) and partition tolerance (the system continues to operate despite an
arbitrary number of messages being dropped or delayed by the network between nodes). In other
words, CAP theorem states that in the presence of a network partition, one has to choose between
consistency and availability.
ACID
is an acronym consisting of the IT terms Atomicity, Consistency, Isolation, Durability. They are a set
of properties related to the database engines guaranteeing after finishing modification data will be
consistent.
GUI/UI
or “Graphical User Interface”, is the visual part of the software or a website that allows the user to
interact with the application. Every time you use an application, you use it by clicking through the
GUI.
Responsive Design
is responsible for making the interface of the application display well on all possible devices, like
phones, PCs, or tablets, that we use to access it.
CSS
(Cascading Style Sheets) is a method of assigning formatting rules to an HTML page which allows the
content and presentation of a website to be separated. This separation gives web developers the
ability to instantly change the appearance of a specific HTML element, like position, colors, fonts,
etc., throughout an entire website.
Material design
is Google’s conceptual design philosophy that outlines how apps should look and work. It breaks
down everything from animation, style to layout and gives guidance on patterns, components, and
usability.
Bootstrap
is a free open-source front-end web framework for designing websites and web applications. It
makes it very easy to create web pages by empowering designers to select from a large collection of
pre-built elements, behaviors, and shortcuts. The aim is to unify design and allow both non-technical
and technical designers to improve the quality of their design.
Testing IT terms
Unit testing
is a software development process in which the smallest testable parts of an application (called
units) are individually and independently checked to see if they succeed. Most popular libraries are:
JUnit, Mocha, NUnit, RSpec.
Integration tests
Integration tests are a level of software testing where individual units are combined and tested as a
group. These tests are performed in order to expose defects in the interface and in interactions
between integrated components or systems. It occurs after unit testing and before validation
testing.
Acceptance tests
Acceptance tests are a level of software testing where a system is tested for acceptability. The
purpose of this test is to evaluate the system’s compliance with business requirements, user needs,
and business processes. Acceptance tests determine if a system satisfies the acceptance criteria and
to enable the user, customers or other authorized entity to determine whether or not to accept the
system.
Performance tests
Performance tests are a type of software testing that intends to determine how a system performs
in terms of responsiveness and stability under a certain workload (usually under stress).
is the management of changes to documents, computer programs, large websites, and other
collections of information. Changes are usually identified by number or letter code, called a “revision
number,” “revision level,” or simply “revision.” For example, an initial set of files is “revision 1.”
When the first change is made, the resulting set is “revision 2,” and so on. Each revision is associated
with a timestamp and the person making the change. Revisions can be compared, restored, and with
some types of files, merged.
Subversion (svn)
is another popular open source version control system. In contrast to Git, all developers use one
centralized repository.
Git
Git is a free open source distributed version control system for tracking changes in computer files
and coordinating work on those files among multiple people. It is primarily used for source code
management in software development, but it can be used to keep track of changes in any set of files.
Commit
In version control systems, a commit is a saved change made to the source code. Commits are
usually added/deleted files or directories, changed file contents, etc.
is the practice of merging all developer working copies to a shared mainline several times a day.
GitHub
GitHub is a popular Git hosting service. It is mostly used for code. In addition to Git, it provides
several collaboration features, important IT terms such as bug tracking, feature requests, task
management and wikis.
GitLab
GitLab.com is a Git repository hosting that provides wikis and issue tracking functionality. It’s an
open-source project developed by GitLab Inc.
Bitbucket
Bitbucket.org is a Git and Mercurial repository hosting service owned by Atlassian. Like its
counterparts, it provides several collaboration features such as issue tracking and wikis.
IDE
Build tools
Build tools are used to convert programming code written by the developer into binary code that is
executable by a computer and run it. It usually manages external dependencies (libraries or
frameworks) which are used in the project. Examples: Gradle, Maven, Rake, MSBuild, Phing.
Continuous Integration
Continuous Delivery
is a software engineering approach in which teams produce software in short cycles, ensuring that it
can be reliably released at any time. This means the deployment package is prepared and
automatically tested continuously (e.g. once per day) and ready to ship to production.
Continuous Deployment
Continuous deployment is similar to continuous delivery but ends up with the package being
deployed to production instead of just ready to be deployed.
Deployment
means pushing new software package version into its target environment.
Feature
Release
Deployment Pipeline
defines the sequence of stages that must be completed before an application is rolled out to
production. By breaking up the deployment lifecycle into stages, you collect increasing confidence,
usually at the cost of extra time. Early stages reveal most problems yielding faster feedback, while
later stages provide slower and more thorough probing. Stages can include building, deploying,
testing, archiving, etc.
is a running report on a particular problem, its status, and other relevant data within an issue
tracking system. They are commonly created in a help desk or call center environment and almost
always have a unique reference number, also known as a case, issue, or call log number. This
number is used to allow the user or help staff to quickly locate, add to or communicate the status of
the user’s issue or request.
Architecture IT terms
Architecture
Architecture is a term applied to both the process and the outcome of thinking out and specifying
the overall structure, logical components, and logical interrelationships of a computer, its operating
system, and network.
API
(Application Programming Interface) is a set of definitions, protocols, schemas, tools, and practices
to communicate with the application. To developers, API is what Graphical User Interface is to users.
It allows developers (and finally other applications) to communicate with applications.
REST
REST (Representational State Transfer) is a set of guidelines for building web services providing
interoperability between remote computers. It is focused on resources and basic operations (like
editing, reading, and adding) related to them. They are commonly used to expose public API.
SOAP
Simple Object Access Protocol is a way of exchanging structured information between computers.
Compared to REST, it’s more formal, less flexible, and requires schema definition (WSDL).
Monolith
is an architecture style based on running on a single application layer that tends to bundle all the
functionalities needed by the architecture together. To put it simply, it means being composed all in
one piece. Monolithic software is designed to be self-contained; components of the program are
interconnected and interdependent rather than loosely coupled as is the case with modular
software programs. Furthermore, if any program component must be updated, the whole
application has to be rewritten, whereas, in modular applications, any separate module (such as a
microservice) can be changed without affecting other parts of the program.
Distributed system
Microservices
Microservices are a variant of the service-oriented architecture (SOA) architectural style. The idea
behind microservices is that some types of applications become easier to build and maintain when
they are broken down into smaller, composable pieces which work together. Each component is
autonomous, developed separately, and the application is then simply the sum of its constituent
components. This is in contrast to a traditional, “monolithic” application developed in one piece.
The Microservices style is used by many organizations (like Netflix, Uber, and Facebook) today as a
game-changer to achieve a high degree of agility, speed of delivery, and scale.
CRUD
CRUD is actually an acronym of Create, Read, Update, Delete. It describes a type of applications
focused on simple data editing without any rich business operations. Colloquially called “database
viewers.”
Infrastructure IT terms
Infrastructure
refers to the composite hardware, software, network resources, and services required for the
existence, operation, and management of an enterprise IT environment. It allows an organization to
deliver IT solutions and services to its employees, partners and/or customers and is usually internal
to an organization and deployed within owned facilities.
Cloud service
A cloud service is any service made available to users on-demand via the Internet from a cloud
computing provider’s servers (i.g Microsoft Azure or Amazon Web Services) as opposed to being
provided from physical on-premises servers.
The downside, however, is that your software experience is wholly dependent on the SaaS provider,
which is responsible for stability, reporting, billing, and security. Well-known examples of some SaaS
companies services are Gmail, Dropbox, Salesforce, and Netflix.
PaaS is a category of cloud computing services that functions at a lower level than SaaS, typically
providing a platform on which software can be developed and deployed. PaaS providers abstract
much of the work of dealing with servers and give clients an environment in which the operating
system and server software, as well as the underlying server hardware and network infrastructure,
are taken care of. This leaves users free to focus on the business side of scalability, and the
application development of their product or service. It allows customers to develop, run, and
manage applications without the complexity of building and maintaining the infrastructure typically
associated with developing and launching an app.
PaaS makes the development, testing, and deployment of applications quick, simple, and cost-
effective. some PaaS examples include Pivotal Cloud Foundry and Heroku.
IaaS is the most basic cloud-service model offering computing infrastructure – IT terms like virtual
machines and other resources – as a service to subscribers. It’s a lower level compared to PaaS.
Typically, IaaS provides hardware, storage, servers, and data center space or network components. It
allows you to quickly scale up and down with demand and pay only for what you use. This makes
IaaS well-suited for workloads that are temporary, experimental or change unexpectedly. IaaS
examples: Amazon Web Services and its EC2.
Automation
IT automation is the linking of disparate systems and software in such a way that they become self-
acting or self-regulating.
IaC (programmable infrastructure), means writing code (which can be done using a high-level
language or any descriptive language) to manage configurations and automate the provisioning of
infrastructure in addition to deployments. IaC is not only about writing scripts, it also involves using
tested and proven software development practices that are already being used in application
development, e.g. version control, testing, small deployments, use of design patterns etc. In short,
this means you write code to provision and manage your server, in addition to automating
processes. It’s an approach to managing IT infrastructure for the age of cloud, microservices, and
continuous delivery.
Containers
consist of an entire runtime environment: an application, plus all its dependencies, libraries, and
other binaries, and configuration files needed to run it, bundled into one package. Containers are a
solution to the problem of how to get software to run reliably when moved from one computing
environment to another. This could be from a developer’s laptop to a test environment, from a
staging environment into production, and perhaps from a physical machine in a data center to a
virtual machine in private or public cloud.
Operating system
is system software that manages computer hardware and software resources and provides common
services for computer programs. All computer programs, excluding firmware, require an operating
system to function. Examples: Microsoft Windows, macOS, Linux.
Shell
is an interface that enables the user to interact with a computer. It provides a user interface for
access to an operating system’s services. In general, operating system shells use either a command-
line interface (CLI) or graphical user interface (GUI), depending on a computer’s role and particular
operation. The name comes from the fact that shells are layers around the operating system kernel.
Metric
Log
is a record of what has happened. Typically, it helps diagnose problems or get certain insights on
what is going on in an application’s lifecycle.