Pull to refresh

«Смерть Бога» или крах общепризнанных законов построения ИТ-команд и создания ИТ-систем в 21 веке

Reading time10 min
Views5.1K
«Бог умер», Gott ist tot (1881) Ницше — фундаментальная метафора постмодернистской философии.
Основная идея заключается в отказе от унаследованных моделей поведения и способов восприятия реальности, которые являются основой, текстуальным, культурным составом нашего «Я». В философии формирование данной концепции заняло тысячи лет, в мире информационных технологий хватило пятидесяти.

В недалёком прошлом многие процессы были ручные, а пытливые умы их упорядочивали и автоматизировали. Для этого разрабатывались методики и средства, формулировались законы, были написаны сотни книг. Эти методы и практики были достаточно эффективны и приносили свои плоды. Но уже в начале 21 века человечество пришло к тому, что большинство процессов уже автоматизированы, а в ближайшем будущем можно будет сказать, что 100% процессов будут обслуживаться системами, поэтому задача создания инноваций и новых систем усложняется. Необходимо улучшать и упорядочивать уже существующие и “стройные” системы и процессы, и это иногда кардинально меняет подходы и практики для достижения результата, а именно повышения их скорости, качества и эффективности.

Я много лет использовал законы и правила, которые буду комментировать ниже по тексту. Есть интересные обзоры многих из них: “Основные законы создания команд разработчиков”, авторы книг и публикаций часто ссылаются на них, аргументируя то или иное принятое решение. Более того, они мне также нравятся. Для моей практики в большинстве случаев они работали, но в последние годы многие подходы начали “пробуксовывать”, именно по описанным мною выше причинам.

Хорошо систематизировал законы Антон Семенченко в презентации “Законы создания IT команд и следствия законов для IT проектов «на пальцах». Я точно не уверен в первоисточнике, поэтому не ссылаюсь не него тут, но любой поисковик покажет и видео и презентационные материалы этого автора по заголовку статьи. Мне понравилась его структуризация по времени, и я буду использовать именно её, некоторым образом перекликаясь с Антоном.

Далее по тексту я буду повторять закон, чтобы не отсылать читателя в интернет и делиться своими мыслями по его применению в текущей ситуации.

Дифференциация и интеграция систем по Герберту Спенсеру (1857)


Дифференциация — разделение в процессе эволюции однородной системы (биологические организмы, представители определенной профессии и т.п.) на две или несколько групп, отличающиеся по своим параметрам. При этом подобное дробление может иметь несколько иерархических уровней. Существует и обратный процесс интеграция – объединение отдельных дифференцированных частей в целое – в том числе путём перехода к надсистеме.

Деление на аналитиков, разработчиков, архитекторов, тестировщиков, менеджеров в последние два десятка лет позволило унифицировать процессы разработки программного обеспечения, обеспечить взаимозаменяемость персонала. Был создан производственный конвейер, но цена данной унификации, следующая: разработчики, зачастую, слабо понимают в предметной области, обладают узкими навыками, ограниченными своей специализацией; аналитики не владеют скилами разработки, их постановки задач адаптируются к возможностям разработки, а не формируют и отражают реальные требования заказчика (бизнеса). Далее, в тестирование, вовлекаются другие сотрудники, которые также не имели отношения к постановке задачи и могут не понимать источник требований заказчика, и так далее. Это все существенно увеличивает стоимость разработки, уменьшает вероятность того, что заказчик получит нужное решение по оптимальной цене. Конечно, так бывает не всегда, и я немного утрирую, чтобы передать основную мысль. В прошлом веке (звучит забавно из уст мастодонта) один человек легко совмещал роль архитектора, аналитика, разработчика и тестировщика, понимая, что хочет заказчик и как это можно реализовать. Процесс создания программного обеспечения при этом распараллеливается не по ролям, а по функционалу. В Agile происходит возврат к этому подходу и роли объединяются.

Общий закон энтропии Клаузиуса (1865)


Энтропия — это мера неупорядоченности, которая увеличивается со временем.
Многие любят приводить этот закон и делать многозначительные выводы из него на примерах команд и проектов. Делается вывод, что всё естественным образом стремится к беспорядку. Поэтому нужно прикладывать много усилий для сохранения порядка и организации процессов.

