Programmer’s cheat sheet – paradigms, design, testing

This article contains a summary of what an IT professional should know: programming paradigms, design patterns, testing, development technologies, and much more.

Essentials for an IT specialist

  • Computer systems architecture
  • Algorithmization and data structures
  • Mathematics (algebra / geometry): mathematical analysis, probability theory and mathematical statistics, discrete mathematics, number theory, linear algebra, numerical methods, etc.
  • Software development technologies
  • Methodologies: Waterfall, Scrum, MSF, RUP, Agile, Kanban, XP, TDD, BDD
  • Programming paradigms
  • Design patterns (patterns)
  • Information systems security
  • Software Testing Techniques
  • Basics of ergonomics (usability)
  • Used programming language
  • Possibilities of the used development tools
  • Knowledge of the subject area

Programming languages

  • Object oriented: C #, C ++, Java
  • Markup languages: HTML, CSS
  • Web programming: JavaScript, PHP, Python
  • Query language: SQL

Frontend development

  • Methodologies (SuitCSS, BEM, OOCSS, SMACSS, Sestematic CSS)
  • Html
  • CSS (Responsive, SVG)
  • Dive Deep CSS3 (Flexbox, Rotate, Scale, Grids, Skew, Gradients, Transform, Transitions)
  • JavaScript (ES6, TypeScript, Flow)
  • Understanding client technologies
  • HTML frameworks (Bootstrap, Foundation, Semantic UI, Uikit, Materialize CSS)
  • CSS preprocessors (LESS, SASS, Styles, PostCSS)
  • Frameworks (Angular.js, Backbone.js etc)
  • Libraries (React, Vue, jQuery etc)
  • Understanding UX and UI
  • Responsive / responsive layout from graphic layouts
  • Cross-browser and cross-platform layout and testing
  • IDE or editor (Atom, NotePad ++, NetBeans etc)
  • Package management (nmp, yorn)
  • Version control (Git, GitHub, CVS etc)
  • DOM, Ajax, SVG objects
  • HTML5 API (canvas, geolocation, video etc)
  • Knowledge of WebGL
  • Working with web fonts
  • Ability to use graphic editors (Photoshop etc)
  • Experience with builders (Gulp, Webpack, Grunt, Bower etc)
  • Experience with web formats (JSON, JSONP, XML)
  • Testing tools (Jest, Mocha, Jasmine, Enzyme)

Backend development

  • Understanding Internet, Ethernet, DNS, OSI, TCP, IP, Socket
  • PHP (OOP, MVC / HMVC)
  • DataBase (MySQL, Postgresql, MongoDB, NoSQL etc)
  • Understanding server technology
  • PHP frameworks (Codeigniter, Yii, Laravel, Symphony etc)
  • CMS (WordPress, Drupal, PrestaShop, Magento, InstantCMS etc)
  • Unix / Linux, Windows
  • Nginx and Apache
  • CGI / FastCGI
  • ORM (Object Relational Mapping): Doctrine / Propel
  • WebSockets
  • IDE or editors (Atom, NotePad ++, NetBeans, Eclipse, PhpDesigner etc)
  • Version control (Git, GitHub, CVS etc)
  • Knowledge of Composer – package manager
  • Testing the program code
  • Knowledge of security issues (XSS, CSRF, SQL, Injection)