You are on page 1of 9

Back-end

technologies

PHP 5.*

Symfony (2), Zend Framework (2), CakePHP, Yii, Laravel,


PHP frameworks
CodeIgniter

CMS (content
management Joomla, Drupal, Wordpress, Magento (for e-commerce)
system)

LAMP Linux + Apache + MySQL + PHP

Twig (templating), PHPUnit (testing), Doctrine (ORM),


PHP keywords
PHPStorm (IDE), Pear, Smarty

Ruby

Ruby frameworks Rails/Ruby on Rails, Sinatra, Padrino, JRuby

Ruby testing tools RSpec, Capybara, Watir, Cucumber

Ruby deployment Passenger, Capistrano

Java

Java SE frameworks Swing, Play, JavaFX, JSF, Netty, Spring MVC, Wicket

Java EE frameworks JSP, Servlets, EJB, JMX, JAF

ORM Hibernate, EJB, JPA

Java build tools Ant, Maven, Gradle

Java deployment Tomcat, JBoss, GlassFish, WebLogic

Java testing tools jUnit, TestNG, Cactus, EasyMock, Mockito, Cucumber

C# (.NET) Microsoft

C# frameworks .NET 1.0 - .NET 4.5.*

ASP.NET (web
framework ASP.NET Web API (2), ASP.NET MVC, ASP.NET Web Forms (old
connected with school)
HTML, CSS, JS)

WPF, WCF WPF - graphical subsystem for rendering user interfaces, WCF -
tool to build Service-Oriented applications

ORM nHibernate, Entity Framework, Linq2SQL, ADO.NET

C# testing tools nUnit, SpecFlow, MStest

Python

Python frameworks Django, Flask, Pyramid, Pylons, SQLAlchemy, web2py, Kivy

С++

STL, Boost, QT (for user interfaces), vxWidgets, Loki, POCO,


C++ frameworks
OpenCV (for imaging)

Scala

Scala frameworks Akka, Cats, Lift, Play, Scalaz, Slick, Shapeless, Spray

Front-end
technologies

JavaScript

JavaScript jQuery, extJS, Angular, React, Ember.js, Backbone, Knockout.js,


frameworks ...

JavaScript Back-End
Node.js, Sails, Express, Grunt/Gulp (build tools for Node.js)
frameworks

Node.js-based build
Grunt, Gulp, Brocolli, Webpack
tools

JavaScript testing
Jasmine, Karma, Mocha
tools

AJAX Dynamic requests to server without reloading a webpage

HTML HTML4, HTML5, Zurb, Bootstap, Canvas, WebGL

CSS CSS2, CCS3, Bootstrap, Compass, LESS, SASS, YAML, Zurb

Responsive web Approach for optimal viewing and interaction across a wide
design range of devices (from monitor to mobile/tablets)

Mobile
development

iOS Objective C, Swift

CoreData (DB in iOS), Cocoa, Cocoa Touch, UIKit, CoreLocation,


iOS frameworks
CoreFoundation, CoreImage, CoreGraphics

Cocoa Pods (dependency manager), Flurry (for analytics),


iOS tools TestFlight (for installation and testing iOS apps), HockeyApp
(platform for apps)

Android

Android SDK, Android NDK, Android IDE, Gradle (build tool),


Android keywords
AndEngine, Robotium (testing) + a lot of Java keywords

Cross-platform
jQuery Mobile, PhoneGap, Sencha Touch, Dojo Mobile,
Mobile (mostly
Titanium, Xamarin (C#)
JavaScript)

Testing (Quality
Assurance)

Functional,
Selenium (browser automation), WebDriver, SoapUI (for API
Regression testing
testing), Watir, Watin, QTP, Cucumber
tools

Load, Stress and


Performance testing JMeter, NeoLoad, LoadRunner, LoadUI, Siege, Gatling,
tools

Load, stress, performance, regressional, functional, security,


Types of testing
cross-browser, black-box, etc

Databases (DB)

Programming languare for managing data held in a relational


SQL
database management system (RDBMS)

MySQL, Oracle, Access, MS SQL Server (mostly for Microsoft


Relational DB
stack), PostgreSQL, SQLite

Cassandra, MongoDB, Berkeley DB, Redis, Riak, CouchDB,


NoSQL
DynamoDB

Object-related Programming technique that connects databases with object-


mapping (ORM) oriented principles)

Stored procedures, triggers, replication, performance


