Содержание курса
Предмет исследования
I. Введение
При обсуждении вопросов, связанных с процессами разработки Информационных систем (далее ИС) в среде ИТ специалистов сплошь и рядом возникают споры, как это делать максимально правильно и канонично. К примеру “свидетели” Каскадной (Waterfall) модели, зачастую вызывают лишь раздражение и насмешки у адептов Гибких (Agile) методологий, считающих их анахроничными. При этом сложившееся их самих понимание о той единственно верной парадигме организации процесса, а скорее возможность гибко и технично обходить эту парадигму, не дает даже шанса договориться о целостном восприятии темы. И чего уж греха таить, как правило упорство при отстаивании своей точки зрения, это просто лазейка для прикрытия недостаточно глубокого осмысления, почему именно так или иначе протекает тот или иной техпроцесс.
Чаще всего с годами у специалистов складывается некое устоявшееся представление об организации и последовательности этапов производства ИС, о результатах, формируемых в ходе их выполнения, способах их применения, приоритетах и прочего. Всеохватывающее и глубокое погружение в обстоятельства реализации решений не оставляет времени и желания разбираться в сути организации обеспечивающих их процессов. А потому за бортом понимания остаются вопросы: почему процессы выстроены именно в той или иной последовательности, почему важны именно те или иные результаты и наконец почему от проекта к проекту успешность применения отлаженных механизмов может быть кардинально разной.
В корне этой дезориентации могут лежать следующие факторы:
Во-первых, непонимание специалистами, промышляющими в узконаправленных профессиональных областях особенностей контекста работ смежников по производству. Например, специалисты тестирования лишь примерно догадываются о том, как происходит внедрение на предприятии уже готового продукта. Разработчики обычно слабы в тонкостях общения с заказчиками, они их попросту раздражают (причем это взаимно). И прочее.
Во-вторых. Сотрудники, привыкшие мастерить в основном на небольших проектах, недоумевают зачем заморачиваться на этапы предпроектного обследования, полноценного проектирования и прочих на их взгляд атавизмах водопадного подхода, даже когда они попадают на сложные, масштабные проекты. И наоборот, специалисты, привыкшие к величию и размаху, пытаются вплести в процесс разработки небольших ИТ-продуктов не нужные активности, которые только путают и загромождают их реализацию.
В-третьих, в разных командах и областях разработки ПО, для обозначения однотипных ролей в проектах нередко используют разные названия, или ролям с одинаковыми названиями приписывают разные наборы функциональных обязанностей, что также вносит определенную сумятицу.
Этот список можно продолжать, но, уловив суть, мы ограничимся перечисленным выше.
О чем курс
Итак, исходя из вышесказанного, мы постараемся:
1) Охватить пониманием процесс производства ИС, существующие стандарты, в том числе управление ресурсами, активностями, рассмотрим инструменты и варианты организации, в зависимости от условий и прочее.
2) Идентифицировать функциональные роли и проанализировать распределение их нагрузки по процессам производства.
3) Сделать именно Ваш процесс лучше.
4) Заставить Вас задуматься о своем месте в этом процессе.
Для начала, чтобы наглядно ощутить отличие в масштабности проектов, давайте на основе ассоциации представим, что такое простой, средний и сложный процесс создания ИТ-продукта и оценим роль специалистов в нем. Например:
Индивидуальщик - специалист, который может реализовать интеллектуальный продукт, логику коего и процесс производства способен охватить один человек. Вымирающий тип, в современных условиях повсеместной коллаборации встречается все реже и реже.
Артель - небольшая команда специалистов, способная разделять в своей среде функции, обязанности и ответственность по созданию продукта, но не имеет инфраструктуры по масштабированию процессов и ресурсов. Сложность продукта, его поддержки и интеграции значительно ограничена. Узкопрофильный тип, существует в крайне узкоспециализированных отраслях либо на старте масштабных начинаний.
Производство – предприятие или группа предприятий с полным циклом работ по производству ПО от набора персонала, управления финансированием, проектирования, разработки, тестирования, внедрения, поддержки эксплуатации и прочее. Сложность реализуемых продуктов ограничена лишь производственными и финансовыми мощностями предприятия.
Очевидно, что уже эта классификация требует разных подходов к организации процессов изготовления ИС, а еще следует учесть степень готовности предприятия к внедрению изменений, разные модели финансирования, контроля и прочие факторы, о которых мы будем говорить дальше.
II. Определение предмета "организация производства"
Прежде всего уже на начальном этапе стоит определиться, что же мы будем понимать под самим объектом изучения: Организация производства ИС. По сути – это создание некого конвейера, на котором потребности бизнеса в автоматизации трансформируются в стабильно реализующуюся для него ценность. При этом выпуск продукции происходит максимально быстро, предсказуемо с наименьшими усилиями.
Изучение предмета может включать анализ по следующим направлениям:
1) Цели и конечный результат, которые определяют отправную точку и понимание конечного успеха;
2) Организация производственной системы предприятия. Стандарты, потоки в системе, культура (доверие, открытость, фокус на качество), что обеспечивает среду существования;
3) Стадии, этапы производства, система ключевых процессов, которые задают ритм;
4) Люди (кросс-функциональная команда) являющиеся главным активом. Сверхсложным, эмоциональным, самообучающимся, изменчивым и часто непредсказуемым;
5) Инструменты, которые автоматизируют рутину и дают информацию для принятия решений.
С другой стороны, это не только инструменты сами по себе и не просто следование некой методологии, а создание целостной экосистемы, умещающей в себе:
Производственную систему: Предприятие, службы, проекты, производственная линия как целостный объект.
Производственные процессы: Основные (непосредственно создающие продукт), вспомогательные (бесперебойное энергообеспечение, DevOps) и обслуживающие (HR, бюджетирование).
Потоки: Материальные, информационные, финансовые потоки внутри системы.
Еще один немаловажный аспект современного производства состоит в том, что успешный глобальный процесс всегда адаптивен. Он должен регулярно пересматриваться (через ретроспективы) и настраиваться под конкретный продукт, команду и бизнес-контекст.
Прежде чем перейти к детальному рассмотрению вышеперечисленных направлений, резюмируем кратко важные аспекты по ним.
1. Основные цели создания системы
Правильная организация самого процесса производства должна гарантировать создание системы, обеспечивающей предсказуемый, ритмичный, качественный и экономичный выпуск ИТ-продуктов или оказание ИТ-услуг, которые будут удовлетворять потребностям пользователей, надежны, безопасны и поддерживаемы. Достигается это за счет следующих факторов:
Повышение эффективности производства для оптимального использования ресурсов (время, люди, деньги).
Эффективное распределение и загрузка команды и инфраструктуры. Избегание простоев, "узких мест" и прочих отклонений. Создание самоорганизующихся, кросс-функциональных команд, которые способны адаптироваться к изменениям и минимизировать риски, связанные с уходом ключевых специалистов.
Управляемость, возможность контролировать прогресс, вносить изменения и управлять рисками.
Обеспечивается путем снижения рисков срыва релизов и превышения сметы, за счет стандартизации процессов и управления ресурсами. Для того чтобы обеспечить контроль достижения результата, необходимо наличие измеримых метрик на всех этапах (скорость разработки, частота сборок продукта, время восстановления после сбоя, удовлетворенность команды), создание единой "панели управления" (dashboard) для всего процесса.
Достижение конкурентных преимуществ предприятия за счет оптимизации внутренних процессов.
Минимизация времени от идеи до работающего функционала у пользователя, что должно обеспечить ключевое конкурентное преимущество.
Создание организационно-технических условий для реализации стратегии компании.
Достигается за счет организации быстрого получения обратной связи, непрерывного улучшения процессов. Автоматизация всего, что можно автоматизировать (сборка, тестирование, деплой, мониторинг), чтобы высвободить время команды для творческой, продуктивной работы.
2. Организация производственной системы, регламенты и стандарты
Создание целостной продуктовой или процессной операционной системы это комплексная задача, которая лежит на стыке менеджмента, технологий и культуры. Результатом должно стать построение управляемого, повторяемого и измеримого процесса, поддерживающего жизненный цикл ИС от идеи до эксплуатации, с использованием методов инженерии ПО, управления проектами, корпоративной архитектуры, философских основ и принципов (клиентоориентированность, фокус на создании ценностей и прочее).
Очевидно, что в зависимости от приоритетов и условий изготовления следует применять разные способы организации структуры производства (проектная, продуктовая, матричная, кросс-функциональная, потоковая и прочие). Подробно эта тема будет раскрыта ниже.
Целостную модель производства на верхнем уровне абстракции можно представить, как трёхуровневую архитектуру:
Уровень 1: Стратегический (управление ценностью). Организация управления потоком ценности, а не проектами. Портфельное управление и приоритизация, управление дорожной картой, модель финансирования производства и т.п.;
Уровень 2: Тактический (производственный конвейер). Производство качественных требований и на их основании производство качественного ИТ-продукта. Система планирования и контроля работ. Система управления качеством, Система управления релизами и т.п.;
Уровень 3: Операционный (инженерный цикл). Инженерный базис, на котором организован конвейер 2-го уровня. Учёт использования и затрат, инцидент-менеджмент, управление техническим долгом и т.п.;
Рассмотрению всех этих аспектов и будет посвящен данный курс.
3. Стадии, этапы, система ключевых процессов
Полноценный процесс производства ИТ-продуктов, в связи со сложностью, принято делить на стадии и этапы. Условно можно выделить шесть последовательных стадий:
Предпроектное исследование, идея и стратегия;
Проектирование, планирование и подготовка;
Реализация и тестирование проектного решения;
Внедрение целевого решения, интеграция, сборка и развертывание;
Эксплуатация и сопровождение, мониторинг, анализ обратной связи;
Вывод из эксплуатации;
В зависимости от способа производства и прочих условий стадии могут видоизменяться.

