Back-end technologies
PHP 5.*
PHP frameworks Symfony (2), Zend Framework (2), CakePHP, Yii, Laravel, CodeIgniter
CMS (content
management system) Joomla, Drupal, Wordpress, Magento (for e-commerce)
LAMP Linux + Apache + MySQL + PHP
Twig (templating), PHPUnit (testing), Doctrine (ORM), PHPStorm (IDE),
PHP keywords 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
connected with HTML,
CSS, JS) ASP.NET Web API (2), ASP.NET MVC, ASP.NET Web Forms (old school)
WPF - graphical subsystem for rendering user interfaces, WCF - tool to
WPF, WCF 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, OpenCV (for
C++ frameworks imaging)
Scala
Scala frameworks Akka, Cats, Lift, Play, Scalaz, Slick, Shapeless, Spray
Front-end technologies
JavaScript
JavaScript frameworks jQuery, extJS, Angular, React, Ember.js, Backbone, Knockout.js, ...
JavaScript Back-End
frameworks Node.js, Sails, Express, Grunt/Gulp (build tools for Node.js)
Node.js-based build tools Grunt, Gulp, Brocolli, Webpack
JavaScript testing tools Jasmine, Karma, Mocha
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
Approach for optimal viewing and interaction across a wide range of
Responsive web design devices (from monitor to mobile/tablets)
Mobile development
iOS Objective C, Swift
iOS frameworks CoreData (DB in iOS), Cocoa, Cocoa Touch, UIKit, CoreLocation,
CoreFoundation, CoreImage, CoreGraphics
Cocoa Pods (dependency manager), Flurry (for analytics), TestFlight (for
iOS tools installation and testing iOS apps), HockeyApp (platform for apps)
Android
Android SDK, Android NDK, Android IDE, Gradle (build tool), AndEngine,
Android keywords Robotium (testing) + a lot of Java keywords
Cross-platform Mobile jQuery Mobile, PhoneGap, Sencha Touch, Dojo Mobile, Titanium, Xamarin
(mostly JavaScript) (C#)
Testing (Quality
Assurance)
Functional, Regression Selenium (browser automation), WebDriver, SoapUI (for API testing),
testing tools Watir, Watin, QTP, Cucumber
Load, Stress and
Performance testing toolsJMeter, NeoLoad, LoadRunner, LoadUI, Siege, Gatling,
Load, stress, performance, regressional, functional, security, cross-browser,
Types of testing black-box, etc
Databases (DB)
Programming languare for managing data held in a relational database
SQL management system (RDBMS)
MySQL, Oracle, Access, MS SQL Server (mostly for Microsoft stack),
Relational DB PostgreSQL, SQLite
NoSQL Cassandra, MongoDB, Berkeley DB, Redis, Riak, CouchDB, DynamoDB
Object-related mapping Programming technique that connects databases with object-oriented
(ORM) principles)
Stored procedures, triggers, replication, performance optimization,
Magic keywords for DBA clustering, back-up, deadlocks, tuning, configuration
Programming paradigms
Programming paradigm based on the concept of "objects" (which are data
OOP (object-oriented structures that contain data, in the form of fields) often known as
programming) attributes; and code (in the form of procedures) often known as methods
Languages with OO
features C++, C#, Java, JavaScript, Objective C, Perl (v5), PHP5, Python, Ruby, Scala,
Style of building the structure and elements of computer programs, that
treats computation as the evaluation of mathematical functions and avoids
Functional programming 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 than compile) and
automate the execution of tasks that could alternatively be executed one-
Scripting language 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 and
design) interactions between classes or objects
Formalized best practices that the developer can use to solve common
Design Patterns problems when designing an application
Software architectural pattern for implementing user interfaces. An easy
MVC (model view way to understand MVC: the model is the data, the view is the window on
controller) the screen, and the controller is the glue between the two
Observer, Iterator, Strategy, Factory, Singleton, Composite, Facade, Proxy,
Design Patterns examples etc
SOA (Service-Oriented Architectural pattern in which application components provide services to
Architecture) other components via a communications protocol, typically over a network
UML (Unified Modeling
Language) Way to visualize the design of a software (in diagrams)
REST - software architecture style with guidelines and best practices for
Webservices creating scalable web services, SOAP, JSON-RPC, XML-RPC
Markup (formatting and XML, XSLT, xPath, XMPP (for messaging)
processing of text)
Connector (bridge) for websites/mobile apps with your software -
API Facebook API, Google API, Twitter API, etc
Tools
Memcached (for caching), Nginx (web server for high-load), Varnish, Squid
High-load tools (reverse proxies), haproxy (load balancer), CDN
Big Data tools Hadoop, Hive, Pig, Apache HBase, Cassandra, MapReduce (method), Spark
Continious Integration Merging all developer working copies with a shared mainline several times
(CI) a day.
Jenkins, Teamcity, TFS (mainly C#), CruiseControl (C#), Bamboo, Hudson,
CI tools Travis
Continious Deployment Updating а server with automated schedule. These updates include code
(CD) revision, auto/unit test running
Bug/Issue Tracking Tracking bugs, reports. Issue tracking - software for project management,
system tasks in team, etc
Bug/Issue Tracking tools Jira, Mantis, Confluence, RedMine, YouTrack, Trello, BaseCamp
Version Control System
(VCS) Team of developers may change the same files
VCS tools Git, Mercurial, SVN, CVS, Perforce
VCS services Github, Bitbucket, Gitlab
Visual Studio (C#), Eclipse, NetBeans, Aptana, xCode (iOS), WebStorm,
IDE (editors for code) 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 method acknowledges the
interdependence of software development, quality assurance (QA), and IT
DevOps (Development + operations, and aims to help an organization rapidly produce software
Operations) 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 platforms, operating
Virtualization systems, storage devices, and computer network resources.
Virtualization tools VMware, KVM, Xen, VirtualBox , Vagrant
Systems engineering process for establishing and maintaining consistency
Configuration of a product's performance, functional and physical attributes with its
Management requirements, design and operational information throughout its life.
Puppet / MCollective, Chef, Ansible, CFEngine, SaltStack, RANCID, Ubuntu
CM tools Juju
Monitoring tools New Relic, Nagios, Icinga, Graphite, Ganglia, Cacti, PagerDuty, Sensu
TCP/IP (transfering data in computers and internet), HTTP (internet
Network protocols protocol), HTTP/2, WebSockets
Web servers Apache, Tomcat (mainly for Java), IIS (mainly for C#), jBoss (Java)
Development
Methodologies
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
Scrum manner.
XP 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, 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 new function, then produces the
minimum amount of code to pass that test, and finally refactors the new
TDD code to acceptable standards.
Emerged from TDD. The idea is provide software development and
management teams with shared tools and a shared process to collaborate
BDD 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 participants to see. Team members pull work
from a queue. Kanban can mean a visual process-management system that
Kanban tells what to produce, when to produce it, and how much to produce
Magic Keywords
Widespread programming and execution model that allows multiple
Multithreading threads to exist within the context of a single process
Several computations are executing simultaneously, and potentially
Concurrency interacting with each other.
Cloud computing, also known as on-demand computing, is a kind of
internet-based computing, where shared resources and 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
Cloud computing computing resources.
Software system in which components located on networked computers
communicate and coordinate their actions by passing messages. Three
significant characteristics of distributed systems are: concurrency of
Distributed system components, lack of a global clock, and independent failure of components
Processes and mechanisms by which digital equipment, information and
services are protected from unintended or unauthorized access, change or
Security destruction
Cache is a component that stores data so future requests for that data can
Caching 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 accommodate that
growth.The capability of a system to increase its total output under an
Scalability increased load when resources (typically hardware) are added.
Guarantee that every request receives a response about whether it
Availability succeeded or failed
Performance
optimization Performance tuning is the improvement of system performance.
Failover is a backup operational mode in which the functions of a system
component (processor, server, network, or database) are assumed by
secondary system components when the primary component becomes
Failover unavailable.
Grouping a set of objects in such a way that objects in the same group
Clustering (called a cluster)
Computer or network system components that are installed to back up
primary resources in case they fail. Redundant data can protect a storage
Redundant 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, dormant, or
undiscovered computer bugs or vulnerabilities in the system by simplifying
Refactoring 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 and cultures.
Internationalization Internationalisation - an adaptation of the product for potential use
(i18n) virtually anywhere. Reduction of «i18n».
Addition of special features for use in a particular region. «L10n», the
Localization (l10n) number 10 - the number of letters between «L» and «n».
Accessibility (a11y) Web accessibility means that people with disabilities can use the Web
Asynchronous is a form of input/output processing that permits other
Asynchronous (Async) processing to continue before the transmission has finished. Asynchronous
requests is used to improve throughput, latency, and/or responsiveness.
Web sockets Providing full-duplex communication channels over a single TCP
connection. Web Socket protocol makes more interaction between a
browser and a website possible, facilitating live content and the creation of
real-time games.