Это не так. Подменяются изначальные понятия. Второй закон термодинамики связан с процессом превращением энергии, где он работает, а не деятельностью человека. В природных системах всё наоборот стремится к автоматическому упорядочиванию. Это результат эволюции. Посмотрите на природу, она гармонична и упорядочена. Автоматизация и информационные технологии это тоже процесс эволюции. Процесс не может быть хаотичным, найдётся кто-то, который его упорядочит, либо процесс умрёт.

Итого, всегда найдётся лидер группы, который её организует и направит. Поэтому основная задача социума находить таких лидеров, развивать их и обеспечивать им поле для деятельности.

Законы Паркинсона (1955)


  • Работа заполняет все время, выделенное для ее выполнения. Менеджер стремится множить подчинённых, а не соперников. Менеджеры создают друг другу работу.
  • Расходы растут с доходами.
  • Рост приводит к усложнённости, а усложнённость — это конец пути.

Данные законы применимы к бюрократическим системам, поэтому если избавляться от них в ИТ, то проблемы не будет де-факто. В стартапах все работают гармонично, эффективно и нацелены на результат. Не создавайте департаменты ИТ, бюджетные ИТ-монстры. Только открытый рынок и конкуренция — это критерий успешности ИТ-отрасли.

Магическая семерка Миллера (1956)


Кратковременная человеческая память, как правило, не может запомнить и повторить более 7 ± 2 элементов.

Опираясь на этот закон, его адепты ограничивают численность команд не более 7-9 человеками. Я совсем не люблю психологов, как и HR, поэтому все их изыскания — это поиск и описание закономерностей там, где они отсутствуют.

Можно найти много всякой нумерологической литературы на эту тему, но она никак не связана с количество человек в команде. Их должно быть ровно столько, сколько необходимо, чтобы декомпозировать и выполнить задачу в срок. Это может быть и три человека, а может быть и двадцать человек.

Возможно, в 1956 управлять 20 сотрудниками было сложно, но в 2019 технологии упростили этот процесс, поэтому создавайте команды любого размера, которым может управлять ее лидер и привести её к результату.

Закон Конвея (1968)


Закон гласит, что организации, проектирующие системы, производят их, копируя структуры коммуникации, сложившиеся в этих организациях.
И его обратная сторона: предприятия, использующие программные системы ограничены структурами коммуникации, которые копируют эту систему.

Однако современные организации строят свой бизнес не на организационной структуре, а на бизнес-процессах, которые, в свою очередь, очень быстро меняются и адаптируются к внешним факторам. ИТ-системы и структура компаний стали динамичными и гибко перенастраиваются под такие вызовы. Организации, которые не адаптировались к гибкому изменению процессов, постепенно исчезнут, не выдержав конкуренции.

Принцип Питера (1969)


В иерархической системе каждый индивидуум имеет тенденцию подняться до уровня своей некомпетентности.

Несомненно, в классической вертикали сотрудник двигается к своему уровню некомпетентности и останавливается, но иерархические структуры, карьерные лестницы показали свою ограниченность по сравнению с более гибкими организационными структурами, поэтому не создавайте монстров, и “да прибудет с вами сила”.

Закон Брукса (1975)


Добавляя человеческие ресурсы, мы задерживаем окончание проекта.

Основная аргументация состоит в том, что новых членов команды необходимо обучать, погружать, что отвлекает основных участников команды и, наоборот, замедляет процесс разработки. Есть общепризнанная фраза, что погружение нового сотрудника занимает, в среднем, полгода, и только после этого срока он начинает давать конкретные результаты.

Но это также неверно, как и верно. Закон работает, если мы рассматриваем неработоспособную команду, которая итак не успевает делать необходимые задачи в срок, а им менеджмент вбрасывает ресурсы, предполагая, что этот способ принесёт результат. В современных компаниях, состоящих из мотивированных профессионалов, с хорошими лидами, правильно разделёнными ролями, грамотными владельцами продукта, налаженной системой адаптации новых сотрудников, добавление или замена новых членов команды происходит гибко и увеличивает эффективность и скорость результата. Безусловно, что бесконечное расширение команды невозможно, и оно связано только с возможность декомпозировать текущие задачи. В какой-то момент бэклог прийдёт к минимальной гранулярности в распараллеливании задач между командой.

