Technologies – Every Recruiter should Know
Purpose
of this post: Like a lot of Recruiters are good at Communication Skills,
Handling calls, Email Writing skills but the only thing which they are lacking
a with their Technical skills, Even though they are working for Tech
requirements
So in
order to make Recruiters technically fit i.e. to help recruiters answer each
and every question on Technologies
Check
out the General terms which Each and every Technical Recruiter will come across
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.
The
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, and 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 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.
Culture
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 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 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.
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 a 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 developers expect from them 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 or “User Experience” designer is a person who helps
create a better experience of usingthe 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.
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.
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. 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 a 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.
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.
Databases
Database – 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.
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 and style to layout and
gives guidance on patterns, components and usability.
Bootstrap – 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.
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).
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.
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.
Subversion (svn) is another popular open-source version control
system. In contrast to Git, all developers use one centralized repository.
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.
Trunk
Based Development is the practice of merging all developer working copies to a
shared mainline several times a day.
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.
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.
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.
IDE, or “Integrated Development Environment” is a code editor application designed to help programmers
write, run and debug code. Examples: Eclipse, IntelliJ IDEA, Visual Studio, PHP
Storm, etc.
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.
Automation
server (like Jenkins, Bamboo, TeamCity) helps automate the non-human
part of the software development process with continuous integration and
facilitating technical aspects of continuous delivery.
Continuous
Integration – the 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 the target
environment.
Feature – a distinguishing characteristic of a software item (e.g.,
performance, portability, or functionality).
Release – making the version package (features) available to end-users.
Deployment
Pipeline defines the sequence of stages to pass until the 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.
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 the 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.
A
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 used and focused on a 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 a 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”.
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 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 thanSaaS, 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.
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 the provisioning of infrastructure in
addition to deployments. IaC is not only about writing scripts, but 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 the 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.
The
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 a 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 – The measurement of a particular characteristic of a program’s
performance or efficiency.
The
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.
No comments:
Post a Comment