Памятка рекрутера

Памятка рекрутера

Всем привет. Online.

ТИПЫ КОМПАНИЙ 
Настоятельно рекомендуем посетить https://glossarytech.com
Очень подробно и удобно рассказывает о технологиях, языках и т.д.  К примеру, вы хотите понять где frontend или Backend - этот сайт бесплатно поможет вам разобраться.

IT компании делятся на 2 категории:

  1. Продуктовая компания – создают свой продукт, модернизируют, тестируют, продают.

Плюсы: 

  • видеть процесс создания продукта, тестирование, релиз.

  • карьерный рост от junior до senior и выше.

  • крупные долгосрочные проекты

  • получение % от продаж продукта.

  • официальное трудоустройство.

Минусы: 

  • средняя зп на рынке

  • не полный соц. пакет.

  1. Аутсорсинговая компания – работают на клиента, проектная работа, исходят из потребностей заказчика.

Плюсы: 

  • Высокая зп, бонусы.

  • полный соц. пакет (стоматолог, посещение бассейна, тренажерный зал, плюшки).

Минусы: 

  • проектная работа, работа по срокам

  • нет карьерного роста

  • Встречается бюрократия (сложно достучаться до вышестоящего менеджера)

«Start-up» - идея которая нашла инвестора или иностранная компания, которая открывает филиал на Украине. Главный вопрос, кто инвестирует?

 

ТЕХНОЛОГИИ РАЗРАБОТКИ

 


 

В разработке существуют 3 основных вида приложений:

  1. Desktop

  2. Mobile

  3. Web

Как отдельный подпункт выделим базы данных.

 

    1.    Desktop -  (от англ. desktop - рабочий стол) - Desktop-приложения запускаются в виде обыкновенных программ на устройстве пользователя, которым может быть компьютер, коммуникатор или смартфон. 

