Technology Terms for
Recruiters
Source: Talentbin
Source: Stackoverflow
Source: Stackoverflow
Source: Dice
Source: Dice
Source: Wikipedia &Devskiller
1. General terms
Programming language
is a language used by programmers to instruct a computer to perform a certain job.
It’s normally a set of instructions that can be used to achieve the desired output of
a computer application written in a certain programming language.
Source code
is a set of instructions and statements written by a programmer using computer
programming language. This code is later translated into machine language (binary
code) by a compiler. Source code is the only stage where a programmer can read
and modify a computer program.
Framework
is code that is already written and covers low(er) level, generic functionalities so
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,
solutions on top of it. Using a framework, developers don’t have to write all the
functionalities of the software that they are working on because they are already
implemented in the framework and ready to use them with a single command.
Frameworks can improve developer productivity as well as the quality, reliability
and robustness of new software. Thus, knowledge of frameworks for a specific job
is one of the most important skills of a developer. Examples: Bootstrap, React,
Spring Framework, Rails, Symfony.
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.
2. Culture
Agile software development
describes a set of values and principles for software development under which
requirements and solutions evolve through 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
response to change.
DevOps
represents a change in IT culture focusing on rapid IT service delivery through the
adoption of agile, lean practices in the context of a system-oriented approach.
DevOps 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. DevOps core principles are consistent with many of Site Reliability
Engineering (see: SRE) 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 (Site Reliability Engineering)
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.
3. Roles
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 website using HTML
code, style it using CSS and make it interactive using JavaScript.
UI designer
or “User Interface” designer, is the one 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 front-end developer expects from him and know
how to communicate with him, as well as have design skills.Often this person does
not have to be a programmer at all.
UX designer
or “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
is involved in the process of combining a server, an application and a database to
solve a problem (server-side environment). This entire process is solidly
entrenched in logic, a network of processes and queries being resolved in split
seconds to give you a certain desired output as a user. They are different from
front-end developers in that the job of a back-end developer is completely free of
any visual design and relies on logical reasoning and software architecture that
aims to deliver a particular output.
Full-Stack Developer
is one who is comfortable working with both back-end and front-end technologies.
A general knowledge of technologies from every section 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 but can rather offer a better overview of
applicational possibilities and capability of bridging the gap between how the
system functions and how it looks and feels for the user.
MEAN developer
is one who uses 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 (SysOp, sysadmin)
is a person who is responsible for the upkeep, configuration and reliable operation
of computer systems, mostly servers.
4. Programming languages and technologies
Java
is a compiled, object-oriented programming language, similar in syntax to C++. It is
intended to let application developers “write once, run anywhere” meaning that
compiled Java code can run on all platforms that support Java without the need for
recompilation.
C
is a general-purpose, imperative computer programming language supporting
structured programming, lexical variable scope, and recursion, while a static type
system prevents many unintended operations. C was originally developed by
Dennis Ritchie between 1969 and 1973 at Bell Labs, and used to reimplement the
Unix operating system. It has since become one of the most widely used
programming languages of all time.
C++
(pronounced cee plus plus /ˈsiː plʌs plʌs/) is a general-purpose programming
language. It has imperative, object-oriented and generic programming features and
it provides facilities for low-level memory manipulation.
C#
(pronounced “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
is one of the most commonly used programming languages (top 3 according to IEEE
Spectrum research). It was first released in 1991 and 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.
Visual Basic .NET
is a multi-paradigm, object-oriented programming language implemented on the
.NET Framework. Microsoft launched VB.NET in 2002 as the successor to its
original Visual Basic language. Although the “.NET” portion of the name was
dropped in 2005, “Visual Basic [.NET]” is used to refer to all Visual Basic languages
releases since 2002 in order to distinguish between them and the classic Visual
Basic. Along with Visual C#, it is one of the two main languages targeting the .NET
framework.
PHP
(recursive acronym for 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.
JavaScript
(also known as JS) is high-level, prototype-based, untyped, dynamic language.
Depending on the environment JavaScript can be interpreted or compiled. It is a
multi-paradigm programming language, supporting object-oriented, imperative and
functional programming styles. Read more: Devskiller
Perl
was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting
language to make report processing easier. 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
is a dynamic, reflective, object-oriented, general-purpose programming language. It
was designed and developed in the mid-1990s by Yukihiro “Matz” Matsumoto in
Japan. According to its creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada,
and Lisp.
Swift
is a general-purpose, multi-paradigm compiled programming language developed
by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux.
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
(often referred to as golang) is a free and open source programming language
created at Google.
Objective-C
is a general-purpose, object-oriented programming language that adds Smalltalk-
style messaging to the C programming language. It was the main programming
language used by Apple for the OS X and iOS operating systems, and their
respective application programming interfaces (APIs) Cocoa and Cocoa Touch prior
to the introduction of Swift.
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 days, SQL is also embedded in other, more general purpose programming
languages like Java in order to access data from central databases.
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 aimed to address criticisms of Java.
Android
is the world’s most popular operating system (it’s not a programming language)
dedicated mainly to mobile devices. The source code is developed by Google under
the Android Open Source Project (AOSP). Subsequent versions are usually released
annually and are announced at Google I/O conferences.
5. Databases
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). 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 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
Atomicity, Consistency, Isolation, Durability. A set of properties related to the
database engines guaranteeing after finishing modification data will be consistent.
6. User Interface
GUI/UI
or “Graphical User Interface”, is a visual part of the software or a website that
allows the user to interact with the application. Every time when you are using an
application you use it by clicking through 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 webpages 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.
7. Testing
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
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
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
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). Read more: Software Testing Fundamentals
8. Development tools and processes
Version control system
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, termed “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. Read more: Wikipedia
Subversion (svn)
is another popular open source version control system. In contrast to Git, all
developers use one centralized repository. Read more: Version Control with
Subversion
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. Read more: Wikipedia
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.
Read more: Wikipedia
Trunk Based Development
is the practice of merging all developer working copies to a shared mainline several
times a day. Read more: TrunkBasedDevelopment
GitHub
is a popular Git hosting service. It is mostly used for code. In addition to Git, it
provides several collaboration features such as bug tracking, feature requests, task
management and wikis. Website: GitHub.com. Read more: Wikipedia
GitLab
just like GitHub is a Git repository hosting which provides wikis and issue tracking
functionality. It’s an open source project developed by GitLab Inc. Website:
GitLab.com. Read more: Wikipedia
Bitbucket
is Git and Mercurial repository hosting service owned by Atlassian. Like its
counterparts, it provides several collaboration features such as issue tracking and
wikis. Read more: Bitbucket.org
Automation server (like Jenkins, Bamboo, TeamCity)
helps automate the non-human part of software development process with
continuous integration and facilitating technical aspects of continuous delivery.
Continuous Integration
extension of Trunk Based Development practice, where each integration is verified
by automated tools and tests to give fast feedback and detect errors as fast as
possible.
Continuous Delivery
software engineering approach in which teams produce software in short cycles,
ensuring that it can be reliably released at any time. This means deployment
package is prepared and automatically tested continuously (e.g. once per day) and
ready to ship to production.
Continuous Deployment
is similar to Continuous Delivery but ends up on the package being deployed to
production instead of just ready to be deployed.
Deployment
pushing new software package version into target environment.
Feature
a distinguishing characteristic of a software item (e.g., performance, portability, or
functionality). Read more: Wikipedia
Release
making the version package (features) available to end users.
Deployment Pipeline
defines the sequence of stages to pass until 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 can find most problems
yielding faster feedback, while later stages provide slower and more thorough
probing. Stages can include building, deploying, testing, archiving, etc.
Ticket / Issue / Incident
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 case, issue or call log number which 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.
9. Architecture
Architecture
in information technology (especially computers and more recently networks)
architecture is a term applied to both the process and the outcome of thinking out
and specifying overall structure, logical components, and logical interrelationships
of a computer, its operating system and network.
API
(Application Programming Interface) – 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
(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, adding) related to them. 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
is a model in which components located on networked computers communicate
and coordinate their actions by passing messages, appearing to its users as a single
coherent system. The components interact with each other in order to achieve a
common goal. Three significant characteristics of distributed systems are:
concurrency of components, lack of a global clock, and independent failure of
components.
Service-oriented architecture (SOA)
is a style of software design based on discrete software components (services) that
collectively provide functionalities of larger software architecture. A service is a
discrete unit of functionality that can be accessed remotely and acted upon and
updated independently, such as retrieving a credit card statement online. In this
approach, services are provided to other components by application components,
through a communication protocol over a network. Basic principles of service-
oriented architecture are independent of vendors, products and technologies.
Service-oriented architecture has been mainly been used and focused on big
enterprise scale.
Microservices
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.
Microservices style is used by many organizations (like Netflix, Uber, Facebook)
today as a game changer to achieve high degree of agility, speed of delivery, and
scale.
CRUD
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”.
10. Infrastructure
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
is any service made available to users on demand via the Internet from cloud
computing provider’s servers (i.g Microsoft Azure or Amazon Web Services) as
opposed to being provided from a physical on-premises servers.
Software as a Service (SaaS)
sometimes referred to as “on-demand software”, is a software licensing and
delivery model in which software is licensed on a subscription basis and is centrally
hosted. SaaS is the most familiar form of cloud service for consumers. SaaS
providers make the application available to users through the Internet, usually a
browser-based interface. SaaS customers can enjoy the software without having to
worry about development, maintenance, support, update, or backups. The
downside, however, is that your software experience is wholly dependent on the
SaaS provider, which is responsible for stability, reporting, billing, and security.
SaaS examples: Gmail, Dropbox, Salesforce, or Netflix.
Platform as a Service (PaaS)
is a category of cloud computing services. PaaS 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, leaving
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. PaaS examples: Pivotal Cloud Foundry, Heroku.
Infrastructure as a Service (IaaS)
is the most basic cloud-service model offering computing infrastructure – 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 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. Read more: TechTarget.com
Infrastructure as Code (IaC)
also referred to as programmable infrastructure, means writing code (which can be
done using a high level language or any descriptive language) to manage
configurations and automate 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 user
interface for access to an operating system’s services. In general, operating system
shells use either 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
measurement of a particular characteristic of a program’s performance or
efficiency.
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 life cycle.