Magic keywords for
optimization, clustering, back-up, deadlocks, tuning,
DBA
configuration

Programming
paradigms

Programming paradigm based on the concept of "objects"


OOP (object-oriented (which are data structures that contain data, in the form of
programming) fields) often known as attributes; and code (in the form of
procedures) often known as methods

Languages with OO C++, C#, Java, JavaScript, Objective C, Perl (v5), PHP5, Python,
features Ruby, Scala,

Style of building the structure and elements of computer


Functional programs, that treats computation as the evaluation of
programming mathematical functions and avoids changing-state and
mutable data.

Functional languages Scala, Erlang, OCaml, Haskell, F#, Clojure, Elixir, R

Programming language that supports scripts, programs written


for a special run-time environment that can interpret (rather
Scripting language
than compile) and automate the execution of tasks that could
alternatively be executed one-by-one by a human operator

Scripting languages Perl, Shell, Bash, AWK, Python, Ruby, JavaScript, Lua

Architecture

OOD (object-oriented Object-oriented design patterns typically show relationships


design) and interactions between classes or objects

Formalized best practices that the developer can use to solve


Design Patterns
common problems when designing an application

Software architectural pattern for implementing user


MVC (model view interfaces. An easy way to understand MVC: the model is the
controller) data, the view is the window on the screen, and the controller
is the glue between the two

Design Patterns Observer, Iterator, Strategy, Factory, Singleton, Composite,


examples Facade, Proxy, etc
SOA (Service- Architectural pattern in which application components provide
Oriented services to other components via a communications protocol,
Architecture) typically over a network

UML (Unified
Way to visualize the design of a software (in diagrams)
Modeling Language)

REST - software architecture style with guidelines and best


Webservices practices for creating scalable web services, SOAP, JSON-RPC,
XML-RPC

Markup (formatting
and processing of XML, XSLT, xPath, XMPP (for messaging)
text)

Connector (bridge) for websites/mobile apps with your


API
software - Facebook API, Google API, Twitter API, etc

Tools

Memcached (for caching), Nginx (web server for high-load),


High-load tools
Varnish, Squid (reverse proxies), haproxy (load balancer), CDN

Hadoop, Hive, Pig, Apache HBase, Cassandra, MapReduce


Big Data tools
(method), Spark

Continious Merging all developer working copies with a shared mainline


Integration (CI) several times a day.

