1. Анализ требований
1.1. Цель – определение детальных требований к системе
1.2. в обсуждении участвуют также и специалисты по тестированию
1.3. Бизнес-аналитик — это специалист, который исследует проблему заказчика, ищет решение и оформляет его концепцию в форме требований, на которые в дальнейшем будут ориентироваться разработчики при создании продукта.
1.3.1. среднему украинскому бизнес-аналитику 28 лет, он имеет зарплату $1300-2500 и опыт работы 3 года.
1.3.2. 1. Выявить потребности заказчика, понять проблему, которую он хочет решить. 2. Самостоятельно или с помощью команды сформулировать концепцию решения. 3. Оформить концепцию в техническое задание с конкретными требованиями к будущему продукту. Для этого используются различные техники бизнес-анализа — постронение моделей процессов и структур, прототипы пользовательского интерфейса, сценарии использования. В это же время делается точная оценка трудозатрат и длительности работ. 4. Детализировать каждое требование в виде спецификаций. 5. Консультировать программистов и тестировщиков во время разработки продукта, спорные моменты обговаривать с заказчиком.
1.4. Project Manager — это специалист, чьей главной задачей является управление проектом в целом: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, коммуникации, а также оперативное решение проблем.
1.4.1. среднему украинскому PM’у 28 лет, он имеет зарплату $2000 и опыт работы 3,8 года.
1.4.2. Обязанности PM’а: — проектная документация; — составление плана проекта; — согласование сроков; — анализ возможных рисков; — участие в подборе и утверждении проектной команды; — разбивка продукта на компоненты и раздача их исполнителям; — определение требуемых ресурсов и рабочей среды, их распределение внутри команды; — постановка рабочего процесса в команде (разработка, тестирование, работа с требованиями); — определение приоритетности задач; — организация работы команды вокруг требуемой задачи; — отслеживание состояния проекта, хода выполнения задач; — отслеживание должной приоритетности выполнения задач; — отслеживание нагрузки задачами и прогресса по задачам каждого разработчика; — отслеживание сроков выполнения задач; — удерживание команды в рабочем состоянии, мотивация команды; — создание прозрачной среды общения между всеми участниками процесса; — отслеживание удовлетворенности проектом со стороны команды; — решение всевозможных конфликтных ситуаций внутри команды и в связке заказчик-команда; — общение с заказчиком, управление его ожиданиями; — предоставление заказчику отчетности о ходе выполнения задач и проекта в целом; — презентация заказчику готовых решений, демо-версий, прототипов; — интервьюирование новых членов команды.
2. Проектирование
2.1. программисты и системные архитекторы, руководствуясь требованиями, разрабатывают высокоуровневый дизайн системы.
2.2. Определяются технологии, которые будут использоваться в проекте, загрузка команды, ограничения, временные рамки и бюджет. В соответствии с уточненными требованиями выбираются наиболее подходящие проектные решения.
2.3. Software product manager
2.3.1. В круг обязанностей менеджера по продукту может входить следующее: — Общение с заказчиком и его командой, сбор требований, выявление ожиданий и пожеланий; — Создание user stories, приоритизация беклога продукта, распределение задач; — Создание feature спецификаций (цели, аналитика, wireframes); — Взаимодействие с дизайнерами (фидбек по выполненным задачам); — Создание, обновление и мониторинг дешбордов продукта; — A/B-тестирование; — Координация взаимодействия с компаниями, которые исследуют поведение потребителей (UserTesting, Validately, Ask your Target Market и т.д.), затем анализ полученной информации; — Принятие решений по продукту, основываясь на количественных данных.
2.4. Системные архитекторы - руководствуясь требованиями, разрабатывают высокоуровневый дизайн системы
2.4.1. Главная задача архитектора — поиск оптимальных (простых, удобных, дешевых) решений, которые будут максимально соответствовать потребностям заказчика и возможностям команды.
2.4.2. В обязанности архитектора входит: — Проектирование системы на основе требований заказчика; — Определение архитектуры приложения или ее эволюции; — Выбор технологии для каждого звена системы; — Выбор способов взаимодействия между компонентами системы; — Создание рабочего прототипа; — Дизайн интерфейсов и компонентов приложения; — Подбор или проектирование фреймворков; — Анализ и исправление проблем производительности; — Архитектурное ревью бизнес-требований; — Ревью кода и дизайна при больших изменениях; — Рефакторинг кода; — Написание и поддержка стандартов кодирования, каталогов проектных паттернов и антипаттернов; — Документирование всех архитектурных решений, постоянное обновление документации; — Риск-менеджмент; — Координирование архитектуры на протяжении последующего жизненного цикла ПО; — Обучение и консультирование программистов.
2.4.3. среднему украинскому архитектору 30 лет, он имеет 9-летний опыт работы и получает $4000.
2.5. Team Lead-это IT-специалист, который управляет своей командой разработчиков, владеет технической стороной, принимает участие в работе над архитектурой проекта, занимается ревью кода, а также разработкой некоторых особо сложных заданий на проекте.
2.5.1. средний возраст украинских тимлидов — 28 лет, средний опыт работы — 6,5 лет, средняя зарплата — $2800.
2.5.2. Под управленческую роль тимлида менеджмент, распределение и делегирование задач, всевозможные оценки и составление рабочего графика, контроль состояния проекта, а также митинги, коммуникации с заказчиком, руководством и всеми членами команды
2.5.3. Под техническую роль: участие в написании технической документации, выбор технологий для проекта, разработка архитектуры, R&D, code review, менторинг джуниоров, проведение технических собеседований, грамотное вовлечение новых членов команды в рабочий процесс, ответственность за техническую часть проекта.
3. Разработка и программирование
3.1. непосредственно разработка: написание кода программы в соответствии с ранее определенными требованиями.
3.2. Программирование предполагает четыре основных стадии: 1) Разработка алгоритмов – фактически, создание логики работы программы; 2) Написание исходного кода; 3) Компиляция – преобразование в машинный код; 4) Тестирование и отладка – речь, главным образом, о юнит-тестировании.
3.3. front-end программисты - разрабатывают пользовательский интерфейс программы и логику ее взаимодействия с сервером.
3.4. DevOps engineer — специалист, который работает на стыке этих двух должностей и занимается автоматизацией жизненного цикла приложения (включая проектирование, разработку, тестирование, развертывание, поддержку и мониторинг).
3.4.1. среднему украинскому DevOps инженеру 28 лет, он имеет зарплату $1200-2700 и опыт работы 4 года.
3.4.2. В обязанности DevOps engineer входит: — Развертывание поставленного разработчиками релиза в производстве; — Интеграция и углубление процессов разработки в поставку; — Стандартизация окружения разработки; — Настройка инфраструктуры на особенности разрабатываемого ПО; — Подготовка продуктивной среды к частым внесениям изменений; — Обнаружение и исправление проблем; — Автоматизация процессов.
3.5. Technical Writer - грамотно создавать, иллюстрировать и адаптировать документацию на понятном для конечного пользователя языке
3.5.1. среднему украинскому техническому писателю 28 лет, у него 3,5 года опыта работы и зарплата $400-1400.
3.5.2. В круг обязанностей технического писателя может входить: — Создание пользовательской документации, справочных систем; — Создание документации для администраторов систем; — Подготовка графических схем по заданным параметрам; — Регулярное обновление уже существующей документации в соответствии с релизами ПО; — Создание учебных материалов для новых пользователей.
4. Документация
4.1. Четыре уровня документации: – Архитектурная (проектная) – например, дизайн-спецификация. Это документы, описывающие модели, методологии, инструменты и средства разработки, выбранные для данного проекта. – Техническая – вся сопровождающая разработку документация. – Пользовательская – включает справочные и поясняющие материалы, необходимые конечному пользователю для работы с системой (раздел справки по программе). – Маркетинговая – включает рекламные материалы, сопровождающие выпуск продукта.
5. Тестирование
5.1. обнаруживаются пропущенные при разработке баги
5.2. тестировщик
5.2.1. который проверяет готовый продукт на наличие ошибок (багов) и несоответствие требованиям, и затем документирует найденные дефекты и пути их воспроизведения.
5.2.2. Есть 4 основные роли: Test Analyst — занимается статическим тестированием требований: проверяет, насколько они полны, однозначны, непротиворечивы etc; Test Designer — создает набор тестов на базе требований, планирует конфигурации, необходимые для тестирования; Test Executor — выполняет заранее подготовленные тесты, документирует найденные ошибки и шаги их воспроизведения; Test Manager — скорее управленец, чем инженер. Планирует и контролирует работы, связанные с тестированием: оценки сроков, работу над планом-графиком, контроль покрытия требований тестами, постановку задач членам команды, коммуникацию со стейкхолдерами).
5.3. QA Automation engineer — это специалист по обеспечению качества продукта, который использует программные средства для создания тестов и проверки результатов выполнения.
5.3.1. среднему украинскому QA-автоматизатору 26 лет. Он имеет опыт работы от полугода (джуниор) до 5 лет (сеньор) и получает зарплату $600-2700.
5.3.2. В круг обязанностей QA Automation инженера входит: — Анализ требований; — Разработка позитивных/негативных/граничных сценариев; — Описание автоматизационных тест-кейсов; — Разработка фреймворка для автоматизации продукта; — Настройка тестовых окружений; — Подготовка тестовых данных; — Анализ тестового покрытия; — Написание автотестов, тестовых скриптов; — Интеграция с системами автоматического запуска или Continuos Integration; — Выполнение автоматических тестов; — Поддержка работоспособности уже написанных тестов; — Написание документации; — Анализ результатов прогонов авто-тестов; — Баг-репортинг, общие отчеты о тестировании.
5.4. Quality Assurance engineer — это специалист по обеспечению качества, деятельность которого направлена на улучшение процесса разработки ПО, предотвращение дефектов и выявление ошибок в работе продукта.
5.4.1. среднему украинскому QA-инженеру 26 лет. Он имеет опыт работы от полугода (джуниор) до 5 лет (сеньор) и получает зарплату $600-2700.
5.4.2. Основная задача QA — обеспечение качества.
5.4.3. Процесс обеспечения качества состоит из таких этапов: — проверка требований к продукту; — оценка рисков; — планирование идей по улучшению качества продукта; — планирование тестирования; — анализ результатов тестирования;