Решил составить для себя план развития (я в IT с 2007, как аналитик — с 2017). Что получилось: некий чек-лист с перечислением 13 блоков (от работы с требованиям до безопасности) с описанием, что обязательно и желательно знать/уметь.

С чего все началось. Я недавно менял работу, поэтому готовился к техническим собеседованиям. Для удобства составил шпаргалку частых вопросов по основным темам. Когда проходил собеседования и видел, чего я не знаю, то дописывал это в свою шпаргалку. А немного позже решил составить для себя что-то наподобие плана развития. При создании плана использовал личный опыт, опыт коллег, ряд статей, учебные планы нескольких школ, требования из вакансий.
В каждом блоке выделил обязательные знания/умения и дополнительные (в тексте это выделено как «Продвинутый уровень»).
-
«Обязательно» — это то что системному аналитику точно нужно знать (с моей точки зрения).
-
«Продвинутый уровень» — это дополнительные знания уровня Senior, либо это требуется из-за специфики проектов конкретного специалиста (например, мобильная разработка).
Из каких блоков состоит план
-
Процесс разработки
-
Работа с требованиями
-
Моделирование систем
-
Модели данных
-
Пользовательский интерфейс (UI/UX)
-
Интеграция систем
-
Интеграция систем: архитектура REST
-
Интеграция систем: протокол SOAP
-
Интеграция систем: шина данных (ESB, MOM, MQ)
-
Анализ данных
-
Безопасность
-
Тестирование
-
Основы программирования
1. Процесс разработки
Обязательно
Знать
-
Типы ПО и их особенности (системное/прикладное/инструментальное, индивидуальное/групповое, web/desktop/app).
-
Жизненный цикл разработки программного обеспечения (Software development lifecycle — SDLC): сбор и анализ требований, проектирование, разработка, тестирование, внедрение, сопровождение.
-
Основные модели управления разработкой ПО (водопадные, итерационные). Основные гибкие методологии (Agile, Scrum, Kanban).
-
Основные участники команды разработки и сопровождения IT-проектов, их роли (разработчик, аналитик, тестировщик, product и project менеджер, сетевой инженер, DevOps). Разные виды аналитиков и чем они занимаются (системный, бизнес, продуктовый, веб, BI, аналитик данных).
-
Виды документации и их назначение (BRD, FSD/SRS, руководства пользователя, инструкции, регламенты, база знаний и т.д.).
-
Понятие «фреймворк».
-
Суть концепция CI/CD.
-
Общее представление о системе контроля версий.
Уметь
-
Выстраивать взаимодействие и совместную работу с заказчиками, командой, экспертами и другими участниками процесса создания, развития и сопровождения проектов.
-
Планировать и выстраивать процесс работы; выделять, декомпозировать и приоритизировать задачи, управлять сроками и рисками.
-
Создавать разные виды проектной документации.
Продвинутый уровень
Знать
-
Прочие модели, методологии, подходы к управлению разработкой ПО (инкрементная, V-образная, Domain-driven design (DDD), Lean и т.д.).
Уметь
-
Планировать процесс разработки фич и проектов, декомпозировать сложные процессы и задачи, ставить задачи другим участникам проекта.
-
Руководить реализацией отдельной фичи, руководить проектом, руководить другими сотрудниками. Планировать ресурсы. Управлять рисками.
2. Работа с требованиями
Обязательно
Знать
-
Что такое требования к разработке ПО. Виды требований (бизнес/пользовательские/системные, функциональные/нефункциональные и т.д.).
-
Источники требований, способы и инструменты сбора требований:
-
интервью, опросы, анкетирование
-
наблюдение за процессом
-
анализ внутренних документов компании (бэклог, планы развития, обращения в тех.поддержку и т.п.)
-
анализ требований законодательства и других внешних для компании документов
-
анализ текущих решений (собственных и внешних), систем-аналогов, ранних версий, прототипов
-
фокус-группы, мозговой штурм
-
анализ предметной области
-
-
Этапы работы с требованиями:
-
сбор требований
-
анализ, выстраивание приоритетов и устранение противоречий
-
согласование
-
моделирование системы, описание процессов
-
ревью и итоговое согласование
-
сопровождение и управление изменениями
-
тестирование функционала, презентация результатов
-
-
Структура документов с требованиями (проблемы и потребности, цели и задачи, заинтересованные лица, пользователи системы, описание как есть и как будет, ролевая модель, интеграция с другими системами, этапы реализации, границы проекта, ограничения, риски, глоссарий и т.д.).
-
Форматы описания требований: текстовый, графический и т.п.
Уметь
-
Выделять заказчиков, лиц принимающих решения, заинтересованных лиц проекта, экспертов, пользователей, специалистов создания, внедрения и сопровождения данного проекта.
-
Выделять источники и собирать требования разными способами (особенно через интервью).
-
Выявлять истинные причин появления проекта и требований:
-
почему появилась задача: какую проблему решаем или что хотим улучшить
-
зачем это реализовывать: ради какого измеряемого результата
-
определение цены и ценности: какой результат получить реально в рамках данного проекта и имеющихся ресурсов, устроит ли он, стоит ли он потраченного времени и других ресурсов.
-
определять границы проекта: что будет, а что не будет реализовано в текущем проекте, выделать MVP
-
-
Описывать разные виды требований, в разных форматах.
-
Выделять и описывать user story, use cases (основные и альтернативные сценарии).
-
Управлять требованиями: детализировать, проверять на однозначность, полноту, измеримость, проверяемость и осуществимость, проводить трассировку, устранять противоречивость, приоритизировать, согласовывать, реализовывать изменения, проводить ревью.
Продвинутый уровень
Знать
-
Расширенные знания стандартов описания требований: ГОСТ 19, ГОСТ 34, EARS (The Easy Approach to Requirements Syntax) и т.п.
Уметь
-
Выделять и описывать job story (Jobs-To-Be-Done).
-
Строить Impact Map (структура «зачем, кто, как, что»).
3. Моделирование систем
Обязательно
Знать
-
Основные виды архитектур, их описание, преимущества и недостатки, когда используются (локальная, монолитная, клиент/сервер/БД, SOA: сервис-ориентированная, MSA: микросервисная).
-
Понятия «хореография» и «оркестрация».
-
Понятия «фронтенд» и «бэкенд».
-
Описание процессов с помощью блок-схем (Flowchart).
-
Описание процессов в нотации BPMN
-
Описание процессов и системы в нотации UML:
-
Диаграмма вариантов использования — Use Case Diagram
-
Диаграмма активностей — Activity Diagram
-
Диаграмма состояний — State Machine Diagram
-
Диаграмма последовательностей — Sequence Diagram
-
Уметь
-
Моделировать системы и описывать их с помощью разных нотаций (Flowchart, BPMN, UML) и разных способов (тексты, таблицы, схемы, диаграммы и т.п.).
-
Описывать бизнес-процессы, поведение пользователей и отклик системы, системные функции (процессы, осуществляемые системой без участия пользователя).
Продвинутый уровень
Знать
-
Более глубокие знания архитектур (многослойная, многоуровневая, MVC: Model-View-Controller, клиент-серверная, файл-серверная, облачная, событийно-ориентированная, микроядерная, модульный монолит, peer-to-peer и т.д.)
-
Особенности реализации web, desktop и мобильных приложений. Кроссплатформенная разработка.
-
Расширенные знания нотации BPMN и UML.
-
Знание других нотаций, стандартов, фреймворков (IDEF0, IDEF3, EPC, DMN, VAD, SIPOC, BABOK и т.п.).
-
Модель С4 архитектуры программного обеспечения.
Уметь
-
Описывать более сложные процессы в нотации BPMN.
-
Описывать более сложные процессы в нотации UML, использовать прочие виды диаграмм (Deployment Diagram, Component Diagram и т.д.).
4. Модели данных
Обязательно
Знать
-
Что такое концептуальная, логическая и физическая модели данных.
-
Структурированные, неструктурированные и слабоструктурированные данные.
-
Что такое и как между собой связаны: сущности (объекты), атрибуты, связи.
-
Основные принципы ООП. Понятия «класс», «объект», «экземпляр».
-
Типы баз данных (реляционные, объектно-реляционные, нереляционные — NoSQL, колоночные, текстовые). Когда какие используются. Популярные систем управления баз данных (СУБД) для каждого типа.
-
Как организованы реляционные базы данных, правила проектирования:
-
Основные принципы реляционных баз данных
-
Типы данных
-
Способы реализации связей
-
Нормализация: что это, зачем нужна, 3 формы
-
Первичный ключ, составной первичный ключ, внешний ключ, суррогатный ключ
-
NULL и пустые значения
-
Ограничения (NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT, INDEX, AUTO INCREMENT)
-
Уметь
-
Создавать ER-диаграммы.
-
Проектировать простые базы данных.
Продвинутый уровень
Знать
-
Более глубокие знания в проектировании реляционных БД
-
Представление (виртуальная таблица). Виды представлений.
-
Индексы
-
Триггеры
-
Транзакции. ACID-требования к транзакциям и CAP-теорема.
-
Временные таблицы (таблицы для промежуточных данных)
-
Хранимые процедуры
-
Сериализация данных
-
Что такое подмножества и какие бывают (DDL, DQL, DML, DCL, TCL).
-
SQL-инъекции
-
Чем отличаются и когда какую СУБД лучше выбрать (PostgreSQL, MySQL, Oracle, MS SQL, MongoDB, ClickHouse, DB2, Greenplum, SQLite, Elasticsearch, Cassandra и т.д.)
-
-
Правила проектирования нереляционных баз данных.
-
Понятие Object-relational mapping — ORM (доступ к реляционной базе данных с помощью объектно-ориентированного языка)
Уметь
-
Описывать классы в UML: Class Diagram.
-
Проектировать более сложные реляционные базы данных.
-
Проектировать нереляционные базы данных.
-
Составлять логические модели по существующей базе данных.
-
Осуществлять реинжиниринг модели данных.
5. Пользовательский интерфейс (UI/UX)
Обязательно
Знать
-
Основы UI/UX, правила построения интерфейсов (принципы, этапы разработки, критерии качества).
-
Типовые элементы (экранные формы, модальные окна, хлебные крошки, пагинация и т.д.).
-
Понимание принципов адаптивной верстки.
-
Понимание, что такое «клиентский путь».
Уметь
-
Создавать наброски и схемы графических интерфейсов системы.
-
Взаимодействовать с UI/UX специалистами.
Продвинутый уровень
Знать
-
Расширенные знания UI/UX. В том числе в разных направления (web, app и т.д.).
Уметь
-
Создавать макеты графического интерфейса системы (с помощью Figma или других специальных инструментов).
-
Создавать интерактивные прототипы графических интерфейсов.
-
Разрабатывать карты клиентского пути (CJM — Customer Journey Map).
6. Интеграция систем
Обязательно
Знать
-
Виды интеграций информационных систем (API, шина данных — ESB/MOM/MQ, общая база данных, файловый обмен). Их описание, преимущества и недостатки разных способов, что когда используется.
-
Pull-модель (первоначальный запрос производится клиентом) и push-модель (данные поступают от поставщика к пользователю на основе установленных контрактов).
-
Синхронное, асинхронное и реактивное взаимодействие.
-
Концепции stateful и stateless (с сохранением и без сохранения состояния на стороне сервера).
-
Основы синтаксиса JSON и XML.
-
Типы API (REST, SOAP, JSON:API, GraphQL, RPC, API нативных библиотек), их общее описание.
-
Веб-сервисы. Webhook.
-
Протокол HTTP
-
структура запроса и ответа (стартовая строка, HTTP-заголовки, тело сообщения)
-
основные методы в HTTP запросах, их назначение (GET, POST, PUT, DELETE, PATCH), концепция CRUD
-
структура URL (протокол, хост, порт, путь до ресурса, запрос/параметры)
-
коды состояния (1хх, 2хх, 3xx, 4xx, 5xx)
-
как передать html документ, json-файл
-
что такое HTTPS, отличие от HTTP
-
Уметь
-
Проектировать интеграционные взаимодействия:
-
диаграммы потоков данных (DFD)
-
диаграммы последовательности (Sequence Diagram)
-
описание передаваемых и принимаемых данных
-
обработка ошибок и нештатных ситуаций, журналирование
-
ограничения на интеграцию
-
требования к качеству интеграций
-
описание преобразований данных
-
регламент передачи данных
-
-
Разрабатывать требования к интеграции систем через файловый обмен.
-
Разрабатывать требования к интеграции систем через общую базу данных.
Продвинутый уровень
Знать
-
Уровни сетевого взаимодействия: модель OSI, TCP/IP, UDP, FTP, SSH, SFTP, WebSocket и т.п.
-
Какие есть сложности и проблемы при интеграции систем. Закон дырявых абстракций.
-
Что такое идемпотентность. Какие HTTP методы являются идемпотентными, а какие нет, почему.
Уметь
-
Разрабатывать требования интеграции систем через GraphQL и JSON:API.
7. Интеграция систем: архитектура REST
Обязательно
Знать
-
Принципы REST архитектуры.
-
Отличие от SOAP.
-
Особенности применения REST в HTML (нельзя отправлять PUT и DELETE запросы из HTML-формы).
-
JSON Schema.
Уметь
-
Понимать документацию с описанными REST API (в том числе в Swagger).
-
Проектировать и описывать интеграции REST API.
-
Работать с Postman
Продвинутый уровень
Знать
-
Отличие от JSON:API.
Уметь
-
Описывать интеграции REST API через OpenAPI и Swagger
-
Работать с cURL.
8. Интеграция систем: протокол SOAP
Обязательно
Знать
-
Основы протокола SOAP. Структура сообщения (XML файла). WSDL
-
XSD схема (XML Schema).
Уметь
-
Понимать документацию с описанными SOAP API.
Продвинутый уровень
Знать
-
Расширенные знания протокола SOAP (пространство имен, индикаторы элементов, XSLT, XPATH и т.д.).
Уметь
-
Проектировать и описывать интеграции SOAP API, XSD схемы.
-
Работать с SOAP UI и Postman (для SOAP).
9. Интеграция систем: шина данных (ESB, MOM, MQ)
Обязательно
Знать
-
Что из себя представляет ESB (Enterprise Service Bus — сервисная шина предприятия), MOM (Message-oriented Middleware — ПО, ориентированное на обмен сообщениями в распределенном окружении), MQ (Message Queue — очередь сообщений, брокер сообщений).
-
Отличие ESB от MQ. Отличие ESB от ETL.
-
Понятия «топик» (издатель-подписчик) и «очередь» (отправитель-получатель).
-
Какие брокеры сообщений чаще всего используются (RabbitMQ и Kafka).
Уметь
-
Понимать документацию с описанием интеграций через шину.
-
Описать документацию при использовании интеграции через шину.
Продвинутый уровень
Знать
-
Разница между RabbitMQ и Kafka. Когда что лучше выбрать.
-
Как брокер сообщений (RabbitMQ и Kafka) гарантирует доставку сообщений.
10. Анализ данных
Обязательно
Знать
-
Основы анализа данных.
-
Знать что такое Big Data, BI, Data Science, ML.
Уметь
-
Анализировать данные, находить ответы на вопросы, формировать отчеты, уметь их презентовать.
-
Работать с простыми SQL запросами
-
CRUD-операции: SELECT, UPDATE, INSERT, DELETE
-
Создание и удаление таблиц: CREATE, DROP, TRUNCATE
-
Ограничение и сортировка: WHERE, LIMIT, DISTINCT, ORDER BY
-
Дополнительные условия: = != <> > < AND, OR, BETWEEN, IN, IS NULL, IS NOT NULL, LIKE, NOT LIKE
-
Арифметические операции: + — * / %
-
Агрегирование данных: GROUP BY, AS, AVG, COUNT, MAX, MIN, SUM, HAVING
-
Вложенные запросы (в части SELECT, FROM, WHERE)
-
Объединение запросов: UNION, UNION ALL
-
Объединение таблиц: JOIN (INNER, LEFT, RIGHT, FULL, CROSS)
-
Комментарии
-
Продвинутый уровень
Знать
-
Основы статистики.
-
Основы продуктовой аналитики (продуктовые и маркетинговые метрики, CustDev, А/В тестирование, Unit-экономика и т.д.)
-
Что такое OLTP (обработка транзакций в реальном времени), OLAP (интерактивный анализ данных — кубы), ETL (извлечение, преобразование, загрузка), ELT (извлечение, загрузка, преобразование), DWH (хранилище данных).
-
Понимание принципов построения хранилищ данных.
-
Основные системы аналитики данных.
Уметь
-
Проводить более сложный анализ данных, находить инсайты, аномалии. Формировать дашборды, визуализировать данные.
-
Работать с более сложными SQL запросами
-
Сложные составные запросы (в том числе с EXISTS, ANY, ALL, CASE, IF)
-
Встроенные функции: ROUND, DATE, TIME, DATETIME, SUBSTR и т.д.
-
Оконные функции (OVER)
-
-
Анализировать данные с помощью Excel.
-
Работать с BI системами (Power BI, Tableau и т.п.).
-
Работать с системами web и app аналитики (Google Analytics, Яндекс.Метрика и т.п.).
-
Работать с Python для анализа данных (в том числе со специальными библиотеки NumPy, Pandas и т.д.).
11. Безопасность
Обязательно
Знать
-
Что такое аутентификация, примеры способов аутентификации (пароль, ЭЦП, SMS, push уведомление, биометрия, многофакторная), что такое идентификация.
-
Что такое авторизация, ролевая модель информационной системы.
-
Что такое хеширование, как и где применяется (особенно для паролей).
-
Что такое электронная подпись. Зачем и как используется.
Продвинутый уровень
Знать
-
Что такое криптография, для чего используется. Симметричное и асимметричное шифрование. Открытый и закрытый ключи. TLS/SSL в HTTPS.
-
Контрольная сумма: что это, как используется.
-
Основные схемы и протоколы аутентификации (базовая аутентификация, аутентификация по cookies, аутентификация по предъявлению цифрового сертификата, аутентификация с помощью ключа API, OpenID/OAuth/JWT и т.д.)
-
Что такое верификация и валидация.
-
Принципы работы электронной подписи, виды (простая, неквалифицированная, квалифицированная), их отличия.
-
Основные уязвимости веб сервисов и мобильных приложений.
12. Тестирование
Обязательно
Знать
-
Процесс тестирования, тест кейсы и чек листы.
Уметь
-
Разрабатывать критерии и процесс проведения приемочного тестирования.
-
Организовывать и проводить приемочное тестирование.
Продвинутый уровень
Знать
-
Виды, подходы, инструменты тестирования.
Уметь
-
Написать тест кейсы и чек листы (все позитивные и основные негативные сценарии).
-
Тестировать функционал (все позитивные и основные негативные сценарии).
13. Основы программирования
Обязательно
Знать
-
Какие основные языки программирования существуют, где применяются.
-
Основы программирования (переменные, операторы, ветвление, циклы, функции и т.п.).
-
Основы языка разметки документов HTML.
Уметь
-
Написать простую программу на любом ООП языке программирования.
Продвинутый уровень
Знать
-
Более глубокое знание хотя бы одного из популярных ООП языков.
-
Понимание основ HTML/CSS/JavaScript.
-
Понимание ООП в программировании.
Уметь
-
Написать более сложную программу на любом ООП языке программирования.
Итоги
Данный план больше напоминает меню в ресторане, где стоит выбирать что нужно, а не все позиции. Лично мне он в первую очередь помог структурировать имеющиеся опыт и знания, а также увидеть «белые пятна» и получить хотя бы общее представление по всем таким направлениям.
Какие знания и навыки нужны, и к какому уровню их отнести — это очень дискуссионный вопрос. Опять же, в каких-то блоках у меня знаний и опыта больше, а в каких-то меньше. Поэтому буду рад вашему мнению и вашим советам, особенно если что-то упустил (можно в комментариях, можно лично vk.com/chizhovav88).
Отдельная просьба — поделиться ссылками на митапы/форумы/каналы/соцсети, где происходит активное общение и публикуются полезные материалы по темам «аналитика», «управление IT-проектами», «запуск и развитие IT-проектов». Это тоже важная часть развития, которая у меня несколько просела.
ссылка на оригинал статьи https://habr.com/ru/post/692580/
Добавить комментарий