Jenkins, Teamcity, TFS (mainly C#), CruiseControl (C#),


CI tools
Bamboo, Hudson, Travis

Continious Updating а server with automated schedule. These updates


Deployment (CD) include code revision, auto/unit test running

Bug/Issue Tracking Tracking bugs, reports. Issue tracking - software for project
system management, tasks in team, etc

Bug/Issue Tracking
Jira, Mantis, Confluence, RedMine, YouTrack, Trello, BaseCamp
tools

Version Control
Team of developers may change the same files
System (VCS)

VCS tools Git, Mercurial, SVN, CVS, Perforce


VCS services Github, Bitbucket, Gitlab

Visual Studio (C#), Eclipse, NetBeans, Aptana, xCode (iOS),


IDE (editors for code)
WebStorm, IntelliJ IDEA

DevOps

OS Linux, Unix, BSD, Windows, MacOS

Linux Distributions Ubuntu, RedHat, CentOS, Suse, Debian

Software development method that emphasizes


communication, collaboration, integration, automation. The
DevOps
method acknowledges the interdependence of software
(Development +
development, quality assurance (QA), and IT operations, and
Operations)
aims to help an organization rapidly produce software products
and services and to improve operations performance

Refers to the act of creating a virtual (rather than actual)


version of something, including virtual computer hardware
Virtualization
platforms, operating systems, storage devices, and computer
network resources.

Virtualization tools VMware, KVM, Xen, VirtualBox , Vagrant

Systems engineering process for establishing and maintaining


Configuration consistency of a product's performance, functional and
Management physical attributes with its requirements, design and
operational information throughout its life.

Puppet / MCollective, Chef, Ansible, CFEngine, SaltStack,


CM tools
RANCID, Ubuntu Juju

New Relic, Nagios, Icinga, Graphite, Ganglia, Cacti, PagerDuty,


Monitoring tools
Sensu

TCP/IP (transfering data in computers and internet), HTTP


Network protocols
(internet protocol), HTTP/2, WebSockets

Apache, Tomcat (mainly for Java), IIS (mainly for C#), jBoss
Web servers
(Java)

Development
Methodologies

Scrum Iterative and incremental agile software development


methodology for managing product development. It defines "a
flexible, holistic product development strategy where a
development team works as a unit to reach a common goal,
challenges assumptions of the "traditional, sequential
approach" to product development, and enables teams to self-
organize by encouraging physical co-location or close online
collaboration of all team members, as well as daily face-to-face
communication among all team members and disciplines in
the project. A key principle of scrum is its recognition that
during production processes, the customers can change their
minds about what they want and need, and that unpredicted
challenges cannot be easily addressed in a traditional
predictive or planned manner.

Type of Agile software development methodology which is


intended to improve software quality and responsiveness to
changing customer requirements. It includes: frequent
"releases" in short development cycles, programming in pairs
or doing extensive code review, unit testing of all code,
XP avoiding programming of features until they are actually
needed, a flat management structure, simplicity and clarity in
code, expecting changes in the customer's requirements as
time passes and the problem is better understood, and
frequent communication with the customer and among
programmers.

Software development process that relies on the repetition of a


very short development cycle: first the developer writes
Automated Test Case that defines a desired improvement or
TDD
new function, then produces the minimum amount of code to
pass that test, and finally refactors the new code to acceptable
standards.

Emerged from TDD. The idea is provide software development


BDD and management teams with shared tools and a shared
process to collaborate on software development

Kanban is a method for managing knowledge work with an


emphasis on just-in-time delivery while not overloading the
team members. In this approach, the process, from definition
of a task to its delivery to the customer, is displayed for
Kanban
participants to see. Team members pull work from a queue.
Kanban can mean a visual process-management system that
tells what to produce, when to produce it, and how much to
produce

Magic Keywords
Widespread programming and execution model that allows
Multithreading
multiple threads to exist within the context of a single process

Several computations are executing simultaneously, and


Concurrency
potentially interacting with each other.

Cloud computing, also known as on-demand computing, is a


kind of internet-based computing, where shared resources and
Cloud computing information are provided to computers and other devices on-
demand. It is a model for enabling ubiquitous, on-demand
access to a shared pool of configurable computing resources.

Software system in which components located on networked


computers communicate and coordinate their actions by
Distributed system passing messages. Three significant characteristics of
distributed systems are: concurrency of components, lack of a
global clock, and independent failure of components

Processes and mechanisms by which digital equipment,


Security information and services are protected from unintended or
unauthorized access, change or destruction

Cache is a component that stores data so future requests for


Caching
that data can be served faster

Ability of a system, network to handle a growing amount of


work in a capable manner or its ability to be enlarged to
Scalability accommodate that growth.The capability of a system to
increase its total output under an increased load when
resources (typically hardware) are added.

Guarantee that every request receives a response about


Availability
whether it succeeded or failed

Performance Performance tuning is the improvement of system


optimization performance.

Failover is a backup operational mode in which the functions of


a system component (processor, server, network, or database)
Failover
are assumed by secondary system components when the
primary component becomes unavailable.

Grouping a set of objects in such a way that objects in the


Clustering
same group (called a cluster)

Computer or network system components that are installed to


back up primary resources in case they fail. Redundant data
Redundant
can protect a storage array against data loss in the event of a
hard disk failure.

Robust Ability of a computer system to cope with errors during


execution

Restructuring existing computer code without changing its


external behavior. Code refactoring may also resolve hidden,
Refactoring dormant, or undiscovered computer bugs or vulnerabilities in
the system by simplifying the underlying logic and eliminating
unnecessary levels of complexity.

Tuning Improvement of system performance.

Process of planning and implementing products and services


so that they can easily be adapted to specific local languages
Internationalization
and cultures. Internationalisation - an adaptation of the
(i18n)
product for potential use virtually anywhere. Reduction of
«i18n».

Addition of special features for use in a particular region.


Localization (l10n) «L10n», the number 10 - the number of letters between «L»
and «n».

Web accessibility means that people with disabilities can use


Accessibility (a11y)
the Web

Asynchronous is a form of input/output processing that permits


Asynchronous other processing to continue before the transmission has
(Async) requests finished. Asynchronous is used to improve throughput, latency,
and/or responsiveness.

Providing full-duplex communication channels over a single


TCP connection. Web Socket protocol makes more interaction
Web sockets
between a browser and a website possible, facilitating live
content and the creation of real-time games.

You might also like