Итого, можно сделать следующий вывод, в “правильном” улие, c “правильными” пчёлами его расширение увеличит количество производимого мёда.

Энтропия открытых систем по Герману Хакену (1977)


Немецкий физик-теоретик занимался изучением открытых систем и их стремлению к самоорганизации, о превращении хаоса в порядок, синергетике.

Прикладное применение теории, как и у Клаузиуса, больше рассматривалась в физике, а именно на электронах, атомах, молекулах, нейтронах, фотонах, но, поскольку каждый физик и математик в душе философ, он экстраполировал свою теорию на людей и животных.

Сложно спорить с теорией самоорганизации, и с данных постулатом я полностью согласен. Тут больше вопрос применимости физической теории к социальным процессам. Открытость систем это, безусловно, основной путь к их эффективности с точки зрения гибкости изменений.

Закон органического роста Кристофера Александера (1977)


Закон органического роста формулировался для архитектуры и основан на использовании вместо генерального плана — мета-плана, состоящего из трех частей:
  • философии постепенного роста;
  • набора шаблонов или общих принципов дизайна, регулирующих рост;
  • локального влияния на дизайн тех, кто занимает пространство.

Объекты постепенно эволюционируют и посредством многочисленных лёгких изменений превращаются во взаимосвязанные сообщества. Используя общие принципы, они сохраняют внешнюю гармонию, но не становятся одинаковыми.

Звучит здраво, и, однозначно, можно использовать подход в мире стартапов. Мечта сотрудника – офисное пространство спроектировано в фундаментальной гармонии с характером человеческого существа и позволяют человеку быть человеком, подчёркивает его существо – он становится одновременно и индивидуумом, и участником группы.

Но в больших компаниях всё обстоит не так романтично, а прагматично и экономично. Все оптимизируют расходы, используют оутсорсеров, поэтому современная команда это территориально распределённая группа людей, объединённая технологической платформой, в которой каждый индивидуум может находиться в совершенно различных условиях. Философия роста определяется только наличием средств для формирования таких команд и создания условий приёмки выполненных работ у каждого её члена.

Закон Дэвида Парнаса (1979)


Как правило, системы ПО не работают хорошо, пока они не были использованы, и не раз, в «боевых» условиях.

ИТ-адепты пытаются применять любые законы и выводы, связанные с разработкой ПО, к абсолютно любой области своей жизни. В части команд, это выглядит примерно так: новая команда, собранная из незнакомых членов, будет работать менее эффективно, чем уже сработавшаяся. Торжество очевидности. Опытный повар, лучше, чем новичок. Профессиональный спортсмен, лучше, чем любитель. Практический толк от этих формулировок почти отсутствует.

Закон Хофштадтера (1980)


Всегда потребуется больше времени, чем вы ожидаете, даже если вы знаете закон Хофштадтера.

Оценка сроков, стоимости проекта, работ, задач это всегда нетривиальный процесс, в котором точность определятся соглашением сторон. И будут правы обе стороны, которые формируют сроки и те, которые с ними не соглашаются. В рыночных условиях оценка сроков это зафиксированная договорённость между исполнителем и заказчиком.

Принцип разбитого окна Уилсона Келлинга (1982)


Если в здании разбито одно стекло, и никто его не заменяет, то через некоторое время в этом здании не останется ни одного целого окна.

С точки зрения команд и организаций, несоблюдения участниками принятых норм поведения провоцируют остальных так же забыть о правилах. Однако, бытовое утверждение: “анархия – мать порядка”, которое на слуху у многих, лишь подтверждает одно из предыдущих утверждений о стремлении систем к автоматическому упорядочиванию. На месте отвергнутых норм возникают другие правила и законы и система стабилизируется. Если в здании не нужно поддерживать порядок, в общепризнанном смысле, у него отсутствует хозяин, значит, знание придёт в негодность, разрушится или у него должен появиться новый хозяин, который наведет и будет поддерживать в нем порядок.

