Разработка продукта в IT — это комплексный и многоэтапный процесс, требующий взаимодействия различных специалистов и использования современных методологий управления проектами.
В этой статье мы рассмотрим, кто является заказчиком, как они находят IT-специалистов, основные методологии разработки и управления проектами, процесс доведения фичей до продакшена и возможные подводные камни.
Немного терминологии
Фича (от английского feature - особенность, необычное свойство) - это определенная деталь или часть продукта, которая имеет специфические характеристики. Также фичами называются механизмы, позволяющие добавлять новые функциональности, веб-части и элементы дизайна в продукт.
Простыми словами, фича - это робот-пылесос. Можно жить без него и пользоваться обычным пылесосом, но с ним жизнь становится немного лучше.
Продакшен (он же "прод", от английского production - производство) - это производственная "боевая" среда, сервер, на котором запущено "живое" приложение, имеющее реальные данные, доступ к которому имеют настоящие пользователи.
Баг (bug) – это ошибка в коде или в работе программы. Сленговое слово, дает понять, что результат неверный или какой-либо процесс в работе программы/приложения идет неправильно.
Процесс разработки продукта: подготовительный этап
Процесс разработки продукта начинается задолго до того, как в нем начнут принимать участие специалисты: разработчики, аналитики, тестировщики и т.п.
Этот этап заключается в изучении рынка труда и поиске кандидатов
Заказчиками IT-продуктов могут быть как крупные корпорации и стартапы, так и государственные учреждения и индивидуальные предприниматели. Они могут искать IT-специалистов следующими способами:
1. Рынок труда: Размещение вакансий на специализированных платформах (например, HeadHunter).
2. Аутсорсинговые компании: Найм команды разработчиков через компании, предоставляющие аутсорсинг IT-услуг.
3. Фриланс-платформы: Поиск отдельных специалистов на платформах, таких как WorkZilla, Habr.Фриланс и т.п.
4. Нетворкинг и рекомендации: Использование личных и профессиональных связей для поиска специалистов.
После того, как заказчик нашел специалистов и провел их по "воронке найма", процесс переходит на следующий этап - разработка.
Как происходит разработка?
Процесс разработки продукта в IT начинается с четкого понимания требований заказчика и проходит через несколько этапов, каждый из которых критически важен для успешного завершения проекта.
Основные методологии разработки позволяют выстроить процесс таким образом, чтобы минимизировать трудозатраты, уложиться в сроки проекта и осуществить своевременный контроль.
Основные методологии разработки и управления проектами
Waterfall (водопадная модель): Классический подход, при котором каждый этап разработки (анализ требований, дизайн, разработка, тестирование и внедрение) выполняется последовательно. Подходит для проектов с четко определенными требованиями.
- Agile (гибкая методология): Фокусируется на итеративной разработке и гибком реагировании на изменения. Проект делится на небольшие циклы (спринты), каждый из которых завершается рабочей версией продукта. Популярные фреймворки Agile:
- Scrum: Включает роли (Scrum Master, Product Owner, команда разработчиков), артефакты (Product Backlog, Sprint Backlog) и церемонии (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective).
- Kanban: Визуализирует работу на доске Kanban, фокусируется на управлении потоком задач и их ограничении в процессе.
Подробнее про Agile можно прочитать здесь.
Также, выделяют и DevOps как отдельную методологию.
DevOps (акроним от англ. development & operations) - культура и практика, объединяющая разработку и операционные процессы для улучшения взаимодействия между командами и автоматизации процессов.
Включает Continuous Integration (CI) - непрерывная интеграция (объединение изменений от всех разработчиков в единую рабочую систему) и Continuous Deployment (CD) - непрерывный деплой (доведение изменений до прода).
Процесс доведения фичей до продакшена
- Сбор требований: Определение и документирование функциональных и нефункциональных требований.
- Проектирование: Создание архитектуры системы и дизайна интерфейсов.
- Разработка: Написание кода и его интеграция.
- Тестирование: Проверка качества кода и функциональности продукта с использованием различных видов тестирования (юнит-тестирование, интеграционное тестирование, пользовательское тестирование и др.).
- Внедрение: Перенос рабочей версии продукта на производственные серверы. Включает в себя уже рассмотренные:
- Continuous Integration (CI): Автоматическая сборка и тестирование кода при каждом коммите.
- Continuous Deployment (CD): Автоматическое развертывание кода на продакшене после успешного прохождения тестов. - Поддержка и обновление: Мониторинг системы, устранение багов и регулярное обновление функциональности.
О том, как выглядит этот этап с точки зрения разработчика, я расскажу в отдельной статье.
Подводные камни в процессе разработки
1. Неполные или изменяющиеся требования. Частое изменение требований приводит к тремору у разработчиков, поскольку ещё вчера написанный код зачастую требует повторного погружения в контекст задачи. Поэтому разработчики оперируют малыми коммитами (изменениями) и задачами, на выполнение которых потребуется до 4 часов.
2. Плохая коммуникация: Отсутствие эффективного общения между заказчиком, командой разработчиков и другими заинтересованными сторонами. Обычно, следствием этого фактора является простои в процессе разработки или ошибки реализации.
3. Недостаток тестирования: Пропуск этапов тестирования или недостаточно тщательное тестирование может привести к выпуску продукта с багами.
4. Технический долг: Пренебрежение качеством кода ради быстрого завершения задач может привести к накоплению технического долга и усложнить дальнейшую разработку и поддержку.
5. Сложности в интеграции: Проблемы при интеграции сервисов, систем, компонентов приводят к сбою или неправильной работе всего приложения.
6. Отказ от изменений: Внедрение новых процессов и технологий может вызвать сопротивление среди сотрудников и замедлить проект.
Процесс разработки продукта в IT — это сложный, но увлекательный путь, который требует тщательного планирования, эффективного управления и слаженной работы команды. Понимание методологий разработки, умение преодолевать подводные камни и постоянное совершенствование навыков — ключевые составляющие успешного завершения проекта и создания качественного продукта.