IT сфера:
1. Продуктовые компании
2. Аутсорсинговые компании
3. DIGITAL-АГЕНТСТВА/цифровое агентство
4. Консалтинговые компании
Это компании, которые занимаются внедрением уже готового ПО.
Подбор персонала
Штатный рекрутер
Плюсы: стабильность (ставка), расширение круга общения, нормированный
график, непрерывное обучение, перспективы карьерного роста
Минусы: нет возможности самостоятельно распределять рабочее время,
контроль, умение приспосабливаться к новым условиям.
Рекрутер в агентстве
Плюсы: стабильность, разнообразие вакансий, интересные проекты,
нормированный график.
Минусы: узкий круг общения, конкуренция
Фриланс
Плюсы: не нужен опыт работы, тайм-менеджмент, отсутствие контроля
(микроменеджмента), экономия финансовых средств, более быстрое закрытие
вакансий,
Минусы: нет стабильности, монотонность, ненормированный рабочий день и
загрузка.
Этапы рекрутинга
7. Собеседование (интервью)
8. Получение фидбэка от кандидата и заказчика
9. Сообщение результата
10. Сопровождение в процессе принятия оффера
Управление персоналом
Функции в HRM:
1. Подбор персонала
2. Мотивация и адаптация персонала
3. Психологические знания
4. Обучение и развитие персонала
5. Организация мероприятий
6. Кадровое делопроизводство
Лекция 2
Карьера в IT. Виды айтишников, роли, задачи, функции
1. Виды айтишников
2. Карьерный рост в IT
1. Заказчик/Owner
Виды менеджеров
Product Manager формирует требования к продукту, который позволит клиенту
достичь целей.
Технический лидер
Координация технической команды.
● Ответственный выбор стороннего ПО для проекта;
● Рекомендация по выбору конкретного алгоритма или архитектурного
решения при производстве ПО;
● Определение технических особенностей в процессах производства.
● Создание и распределение технических задач, контроль выполнения;
● Консультация программистов по узкотехническим вопросам;
● Ревью кода;
● Прием решений о публикации новой версии системы (совместно с ПМ);
● Публикация системы в сторах;
● Оценка стоимости разработки (совместно с PM);
6. System Analyst
Системный аналитик
Обеспечение эффективной работы системы для успешного выполнения целей
пользователей.
● Определение ролей пользователей и их потребностей (если этого не
делает BA);
● Описание предметной области (в т.ч. основных объектов, их атрибутов,
связей между ними), бизнес процессов, потоков данных;
● Управление требованиями к ПО;
● Разработка прототипов и UX (совместно с дизайнером);
● Проведение интервью с заказчиками и конечными пользователями;
● Формирование стека задач (бэклога) (если этого не делает PM);
● Консультация команды разработки;
7. Data Developer
Аналитик данных
Выявление скрытых закономерностей в данных для оптимизации бизнес
процессов.
● Фиксация бизнес показателей;
● Организация сбора данных и мониторинга показателей;
● Построение моделей;
● Проверка гипотез по улучшению бизнес показателей;
● Составление отчетов.
Data architect.
One can be a part of a data science or data engineering team. The data architect’s
role is to project infrastructure that data engineers will develop.
Data engineer.
This is a specific type of software engineer who develops interfaces and the
ecosystem to gain access to the information.
Data analyst.
This team member is the one who defines data collection methods, data models,
types, and outlines the transformation process.
Database/Warehouse developer.
Data as any other information has to be stored somewhere. It can be a usual SQL
database, or a special type of storage, Data Warehouse. The DB/warehouse
developer is responsible for the modeling, development, and maintenance of data
storages.
DBA or Database Administrator.
This is a person in charge of database management if there are multiple databases,
or the structure of a DB/warehouse, as complex as rocket science.
Data scientists.
Projects dealing with machine learning also include a data science specialist or even
a dedicated department.
Business intelligence developer.
This is a software engineer that focuses on developing BI interfaces.
ETL developer is a software engineer that covers the Extract, Transform, and Load
stage of data processing by developing/managing the corresponding infrastructure.
8. System Architect
Системный архитектор
Проектирование архитектуры системы, удовлетворяющей требованиям (как к
функциям системы, так и нагрузкам на систему)
● Разработка архитектуры системы и выбор стека технологий;
● Контроль за соблюдением рекомендаций по архитектуре;
● Прием сложных технических решений;
● Консультация команды разработки;
9. Programmer
Разработка программной системы в соответствии с поставленными
требованиями.
● Разработка программной системы (написание кода, разработка
структуры базы данных и т.д.);
● Принятие решений о способе разработки;
● Контроль качества разработки и проведение ревью кода;
● Тестирование кода;
● Написание технической документации;
● Выпуск новой версии продукта.
10. QA
Минимизация ошибок в работе системы.
● Тестирование требований;
● Написание тест кейсов и тест планов;
● Тестирование системы (регрессионное, нагрузочное, функциональное и
т.д.);
● Разработка авто-тестов;
● Поиск багов на основе отзывов от пользователей.
QC Engineer
QC Engineer — проверяет качество продукта и отвечают за то, чтоб
разработанный продукт соответствовал требованиям заказчика.
Как раз они работают следуя процессу тестирования и проверяют качество
продукта.
Test manager
Тест менеджер (Test Manager) — отвечает за выполнение задач по
тестированию и контролирует процесс. Разрабатывает тест-планы, может
помогать со стратегией тестирования. Его главная обязанность в процессе
тестирования — мониторинг и контроль.
QA Engineer
QA Engineer — обеспечивает качество продукта. Они занимаются описанием и
анализом процессов разработки, инструментами, аудитами процессов и
многими другими вещами, которые практически никогда напрямую не связаны с
тестированием
Тестирование и Обеспечение качества — это разные вещи!
Quality Assurance (QA)
занимается проверкой результата
не несёт ответственности за применение результата и по финансовым рискам;
Словарь:
Велосипед - первинный кол
Дерево - вложенность
Костыли - затычки
Пул - буфер
1. Фронт
2. Бэк
3. Интеграции
4. Full-stack
5. Mobile
QA — Quality Assurance, Специалист по качеству
TW — Technical Writer, Технический писатель
BA — Business Analytic, Бизнес аналитик
CIO — Chief Information Officer, Директор по информационным технологиям
CTO — Chief Technology Officer, Технический Директор
CEO — Chief Executive Officer, Директор компании
HRBP Lead - Lead HR Business Partner
ЛЕКЦИЯ 3
Основные понятия в ИТ, языки программирования и породы
программистов
1. Разработка ПО
ПП/ПО/Софт - программа или совокупность программ + документация
- инициация/initiation
- планирование/planning
- выполнения/execution
- закрытие и передача заказчику/closure
- Discovery
Представители компании, бизнесу (ПМ) поддерживают конкретную идею. Они
находят проблему потенциальных покупателей и пытаются найти решение.
- Ingeneering
- Delivery
SDLC
Жизненный цикл разработки ПО (System/Software Development
Life Cycle, SDLC)
процесс, состоящий из конкретных этапов, который начинается в момент
принятия решения о необходимости создания ПО и заканчивается в момент
прекращения поддержки ПО разработчиками.
Применение SDLC позволяет:
● Визуализировать сложный процесс разработки
● Управлять проектом
1. Идея
Этот процесс может быть формальным (например, brainstorming в компании)
или не формальным (например, за барной стойкой с друзьями).
2. Определение требований ВА + РМ + QA
Бизнес-аналитики (BA) прорабатывают полученную информацию,
детализируют ее и преобразовывают в технические требования к системе. Эти
требования называются Software Requirement Specification (SRS).
Кроме SRS на этом этапе:
● Определяются требования к качеству (SQA, Software Quality Attributes)
● Проводится анализ рисков (RA, Risk Analysis)
● Создаются планы валидации и верификации (V&V Plans, Test Plans)
● Определяются критерии приемки ПО (AC, Acceptance Criteria)
● Низкоуровневое проектирование
Выполняется старшими разработчиками, где они определяют функции каждого
модуля архитектуры продукта, который должен быть разработан.
4. Разработка
Разработчики получают требования (SRS), спецификацию по дизайну (DDS) и
создают требуемое ПО.
5. Тестирование
Тестировщики, основываясь на требованиях (SQA, SRS, DDS) и готовом
продукте производят проверку качества ПО (Quality Control).
Если находятся отклонения от требований / ошибки — они оформляются в
виде отчетов о дефектах, исправляются и перепроверяются.
Процесс продолжается до тех пор, пока качество продукта не будет доведено
до приемлемого уровня.
6. Развертывание
После успешного тестирования готовый продукт передается заказчику.
Кроме передачи может производится настройка рабочих окружений, установка,
конфигурация и запуск продукта.
Используется:
Особенности:
● Планирование Спринта;
Первое собрание, которое начинает спринт. Выбранные задачи вносятся в
проект-спринт с дедлайном и исполнителем.
● Обзор Спринта;
Проводится, когда работа по спринту завершена. Это показ заказчику и всем
заинтересованным лицам функционала, который команда создала за спринт.
На этом этапе заказчик высказывает свое мнение, вносит коррективы,
запрашивает дополнительный функционал и т.д.
● Ретроспектива Спринта
Обсуждение проблемы и поиск решения после каждого спринта. Полученный
план изменения внедряете на следующем спринте.
Минусы:
1. Ограниченность в возможностях. Встречаются системы с четко
очерченными задачами. Что касается монстров как WordPress или Joomla! –
здесь все решается путем установки расширений, в результате получаются
сайты с большими возможностями.
2. Более низкая производительность, чем у сайтов, созданных на
Фреймворках, требует больше ресурсов (не имеет значения, при мощном
серверном оборудовании).
3. Избыточные функции. Это издержки универсальных решений, с которыми
остается только смириться.
CMF, если говорить простым языком, — это что-то среднее между CMS и
фреймворком по возможностям. Обычно CMF используют для самых сложных
сайтов из этой категории. Этот подход позволяет избавиться от лишних частей
CMS, которые не нужны конкретному проекту.
Архивный бит: это отдельный бит в файле, который указывает, было ли выполнено
резервное копирование файла
Git: это система контроля версий, которую разработчики используют для управления и
хранения кода в одном месте. Если программист знаете Git, он также можете
использовать GitHub, веб-репозиторий, который позволяет ему управлять файлами,
демонстрировать свои проекты и работать с командами.
Рендеринг - визуализация
Форк — это новая программа на базе какой-то версии исходной программы. Она
может дальше развиваться самостоятельно, без оглядки на исходную программу.
MVP - Model View Presenter, MVVM - Model View View Model (работа отдельно
над одним и тем же разделом приложения, используя один и тот же набор
данных)
Виды компиляций:
- Компиляция в промежуточный код.
Основана на концепции виртуальной машины (VM), которая представляет
собой продвинутый интерпретатор.
- Just-in-time (JIT) компиляция.
JIT-компиляторы используют метод компиляции во время работы программы,
«на лету». Они существенно ускоряют цикл разработки, но программа может
притормаживать и выполняться медленнее. С JIT-компилятором она
запускается медленнее, потому что перед выполнением кода ему нужно
одновременно успеть проанализировать и скомпилировать его.
- Ahead-of-time (AOT) компиляция.
AOT-компиляторы замедляют цикл разработки — промежуток времени, через
который можно выполнить программу после внесения в неё изменений, чтобы
посмотреть результат изменений. Программа работает более предсказуемо,
без перерывов на анализ и компиляцию в рантайме. Метод АОТ не требует
выделения дополнительной памяти и АОТ-компиляция проходит с
минимальной нагрузкой на систему. Процесс компиляции полностью
выполняется перед выполнением программы.
● Visual Studio
С, С++, C#, ASP.NET Core.
Основной средой для разработки, рекомендуемой Microsoft, является Visual
Studio.
Microsoft Visual Studio — линейка продуктов компании Microsoft, включающих
интегрированную среду разработки программного обеспечения и ряд
других инструментальных средств.
Данные продукты позволяют разрабатывать как консольные приложения, так
и приложения с графическим интерфейсом, а также web-сайты, web-
приложения, web-службы как в родном, так и в управляемом кодах для
всех платформ, поддерживаемых Windows.
● Rider/JetBrains
C#+.Net
Кроссплатформенная IDE для .NET-разработчиков, основанная на платформе
IntelliJ и ReSharper. Поддерживает синтаксис ASP.NET Razor, JavaScript,
TypeScript, XAML, XML, HTML, CSS, SCSS, JSON и SQL.
● Eclipse
Поддерживаемые языки: C, C++, Java, PHP, Python.
Eclipse — свободная IDE, отлично подходит в числе прочего и для веб-
разработки.
● WebStorm/JetBrains
JavaScript
Ее часто используют для создания самых современных веб-приложений.
● PyCharm/JetBrains
Python
Эта IDE — прекрасный выбор, если вам нужен бесплатный инструмент и если
вы занимаетесь разработкой бэкенда на Python. Основные особенности:
● облегчение интеграции с Git, Mercurial и SVN
● встроенные отладчики для Javascript, Python и Django
● PHPStorm/JetBrains
Поддерживаемые языки: PHP, JavaScript, HTML, CSS, SASS, LESS и т.д.
PHPStorm многие считают самой лучшей IDE для веб-разработки. Эта IDE
настоятельно рекомендуется разработчикам, работающим с WordPress, Drupal,
Magento.
Основные особенности:
● простая интеграция с фреймворками и CMS, такими как WordPress
● доступно юнит-тестирование на PHP или фреймворках на основе PHP
● IntelliJ IDEA/JetBrains
Java
Она имеет прекрасную поддержку плагинов и языков, применяющихся в веб-
разработке (HTML, CSS, Ruby, Python и т. д.).
● Xcode
Xcode — богатая функционалом IDE для веб-разработки и других целей,
доступная только для macOS. Xcode можно полностью интегрировать с Cocoa
и Cocoa Touch, что позволяет пользователям создавать инструменты
операционной системы.
● NetBeans/Apache
Java, C/C++, PHP, JavaScript, Ruby.
NetBeans — бесплатная IDE с поддержкой многих языков программирования.
NetBeans IDE является платформой для построения десктоп приложений с
функциональным пользовательским интерфейсом, т.к. представляет из себя
фреймворк к Java библиотеке Swing.
● Codeanywhere
JavaScript
Codeanywhere — облачная IDE, позволяющая разработчикам запускать
проекты веб-разработки и сразу же их редактировать. Codeanywhere написана
на JavaScript. Используя эту IDE, вы сможете запускать в ней код, находящийся
на вашей виртуальной машине, через SSH и FTP.
Веб-сервера
Apache Wicket HTTP-сервер, Apache Software Foundation — фреймворк с
открытым исходным кодом для создания веб-приложений. Программа,
которая запускается на сервере. Его задача установить соединение между
сервером и браузером посетителей при доставке файлов туда и обратно
между ними (клиент-серверная структура). Apache – это кроссплатформенное
программное обеспечение, что значит оно хорошо работает как на Unix, так и
на Windows серверах. Использует подход, основанный на использовании
компонентов. Состояние компонентов пользовательского интерфейса
сохраняется, когда пользователь запрашивает новую страницу, и затем
восстанавливается, если запрос повторяется.
У Apache есть модули безопасности, но они не настолько надежны, как
Nginx, кэширования, редактирования URL, аутентификации посредством
пароля и другие.
Apache совместим с разными CMS (Wordpress, Joomla, Drupal), веб-
фреймворками (Django, Laravel и др.) и языками программирования. Это
делает его уверенным решением для всех типов хостинг платформ, таких
как VPS или общий хостинг.
СЛОВАРЬ GIT
Гит-репозиторий — это облачное хранение вашего проекта на сервере
(например, на сервере Гитхаба, но можно и на другом).
Бранч/git branch — это ветка или копия проекта, в которую можно вносить
любые изменения и они не повлияют на основной проект.
смёржить бранчи - создать копию master ветки, сделать правки там, а потом
залить изменения в master
Компилируемые и Интерпретируемые:
Универсальные и специализированные:
Низкоуровневые и Высокоуровневые:
С#
2000 г., Microsoft, Андерс Хейлсберг и Скотт Вилтамут
C# 9.0 .NET 5
IDE: Visual Studio/Eclipse/NetBeans(Apache)/Rider (JetBrains)
(crossplatform)
Особенности С#:
Пакет SDK для .NET — это набор библиотек и средств, с помощью которых
разработчики могут создавать приложения и библиотеки .NET. Он содержит
следующие компоненты, которые используются для сборки и запуска
приложений:
● Интерфейс командной строки .NET.
● Библиотеки .NET и среда выполнения.
● Драйвер dotnet.
Entity Framework
Microsoft, 2008 г.
Как основное средством взаимодействия между приложениями .NET и
реляционными базами данных. Entity Framework — это инструмент,
упрощающий сопоставление объектов в программном обеспечении с
таблицами и столбцами реляционной базы данных.
● Entity Framework (EF) — это ORM-фреймворк с открытым исходным
кодом для ADO.NET, который является частью .NET Framework.
Windows Forms
кроссплатформенный .NET
2014 г.
Платформа .NET Core имеет открытый исходный код на сайте GitHub и была
передана корпорацией Майкрософт в фонд .NET Foundation в 2014 году.
Иными словами, Razor Pages — более вменяемое решение для веба чем MVC,
теперь мы имеем дело с традиционным и логичным понятием «страница» а не
с контролерами и моделями разбросанными по всему проекту.
ADO.NET
ADO.NET (ActiveX Data Object для .NET) — собственная технология доступа к
данным; это набор классов, предоставляющих службы доступа к данным
программистам (SQL Server), которые используют платформу .NET Framework.
ASP.NET
ASP.NET 4.0 последняя версия
Обслуживается средой CLR
Цель: предоставляет коду полный доступ ко всем объектам и содержит все
концепции ООП (создавать пригодные для повторного использования классы,
стандартизировать код с помощью интерфейсов, расширять существующие
классы за счет наследования и объединять полезные функциональные
возможности в распространяемый скомпилированный компонент.)
JRE – Java Runtime Environment, среда исполнения Java. Это набор всего
необходимого чтобы запустить скомпилированную Java-программу.
Окружение состоит из виртуальной машины Java (JVM), библиотеки классов
(Java Class Library).
Редакции Java
Java ME (Java Platform Micro Edition) - это редакция Java для разработки
приложений для микрокомпьютеров. До 6 версии Java эта редакция имела
название J2ME (Java 2 Platform Micro Edition).
Фреймворки Java
Spring
2003 г, Род Джонсон.
Актуальная версия: 5.3.9
Spring - представляет собой набор готовых решений для использования всех
основных Enterpise Java технологий, идеально подходит для создания
enterprise/корпоративных/веб приложений и моделей конфигурации на базе
Java.
Spring фокусируется на нескольких областях функционирования приложений и
предоставляет для них широкий спектр дополнительных функций. Имеет
шаблонную архитектуру.
Особенности:
CSS
Организация W3C, 1996 г. , Håkon Wium Lie
Стабильная версия: CSS 4
Отвечает за оформление страницы. Для создания и детализации
визуального стиля вашего сайта. Такие технологии, как SASS, позволяют
использовать элементы программирования в вашем стиле, а CSS-фреймворки,
такие как Bootstrap 4, Foundation, Tailwind и другие, позволяют быстро
стилизовать веб-сайт.
NodeJS
2009 г. Стабильная версия: 14.8 (16.7) (BACKEND)
С открытым исходным кодом, созданная на основе Google Chrome
JavaScript Engine.
это серверная платформа для работы с JavaScript через движок V8. JavaScript
выполняет действие на стороне клиента, а Node — на сервере. С помощью
Node можно писать полноценные приложения. Node умеет работать с
внешними библиотеками, вызывать команды из кода на JavaScript и
выполнять роль веб-сервера.
Express.js
Express.js - это быстрая и легкая платформа для Node.js, которая применяется
для создания web-приложений различного размера и сложности с
расширениями, которые предоставляют дополнительные функции,
добавляющие ценность.
Входит в стек MEAN (MongoDB, Express, Angular, Node.js), используемым
для создания веб-приложений.
Серверный компонент для отображения сайтов React.js. В него встроено
множество полезных возможностей, в частности, маршрутизация,
оформленные компоненты и многое другое. Серверный рендеринг
означает, что данные будут обновляться автоматически, как это делается на
сервере, но, перед выводом в окне браузера будут проходить этап рендеринга.
Надежный механизм маршрутизации на основе URL-адресов с
использованием методов HTTP
● Поддержка различных плагинов и расширений, улучшающих его
функциональность по умолчанию
● Простая интеграция с базой данных
● Подходит для работы с большими данными,
● Обеспечить высокую производительность и критическую
масштабируемость при потоковой передачи медиа или live stream.
Подходит для создания приложений корпоративного размера.
Nest.js
Самый важный и популярный фреймворк для создания серверных веб-
приложений Node.js. Это не только фреимворк для бэкенда, но и
возможность войти в мир передовых концепции, например таких как
DDD(Domain Driven Design), Event sourcing и микросервисной архитектуре.
Next JS
среда JavaScript для интерфейса , созданная Vercel. Он позволяет
разработчикам создавать как статические, так и динамические веб-сайты
JAMStack и используется транснациональными корпорациями по всему миру.
Ключевая особенность:
● Автоматическая маршрутизация
● Серверный рендеринг
● Он хорошо взаимодействует с другими экосистемами, включая React
framework и Angular.
● Автоматически выбирает страницы
Минусы:
React Native имеет широкий набор инструментов среди которых: CLI, дебаггер,
hot reloader, различные библиотеки компонентов (например, Material UI, Ant
Design), а также множество готовых решений, которые дает сам React.
Фреймворк для создания кроссплатформенных приложений на языке
JavaScript. Он позволяет писать приложения для IOS, Android и даже VR. Его
цель — сделать кроссплатформенные приложения такими же
производительными, как нативные.
React Native позволяет создавать мобильные приложения, используя при этом
только JavaScript с такой же структурой, что и у React. Это дает возможность
составлять многофункциональный мобильный UI с применением
декларативных компонентов.
Angular
Angular — это переписаный AngularJS
Последняя стабильная версия: Angular 10, 2020 г. Google
VueJS
2013 г. VueJS 2/3
JavaScript-фреймворк с открытым исходным кодом для создания креативного
интерфейса. Разрабатывать на VueJS веб-приложения намного проще, чем
на React.
Vue.js также довольно прост в освоении: все что нужно, это JavaScript и HTML.
Другой сильной стороной Vue.js является его интерфейс командной строки
(CLI). Это базовый инструмент, который ускоряет разработку и содержит
различные функции, которые упрощают разработку.
NB! Используется с Laravel (PHP), Vue.js даст преимущество в построении
сложных интерактивных, реактивных форм, приложений-одностраничников.
Ключевая особенность:
Плюсы
● Легкий и простой в использовании
● Меньший шаблон
● Очень легко учиться
● Поставляется со встроенным реактивным магазином
Минусы
● Не очень устоявшийся фреймворк
● Постоянная потребность в изучении и обновлении информации
● На данный момент в отрасли не так много инструментов Svelte
● Меньшая экосистема
Ionic
2013 г. Версия: 5.6.12
Aurelia, Роб Айзенберг, 2016 — это интерфейсная среда с открытым исходным кодом.
Aurelia состоит из функционально-ориентированных модулей, таких как плагины,
маршрутизация, тестирование, внедрение зависимостей и многое другое. Можно
использовать среду Aurelia JS для разработки веб-приложений, приложений для
мобильных устройств и компьютеров. Модульность также позволяет создавать
приложения разных размеров. Aurelia поддерживает как Babel, так и TypeScript. Он
также полностью совместим с будущими версиями JavaScript.
jQuery
● CSS манипуляции
● HTML / DOM manipulation
● AJAX
● Утилиты
● Методы событий HTML
● Эффекты и анимация
Есть две функциональные обычно выполняемые JQuery:
1. Статические служебные функции
2. Методы объекта
PHP
1994 г., Rasmus Lerdorf, The PHP Development Team, Zend Technologies
Стабильная версия: 8.0.9
IDE: PHPStorm/Eclipse/NetBeans/VStudio
PhpStorm runs on the Java Virtual Machine (JVM)
Очень популярный скриптовый серверный веб-язык. Особенно популярен
из-за популярности WordPress, Joomla, Drupal, который работает на PHP.
Laravel
2011 г. Тейлор Отвел. Актуальная версия: 8.3.5
● поддерживает Ajax;
● легко расширяемый фреймворк;
● есть встроенный обработчик ошибок;
● подходит для разработки веб-сервисов, построенных с учётом REST
(RESTful web-service).
Zend Framework
Свободный объектно-ориентированный PHP фреймворк для разработки
веб-приложений, разработанный и поддерживаемый компанией Zend. Данный
фреймворк как правило больше всего используют при разработке крупных
коммерческих проектов. С открытым исходным кодом и основан на
программной архитектуре MVC.
Особенности:
- В качестве менеджера зависимостей пакетов Zend Framework
использует Composer.
- Поддержка множества БД.
- Гибкий механизм кэширования по памяти или файловой системы.
- Несвязанные компоненты для повторного использования в проектах.
- Не подходит для быстрой разработки проектов.
CodeIgniter (2.1.3) - популярный PHP фреймворк с открытым исходным кодом, позволяющий создавать многофункциональные и безопасные веб-приложения с MVC архитектурой. Хорошая документация, небольшой вес.
Phalcon PHP - отличается открытым кодом (языки программирования C, C++, PHP), поддержкой практически всех современных ОС. Производительность этого фреймворка находится на высоком уровне.
CakePHP (framework) - это программный каркас для создания веб-приложений, написанный на языке PHP и построенный на принципах открытого ПО. CakePHP реализует паттерн «Модель-Вид-Контроллер» (MVC).
Изначально создавался как клон популярного Ruby on Rails , и многие идеи были заимствованы именно оттуда.
Недостатки:
Django
Свободный фреймворк для веб-приложений на языке Python, использующий
шаблон проектирования MVC. Проект поддерживается организацией Django
Software Foundation.
Один из основных принципов фреймворка — DRY.
Преимущества:
Недостатки:
- Монолитность
Некоторые модули Django, например, ORM или формы, сложно заменить.
Разработчикам приходится тратить много времени, чтобы изменить
внутреннюю структуру фреймворка и использовать альтернативные
инструменты.
Flask
Относится к категории так называемых микрофреймворков —
минималистичных каркасов веб-приложений, сознательно предоставляющих
лишь самые базовые возможности. Для работы со статическим контентом.
2. Типизированность
3. Встроенная документация (Swagger)
4. Применение websockets
Dart
2011 г. Текущая версия - 2.13.1, Google, Марк Миллер
IDE: Intelij IDEA/Android Studio
Плюсы:
● Кроссплатформенный: возможность собирать версии приложения
под разные платформы из одного исходного кода;
● Быстрая разработка и вывод продукта на рынок.
● достаточно быстрый, за счет компиляции
● виджетный (компонентный) подход
● открытый исходный код: всегда можно разобраться, как это работает,
или почему не работает так, как хочется
● продукт, который развивает и продвигает Google и большое Open-source
community
● Hot-reload
Минусы:
● большой размер файла
● мало разработчиков/дорогие лиды/сеньоры
● относительно мало технической информации – stackoverflow и т.п.
● пока мало готовых (сложных) компонентов – стандартные/системные тут
не используются
● достаточно динамичный релизный цикл
React Native/Flutter
Родной внешний вид Меньше из-за наличия сторонних Улучшенный внешний вид из-
библиотек и API за отсутствия сторонних
библиотек
Kotlin
IDE: IntelliJ IDEA/Eclipse
Kotlin — это относительно молодой язык от российской компании JetBrains.
2011 г. Kotlin получил официальную поддержку для разработки Android-
приложений.
Как и Java, C и C++, Kotlin — это статически типизированный язык. Он
поддерживает как объектно-ориентированное, так и процедурное
программирование.
Вот основные возможности и преимущества Kotlin:
Scala
2003 г. Мартин Одерски
Стабильная версия: Scala 3, 2021 г.
Характеристики Ruby:
● высокоуровневый — удобный для разработчиков, с сильной
абстракцией.
● динамичный — типы данных определяются на этапе выполнения
программы, это увеличивает скорость разработки;
● интерпретируемый — код на Ruby обрабатывается интерпретатором в
момент выполнения без предварительной компиляции, это обеспечивает
независимость от платформ и уменьшает размер исполняемых
программ.
● Файл серверные.
● Клиент-серверные;
● Встраиваемые.
Определение ACID:
Предотвращает повреждение данных и сохраняет их целостность на
транзакционном уровне.
● Хранилище документов
● Базы данных с ключами-значениями
● Ширококолоночные хранилища
● Графовые базы данных
SQL NoSQL
MySQL
1994 г., MySQL AB, Oracle (2010 г.)
MySQL — это популярная СУБД с моделью «клиент-сервер».
Кроссплатформенный. Бесплатный продукт с открытым исходным кодом.
PostgreSQL
1986 г. Майкл Стоунбрейкер, Global Group
В 1994 г. Эндрю Ю (Andrew Yu) и Джолли Чен (Jolly Chen) модифицировали
POSTGRES, добавив в него интерпретатор языка SQL.В 1996 г. проект был
переименован в PostgreSQL.
Стабильная версия: 13.4
Postgres Pro
Российская коммерческая СУБД, разработанная компанией Postgres Professional с
использованием свободно-распространяемой СУБД PostgreSQL, значительно
переработанная для соответствия требованиям корпоративных заказчиков.
СУБД Postgres Pro Standard придумана для того, чтобы доставлять наши разработки
пользователям быстрее, чем мы можем это сделать через PostgreSQL. Те фичи,
которые еще не вошли в PostgreSQL, но находятся на твердом пути туда, мы
включаем в Postgres Pro Standard. Также в Postgres Pro Standard входят некоторые
расширения, которые востребованы нашими клиентами, но отсутствуют в обычной
поставке PostgreSQL.
Oracle
2021: Выпуск СУБД Oracle Database 21c
Oracle Database — это объектно-реляционная СУБД (система управления
базами данных), созданная компанией Oracle. ACID
Oracle очень мощеная база данных, позволяющая писать любые сложные
системы, как в банковской, ERP, страховой, финансовой сферах.
Экземпляр — это мост к базе данных, а сама БД – это остров. Когда экземпляр
запущен, мост работает, а данные способны попадать в базу данных Oracle и
покидать её.
MongoDB
● Кроссплатформенность.
СУБД разработана на языке программирования С++, поэтому с легкостью
интегрируется под любую операционную систему (Windows, Linux, MacOS и
др.).
● Формат данных. MongoDB использует собственный формат хранения
информации — Binary JavaScript Object Notation (BSON), который
построен на основе языка JavaScript.
BSON - это двоичная кодировка JSON-подобных документов, которые
MongoDB использует при хранении документов в коллекциях. Он добавляет
поддержку типов данных, таких как Date и двоичные файлы, которые не
поддерживаются в JSON.
● Документ. Если реляционные БД используют строки, то MongoDB —
документы, которые хранят значения и ключи.
● Вместо таблиц MongoDB использует коллекции. Они содержат разные
типы наборов данных
● Репликация.
Система хранения данных в MongoDB представляет набор реплик. В этом
наборе есть основной узел, а также может быть набор вторичных узлов. Все
вторичные узлы сохраняют целостность и автоматически обновляются вместе
с обновлением главного узла. И если основной узел по каким-то причинам
выходит из строя, то один из вторичных узлов становится главным.
● Индексация. Технология применяется к любому полю в документе на
усмотрение пользователя. Проиндексированная информация
обрабатывается быстрее.
● СУБД осуществляет поиск по специальным запросам. Например,
пользователь может создать диапазонный запрос и мгновенно получить
ответ.
● Балансировщик нагрузки используется в СУБД не только для
распределения нагрузки между разными базами данных, но и для
горизонтального масштабирования. При этом базы данных,
расположенные на разных узлах, синхронизированы между собой и
обеспечивают целостность информации для клиента.
● MongoDB может поставляться для конечного клиента как облачное
решение.
● Динамичность
● Скорость: Эта БД показывает отличные результаты в работе с короткими
запросами;
Где используется:
Эту СУБД используют для хранения событий в системе (логирование), записи
информации с датчиков мониторинга на предприятии, а также в сфере
электронной коммерции и мобильных приложений. Часто MongoDB применяют
как хранилище в сфере машинного обучения и искусственного интеллекта.
MongoDB относится к классу NoSQL СУБД и работает с документами, а не с
записями. Это кроссплатформенный продукт, который легко внедряется в
любую операционную систему. Ряд уникальных особенностей позволяет
использовать СУБД под определённые задачи, в которых она обеспечивает
максимальную производительность и надежность.
Недостатки:
Redis
Особенности:
SQL
SQL – это стандартизированный язык, использующийся для взаимодействия с
базой данных. С помощью него, собственно, и получают доступ к информации,
хранящейся в таблицах
Big data
Этим термином определяют массивы информации, которые невозможно
обработать или проанализировать при помощи традиционных методов с
использованием человеческого труда и настольных компьютеров.
Data science:
Программирует прогнозные модели, учит машину искать закономерности,
анализировать данные и делать предположения на основе этого. Другая
сторона работы заключается в программировании приложений, которые будут
собирать эти данные и передавать на сервер.
Нативные языки
● Долгосрочные проекты
● Если нужно выпустить приложение только под одну платформу.
● Если необходимо внедрить функционал специфичный для платформы,
например, in app.
● Если нужно постоянно обновлять приложение относительно платформы
(новый iOS или Android - сразу новое приложение). Часто обновления
движков запаздывают по отношению к обновлению платформ.
● Если обновление платформы содержит что-то, что полностью
несовместимо с движком.
Кроссплатформенная разработка
Достоинства метода:
— уходит меньше времени и ресурсов на реализацию проекта: приложение
пишется сразу для нескольких платформ;
— простые программы создаются при данном подходе гораздо быстрее;
— упрощенное обновление: изменение затрагивает все платформы;
— можно взять часть кода с мобильного сайта;
— единая логика мобильного приложения на разных платформах.
— для несложных корпоративных проектов, которые нужно быстро
запустить. При небольшом бюджете можно добиться хорошего результата.
Гибридные приложения
Гибрид использует веб-инструменты и языки. Комбинация Native с разработкой
веб-компонентов.
BACKEND
● Java - Spring, Spring Boot
Работа с большими базами данных и сложными задачами.
● C# (ASP.Net Core)
● PHP - Laravel / Yii 2 / Symphony
● PHP CMS - Drupal, Joomla, WP (Word Press), Magenta
● Python - Django
● JS - Node.JS
Дополнительные фреймворки: Celery для асинхронных тасков, Django Rest
Framework для REST API и Python Social Auth для интеграции с соцсетями.
Работа с API: Rest, JSON. Это нужно для работы с интеграциями с разного
рода внешними сервисами и обработкой запросов от фронтенда.
Также необходимо понимание принципов работы серверов Apache, NGINX, IIS
и инструменты для автоматизации развертывания, контейнеризации например
Docker.
Архитектура Firebase:
● Cloud Firestore
Масштабируемая и гибкая служба баз данных для серверной, веб- и
мобильной разработки. Он служит базой данных документов NoSQL.
Он поддерживается для Android, iOS и веб-приложений.
● Аутентификация
Включена в SDK в виде библиотек пользовательского интерфейса. Вы
можете использовать его в качестве внутренней службы для
аутентификации пользователей. Возможности объединения включают
Google, Twitter и Facebook.
Он поддерживается для Android, iOS и веб-приложений.
● Хостинг
Предоставляет хостинг производственного уровня для вашего веб-
контента. С помощью этого компонента вы можете развертывать
приложения и обслуживать динамический или статический контент через
глобальную сеть доставки контента (CDN). Вы также можете комбинировать
компонент хостинга с облачными функциями для разработки и
размещения микросервисов. Поддерживаются только веб-приложения.
● Облачные функции
Позволяют автоматизировать код в серверной части в ответ на триггеры
событий. События могут быть вызваны запросами HTTPS или функциями
Firebase.
Облачные функции поддерживаются для Android, C ++, Unity, iOS и веб-
приложений.
Desktop app
● C++
C++ используют для программ, требовательных к быстродействию
● C# - .NET Core
ADO.NET - доступ к данным.
● Java - Spring
Спецификации:
Java SE - разработка простых Java приложений
Java EE - разработка сложных Java приложений
● Python - PyQt, Tkinter, Kivy
Embedded приложения
Embedded systems - встраиваемые операционные системы для различных
устройств.
Embedded-разработка лежит на стыке инженерии и программирования, то есть
предполагает работу и с кодом, и с железом.
Automation QA
Профессия на стыке программирования и тестирования.
Java – один из самых популярных языков для Automation QA. Но используется
и Python, JavaScript и другие языки.
DevOps
DevOps в целом – это методология, которая позволяет сделать разработку и
внедрение ПО максимально быстрой, эффективной и безопасной. Для этого
DevOps engineer: разворачивает программу на сервере; организовывает среду
разработки и тестирования ПО; стандартизирует окружение разработки;
контролирует работоспособность инструментов разработки; автоматизирует
процессы и создает своеобразный конвейер продакшена.
В качестве языка программирования чаще используется Python. Он довольно
простой в изучении и подходит для требований автоматизации и управления
инфраструктурой. Если принципиально он вам не подходит, можно изучить Go
или Ruby.
Также DevOps engineer знает:
● операционную систему, чаще Linux;
● один или несколько инструментов для управления конфигурацией
например Puppet, Chef, Ansible;
● Docker + облачный сервис для оркестрации контейнеров, например,
Amazon Web Services или Kubernetes;
● системы контроля версий и управления конфигурациями.
Game Developing
1. C
2. C++
Unreal Engine — PC, обычно используется для масштабных игр,
требовательных к быстродействию «железа»
3. Java
4. C#
Unity 3D — кроссплатформенный, возможность быстро портировать игру с
одной платформы на другую
1. Perl
Automation
Для извлечения данных и составление отчетов. Работа с текстом.
2. Python - Django
Тестирование
Модульное тестирование, или юнит-тестирование
процесс в программировании,
позволяющий проверить на корректность
отдельные модули исходного кода программы.
Лекция 4
Рабочие инструменты рекрутера
glossarytech.com — ИТ терминология
Linkedin.com Google
Stackoverflow.com Canbanflow
Brainstorage.me
Github.com
Habrahabr.ru
Drupal.ua
Djinni.co
Turbohiring
Behance
Quora
Boolean Search, X-Ray
AngelList
UPWORK
Tproger
Художники:
BEHANCE
DRIBBLE
Поиск:
https://www.searchmy.bio/search?q=Frontend&hashtags=true
https://keywordtool.io/search/keywords/instagram
Лекция 5
Методы поиска и подбора. Первичная коммуникация и оценка.
Свободное внимание -
сосредоточенность
Уровень эмоционального тона
Контроль эмоций
Уверенность
Энергия
Настойчивость
Устойчивость к интроверсии
(восприятие манипуляций)
Уровень согласия (восприятие
плюсов и минусов человека)
Теплота (склонность любить)
Общение
Продуктивный Непродуктивный
Этапы рекрутинга
7. Собеседование (интервью)
8. Получение фидбэка от кандидата и заказчика
9. Сообщение результата
10. Сопровождение в процессе принятия оффера
Head Hunting
Фундамент успешной вербовки:
– знать потребности кандидата (какая мотивация, что он хочет);
– знать конкурентные преимущества своей компании по сравнению с
компанией кандидата (как обеспечить соблюдение этих двух правил мы
говорили выше);
– верить в себя и свою компанию.
Такой фундамент даст не только уверенность в своем предложении, но
поможет четко и уверенно сформулировать его кандидату.
Статистика
https://www.npmtrends.com/react-vs-vue-vs-@angular/core
Мозговой штурм
мозговой штурм - обдумывание идей одним или несколькими людьми в попытке
придумать или найти решение проблемы
https://wizardsourcer.com/boolean-strings-list/
https://turbohire.co/blog/step-by-step-guide-to-boolean-search-in-candidate-discovery-of-
hiring/
Table of Content
To begin using Boolean search strings to optimize your search for job candidates, read
about these five commonly used Boolean operators:
AND
The AND operator is used to combine two or more search criteria into one string. When you
use the AND operator, you narrow down your search results to include only results that
satisfy both of the criteria. For example, if you were looking for a financial analyst with
experience in both accounting and sales, your Boolean search string would include
"accounting AND sales" so that all results include both criteria.
OR
The OR operator is similar to the AND operator, but it expands search results to include one
criterion, another criterion or both. So, if you wanted a financial analyst with experience in
either accounting, sales or both, your Boolean search string would say "accounting OR
sales."
The NOT operator, which is indicated by the minus symbol (-), excludes search results that
you are not looking for. For example, if you are conducting a search for writing portfolios
through a search engine, you may want to filter out results like articles on creating portfolios,
as these may clutter your search results. In this case, your Boolean search string could
include "NOT tips" or "-tips" to cut back on articles and keep your search focused on actual
writing portfolios. Be mindful that Google only recognizes the minus sign and not the NOT
operator.
Parentheses
Parentheses allow you to group multiple Boolean search strings into one complex candidate
search. For example, you could search "(accounting OR sales) AND analyst" to get results
that must contain "analyst" plus either accounting, sales or both.
Quotation marks
Finally, quotation marks allow you to get results containing an exact phrase. Place your
specific phrase, such as "graphic design," in quotation marks to narrow your search to only
results containing this specific phrase.
Searching for a CV:
A resume may also be referred to as a CV, so cover both search terms by using the Boolean
search string "resume OR CV." The OR operator will show results containing "resume," "CV"
or both. You may also want to include cover letters or other documents in your search.
Aside from searching for a resume or CV, you may want to consider searching for words
commonly included in resumes, such as "professional experience," "skills" or "education."
Often, one profession may be referred to by multiple titles. To ensure that you don't miss any
great candidates, broaden your search to cover different titles for the same profession. For
example, you could use alternative titles like "developer" and "programmer" for a web
development role.
You can use the NOT operator to exclude criteria that you don't want to clog your search
results. For example, you could exclude terms like "templates" or "tips" to avoid resume-
related articles in your search results. This narrows your search and makes it easier to find
the actual resumes you are looking for.
5. Search for more information on specific candidates
To learn about specific candidates, search for your candidate's name in quotation marks and
use Boolean operators to find the exact information you are looking for, such as their email
address or social media profiles.