На базе озвученных выше стадий сформированы разделы данного курса, с подробным разбором того, какие из этапов, при каких условиях (команда, заказчик, предметная область, условия финансирования и прочее) и в каком формате следует применять, подбирая свой уникальный Жизненный цикл (далее ЖЦ) производства ИТ-продукта, адекватный вызовам.
ЖЦ производства, протекающий в рамкам последовательных во времени стадий и шагов использует сервисные процессы (бизнес-функции), которые его поддерживают на всех этапах. Принято выделять следующие:
управление запросами и инцидентами;
управление проектами;
управление конфигурациями;
управление релизами;
управление качеством;
управление изменениями;
управление рисками;
обеспечение безопасности;
4. Люди, команды
Люди и команды в организации ИТ-производства — это ключевой ресурс, от которого напрямую зависят скорость поставки, качество решений и устойчивость ИТ-ландшафта. Ни инструменты, ни методологии не работают без правильно выстроенной ролевой и командной модели.
Современная организация ИТ-производства — это чаще всего не иерархическая пирамида, а сеть автономных, кросс-функциональных команд, объединенных общей продуктовой стратегией, сильной платформой и культурой сотрудничества. В последнее время наблюдается тренд на смещение ключевого фокуса с управления задачами - на создание условий, в которых команды могут эффективно самостоятельно доставлять ценность клиенту.
Важно учитывать, что в отличие от прочих людской активов:
Обладает своей волей и мотивацией.
Со временем обесценивается и требует реинвестиций. Технологии, которые он использует устаревают стремительно.
Может обладать негативной синергией. Два талантливых, но конфликтующих разработчика вместе могут производить меньше, чем по отдельности.
Включает скрытую стоимость владения. Помимо прямых издержек требует много косвенных.
Может самовольно покинуть владельца
В рамках этого направления в курсе мы подробно рассмотрим:
профессиональные стандарты специалистов ИТ-отрасли, включая требования к навыкам и компетенциям;
модели формирования команд;
способы взаимодействия людей и команд;
социальную инженерию;
уровни зрелости команд;
5. Инструменты
В организации ИТ-производства инструменты — это “станки и конвейеры”, которые обеспечивают планирование, разработку, контроль качества, поставку и эксплуатацию информационных систем. Без них производство становится ручным и непредсказуемым. По существу, инструменты должны поддержать бизнес-функции ЖЦ производства, озвученные выше. А потому набор инструментов удобно структурировать по функциям:
Инструменты управления, планирования и коммуникации, которые используются для организации работ и взаимодействия команд.
Инструменты анализа и проектирования, применяющиеся для проектных работ и разработки архитектуры.
Инструменты разработки, помогающие формировать среду создания программного кода.
Системы управления версиями и кодом, используемые для организации и поддержания коллективной разработки.
Инструменты CI/CD (автоматизация производства). Поддержка непрерывной интеграции и доставки.
Инструменты тестирования и качества, обеспечивающие контроль качества ИС.
Инструменты управления конфигурациями и инфраструктурой, поддерживающие развертывание и эксплуатацию.
Инструменты мониторинга и эксплуатации. Для поддержки уже работающих систем.
Инструменты безопасности, обеспечивающие защиту ИС и данных.
Инструменты поддержки пользователей (ITSM). Для эксплуатации и поддержки внедренных систем.
Современный стек инструментов, интегрированный в экосистему формирует ландшафт, который автоматизирует рутину, обеспечивает контроль качества и скорости, позволяя командам сосредоточиться на создании ценности для пользователя. Выбор конкретного набора зависит от размера команды, стека технологий, бюджета, выбранной облачной стратегии и прочего.
В следующей части мы рассмотрим основные сложившиеся подходы и классификации, характеризующие организацию ИТ-производства. В дальнейшем это поможет нам диагностировать сложившиеся процессы и конструировать успешные модели для ИТ-индустрии.