Закон Голла (1986)


Сложная рабочая система неизменно получается из простой рабочей системы. Сложная система, разработанная с нуля, никогда не работает. И никакие улучшения не заставят ее работать. Начинать следует с простой рабочей системы.

Очень спорное утверждение, применимое к технологиям и подходам прошлого столетия. Любая новая современная система будет сложной, поскольку наш мир стал технологически развитым. И многие из них создаются с нуля. В результате, большой процент систем умирает, но часть из них “выстреливают” и становятся успешными.

Закон Иерархических Компенсаций Седова (1988) и закон энтропии команд по Назаретяну (1991)


“Действительный рост разнообразия на высшем уровне обеспечивается его эффективным ограничением на предыдущих уровнях.”

“Закон Седова” в формулировке Назаретяна: В сложной иерархически организованной системе рост разнообразия на верхнем уровне обеспечивается ограничением разнообразия на предыдущих уровнях, и наоборот, рост разнообразия на нижнем уровне разрушает верхний уровень организации, то есть, система как таковая гибнет.

Существует мнение о том, что действие Закона Седова ограниченно естественным порядком самоорганизации систем, то есть таким способом их построения, когда лица, обеспечивающие построение системы, не предпринимают целенаправленных усилий, предназначенных для обхода действия этого закона. Другими словами, действие Закона Седова может быть ограничено искусственным образом, хотя и не остановлено совсем. Кроме того, есть серьёзные основания полагать, что Закон Седова не распространяется в полном объёме на сверхбольшие системы.

Классическое понимание данных законов означает, что развивать функции и структуры, находящихся на более высоких уровнях систем, возможно только с ограничением структур нижележащего уровня. Далее, происходит балансировка составных частей, и системы в целом. Но, к сожалению, классические подходы к построению команд, ведения проектов пересматриваются многими организациями в пользу Agile подходов, где ограничения к структурам нижнего уровня убираются и это приносит повышения качества и результативности, как на уровне команд, так и для всей структуры.

Agile манифест (2001)


Люди и взаимодействие важнее процессов и инструментов
Работающий продукт важнее исчерпывающей документации
Сотрудничество с заказчиком важнее согласования условий контракта
Готовность к изменениям важнее следования первоначальному плану

И тут все “не слава Богу”. Agile это как строительство коммунизма. Если нет веры у всех участников, то получится только хуже.

Число Данбара (2010)


Число Данбара это ограничение на количество постоянных социальных связей, которые человек может поддерживать. Это число определено как 150 через экстраполяцию отношений среди обезьян на людей.

Обычный пример, который приводится это круг близких друзей, воинские формирования, что не очень сильно связано с управлением распределёнными командами с помощью технологических платформ. Социальные сети и развитие мобильных устройств, платформ ставят под сомнение данное утверждение.

Законы Келли (2015)


Масштаб ПО всегда будет увеличиваться пропорционально имеющимся ресурсам,

Внутри каждого большого проекта в области разработки есть маленький побочный проект вне основной задачи.

Глобально, в бюрократическом аппарате, государственном управлении это безусловно так. Система будет себя нагружать, оправдывать свое существование, придумывать себе работу, поскольку, в общем случае, она не ориентирована на конечный результат. Но мир ИТ это мир творческих свершений, инноваций, независимости. В этом мире каждый может быть творцом, поэтому в нем при встрече с данными явлениями, определяемыми данными постулатами, нужно избавляться любых их проявлений.

Итого:


На текущем этапе развития методик и технологий производства ИТ-систем все предыдущие каноны и верования можно отрицать, усомниться в их эффективности, но при этом не нужно забывать искать что-то новое. Сейчас, по сути, наступает эпоха постмодернизма в мире создания информационных систем.

Пробуйте, экспериментируйте, берите на себя ответственность, меняйте “неизменяемое”, делитесь опытом с окружающими, и будущие поколения воспользуются вашим примером в новом эволюционном рывке.
Tags:
Hubs:
-1
Comments10

Articles