Операционные системы:

  • Windows (для данной ОС приложения пишутся на .net, C#, C++)

  • Linux (ядро – Unix.Если у кандидата в скилах есть Unix, то он точно знает Linux, но если наоборот, то не обязательно) 

  • MacOS (XNU (акроним англ. X is Not Unix[1])) (objective C)

 

    2.    Web приложение  - это онлайн-приложение, т.е. всё то, что пользователь видит в окне веб-браузера (веб-страницы) сгенерированные веб-сервером или просто отданные им из файловой системы. 

    Веб-приложения состоят из двух частей: frontend ("клиентская часть") - это то, что находится со стороны пользователя и backend ("серверная часть") - это то, что реализует всю логику, которую пользователь задаёт через frontend.

 

Рассмотрим более подробно технологии, которые относятся к Back-end:

  1. 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.

  1. Ruby:

Ruby Frameworks: Rails/Ruby on Rails, Sinatra, Padrino, JRuby.

Ruby Testing Tools:RSpec, Capybara, Watir, Cucumber.

Ruby Deployment: Passenger, Capistrano.

  1. 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.

  1. C# (.NET) Mircosoft

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, 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.

  1. Python

Python Frameworks:Django, Flask, Pyramid, Pylons, SQLAlchemy, web2py, Kivy.

  1. С++

C++ Frameworks: STL, Boost, QT (for user interfaces), vxWidgets, Loki, POCO,OpenCV (for imaging).

  1. Scala

ScalaFrameworks:Akka, Cats, Lift, Play, Scalaz, Slick, Shapeless, Spray.

 

Теперь перейдем к стеку технологий Front-end:

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.

ResponsiveWebDesign:подход для оптимального просмотра и взаимодействия в широком спектре устройств (от монитора к мобильным / таблетки).

 

    3. Mobile приложение - приложения для небольших портативных устройств таких как КПК, смартфоны или мобильные телефоны.

    Платформы:

  • Android (Java)   UNIX-подобные операционные системы

  • IOS (Objective C)

  • BlackBarry (Java, C++)

  • Windows (C#) Windows

 

Наиболее распространенные направления mobile разработки:

  1. iOS

iOS:Objective C, Swift.

iOS Frameworks: CoreData (DB in iOS), Cocoa, Cocoa Touch, Cocoa Pods, UIKit, CoreLocation, CoreFoundation, CoreImage, CoreGraphics.

iOS Tools: Flurry (for analytics), TestFlight (for installation and testing iOS apps), HockeyApp (platform for apps).

  1. Android

Android Keywords: Android SDK, Android NDK, Android IDE, Gradle (build tool), AndEngine, Robotium (testing) + a lot of Java keywords.

  1. Cross-platform Mobile (JavaScript)

jQuery Mobile, PhoneGap, Sencha Touch, Dojo Mobile,Titanium, Xamarin.

База данных – это информационная модель, позволяющая упорядоченно хранить данные о группе объектов, обладающих одинаковым набором свойств. 

Databases (основныеБД):

SQL:Languare for request to relational DataBases (RDBMS).

Relational DB: MySQL, Oracle, Access, MS SQL Server (mostly for Microsoft stack), PostgreSQL, SQLite.

NoSQL:MongoDB, Berkeley DB, Redis, Riak, CouchDB.

Object-Related Mapping (ORM:)Programming technique that connects databases with objectorientedprinciples).

Magic keywords for DBA: Stored procedures, triggers, replication, performanceoptimization, clustering, back-up, deadlocks, tuning, configuration.


 

МЕТОДОЛОГИИ РАЗРАБОТКИ

Методология — это система принципов, а также совокупность идей, понятий, методов, способов и средств, определяющих стиль разработки программного обеспечения.

Конкретные вещи реализуется через выбранную методологию. Именно она определяет, как будет выполняться разработка. Выбор конкретной методологии зависит от размера команды, от специфики и сложности проекта, от стабильности и зрелости процессов в компании и от личных качеств сотрудников.

Существует несколько самых распространенных сегодня методологий разработки ПО 

Первым станет Agile - семейство процессов разработки, объединяющее принципы всех методологий, не подразумевает пошаговых руководств и конкретных рекомендаций, а лишь очерчивает общие принципы, которые используют методологии. Они во многом легли в основу двух наиболее распространенных из них, описанных ниже – scrum и kanban.

SCRUM — методология, предназначенная для небольших команд (до 10 человек). Весь проект делится на итерации (спринты) продолжительностью 30 дней каждый. Выбирается список функций системы, которые планируется реализовать в течение следующего спринта. Самые важные условия — неизменность выбранных функций во время выполнения одной итерации и строгое соблюдение сроков выпуска очередного релиза, даже если к его выпуску не удастся реализовать весь запланированный функционал. Руководитель разработки проводит ежедневные 20 минутные совещания, которые так и называют — scrum, результатом которых является определение функции системы, реализованных за предыдущий день, возникшие сложности и план на следующий день. 

KANBAN – гибкая методология разработки программного обеспечения, ориентированная на задачи. 
Основные правила:

  • визуализация разработки;

  • разделение работы на задачи;

  • использование отметок о положение задачи в разработке;

  • ограничение работ, выполняющихся одновременно, на каждом этапе разработки;

  • измерение времени цикла (среднее время на выполнение одной задачи) и оптимизация процесса.

Преимущества KANBAN:

  • уменьшение числа параллельно выполняемых задач значительно уменьшает время выполнения каждой отдельной задачи;

  • быстрое выявление проблемных задач;

  • вычисление времени на выполнение усредненной задачи.

WATERFALL – (Каскадная модель) — модель процесса разработки программного обеспечения, в которой процесс разработки выглядит как поток, последовательно проходящий фазы анализа требований, проектирования, реализации, тестирования, интеграции и поддержки. Используется значительно реже, чем Scrum, поскольку имеет ряд серьезных недостатков: недостаточная гибкость и отсутствие возможности параллельно работать над одним участком проекта (Переход от одной фазы к другой происходит только после полного и успешного завершения предыдущей).