Зачем нужно столько разработчиков?

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


    Для наглядного пояснения представим себе, что наш проект это корабль. Который мы уже некоторое время назад спустили с верфи, и он плывёт, радуя наш взор своим изящным профилем, а наш карман — золотыми дублонами. И вроде бы всё хорошо, но почему-то ему требуется куча людей только на то чтобы продолжать плыть. А хотелось бы, чтобы они вместо этого строили новые корабли….



    Какие у нас возникают проблемы при условии, что проект не развивается (в скобках будет пояснение технического аспекта проблем). Написано не в порядке приоритетов, а как попало:


    1. Корабль пущен и плывёт, но у него есть небольшие течи. То камбуз затопит, то товар за борт вывалится, то рыба заплывёт. Казалось бы, это не критично, но лишает нас постоянно прибыли. (Баги, без них не обходится никакой проект. Нужны люди, которые будут их править).
    2. Законы акватории, в которой мы плаваем, часто меняются. И если их не читать и не приспосабливаться к ним, то рано или поздно с очередного причала раздастся залп, который разом разнесёт наш корабль в щепки. (Даже при условии, что ваш бизнес абсолютно легален, законодательство динамично меняется и добавляются новые требования, которые порой технически сложно реализовать. А без реализации можно огрести такие штрафы, что они мгновенно потопят проект).
    3. Периодически на корабль нападают пираты. У кого-то из них из вооружения есть только дрессированный дельфин с ятаганом, но если ваш проект реально большой, то рано или поздно приплывут тяжёлые галеры, вооружённые настоящими пушками. Отдельный нюанс состоит в том, что в мирное время вы спокойно пускаете их на борт, и они имеют возможность полностью знакомиться с вашим вооружением и оснасткой. А ещё они могут изучать вашу оснастку отдельно на суше, и при доле удачи имеют возможность дистанционно подорвать на вашей палубе вашу бочку с порохом. (Хакеры не дремлют, они могут изучить ваш проект, найти уязвимости в нём или его компонентах, и нанести вам огромные материальные потери. Для защиты от этих угроз требуется постоянная напряжённая работа разных специалистов).
    4. На суше часто случаются различные катаклизмы, и спрос на ваши товары меняется. Может случиться, что когда вы придёте в порт очередной раз, то бодрые грузчики накидают вам столько товара, что под его тяжестью корабль просто медленно уйдёт на дно. (Под действием различных факторов, вроде той же “чёрной пятницы”, вы можете получать сильные всплески нагрузки. Если вы к этому не готовы, то вы не только не получите профита, но и потеряете стандартный заработок и понесёте репутационные потери).
    5. Часть оснастки корабля работает согласно гороскопу, который составляет бортовой шаман. К сожалению, он часто закладывает за воротник, да и в лучшие свои дни не может видеть будущее дальше, чем на месяц вперёд. И порой бывает так, что на середине маршрута вы понимаете, что парус внезапно порвался, а порох отсырел. (Современные системы взаимодействуют с большим количеством внешних поставщиков и сервисов. И у них часто бывают свои проблемы. Нужно оперативно их отслеживать и иметь резервы на все критичные точки отказа).
    6. Будем реалистами. В море бывает разная погода, и иногда просто случается шторм. Конечно, у вас есть специально обученная летучая рыба, которая стоит в элитном аквариуме в каюте капитана, и ценится за то что умеет пучить глаза перед грозой — но, к сожалению, она тоже не всеведуща. (Сколько бы у вас ни было метрик, девопсов, дашбордов и прочего мониторинга — иногда что-нибудь просто падает. От этого ни застрахован ни гитлаб ни AWS ни любое чудесное облачное решение. И после этого нужно, чтобы были люди и возможность всё оперативно поднять обратно).
    7. Часто кажется, что раз корабль плывёт по одной воде, то значит может поплыть и по другой без каких-либо усилий и изменений. Часто капитан осознаёт ошибочность этого решения, только заметив, что вместо воды за бортом плещется кислота, а штурман матерится в весь голос, пытаясь вырулить между Сциллой и Харибдой. (Часто небольшие продуктовые изменения выливаются в сложные технические задачи, масштаб которых недооценивается. Например, вы всю дорогу считали цену товара в рублях. Решили добавить копейки. Что может пойти не так?)

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


    Так вот — зачем вам такая большая команда, которая казалось бы пилит полторы фичи в месяц, а основное время, судя по всему, пьёт смузи и ругается по невнятным поводам?


    1. Вы стараетесь оснастить ваш корабль новейшим оборудованием, но постоянно возникают мелкие досадные проблемы — торпеды не запихиваются в жерла пушек, для турбин нет места, а эхолокатору почему-то требуется электричество. Команда бунтует и требует месяцы на изменения конструкции. Бунт подавляется, пушки рассверливают, эхолокатор запитывают от матросов, которые по очереди крутят педали на динамо машине. (С продуктовой стороны очень сложно оценить порядок работ, которые требуются на изменение в легаси проекте. Порой стоимость этих ребят может даже превосходить потенциальную выгоду. Или проще может быть построить новый корабль).
    2. Есть нюанс. Ваш корабль непрерывно в пути, и вы не можете зайти на верфь. Так что мало того что ваш надо поменять киль — вы делаете это прямо на ходу и порой корабль теряет управление и садится на рифы. Для того, чтобы это случалось реже, вы придумаете процессы, которые делают эти изменения менее болезненными — например, ставите одновременно старый и новый киль. Или меняете по кускам. Но всё это тоже стоит ресурсов. (Когда проект уже в продакшне, любое изменение вам может сломать всё что угодно. Есть много практик, которые помогают это избежать, но все они тоже стоят времени и ресурсов).
    3. Практика показывает, что иногда корабли размножаются. И при этом они живородящие. Иногда сложно заметить, как в трюме появляется и потихоньку вызревает ещё одно судно. В перспективе это прекрасно, так как позволит вам расширить флот и получать ещё больше дублонов. Но если вы не придумали, как вовремя сделать кораблю кесарево, то плод может перезреть и разорвать нутро материнского корабля к чёртовой матери, при этом так же погибнув. (Часто внутри одного проекта развиваются другие, и если не продумать вовремя архитектуру и пути разделения, то это чревато серьёзными проблемами. А если вы это продумали — то это всё равно трата времени и ресурсов).
    4. Когда на корабле несколько человек одновременно что-то делают, то то локтем в ухо заедут, то случайно в воду новую снасть скинут, то поспорят за длину гвоздей. Конечно, всё это решается — но разрешение конфликтов и разных видений тоже требует времени (размер команды имеет накладные расходы на взаимодействие).
    5. Решил ты поменять коврик на палубе. А под ковриком доски гнилые. А доски на ржавом настиле. А настила нового такого же размера нет. А тот который есть — не подходит по размеру к шпангоутам. Для того, чтобы поменять шпангоуты, нужен водолазный костюм, и 30 человек, которые будут воду откачивать. И в процессе этого из тьмы глубин всплывает кракен. (Часто один баг тянет за собой другой, и вроде бы небольшая задача обретает воистину космические масштабы).
    6. Чтобы заменить спасательный круг, нужно поменять носовую фигуру. Иначе руль отвалится. (Все компоненты взаимосвязаны, и рождают неведомую синергию, с последствиями которой тоже приходится бороться).
    7. Если с корабля вдруг исчез матрос, который знал все выражения лица рыбы-предсказательницы, то вы надолго можете остаться без предупреждений о штормах. Выхода два — или прикуйте этого матроса цепями, или учите всех членов команды разбираться в выражении рыбьего лица. (Bus factor. Потеря критичного разработчика может сильно усложнить и замедлить процесс разработки).

    Перечислять можно ещё долго, но боюсь наскучить — надеюсь, что основную идею донести получилось, а дополнительные пункты можно добавить в комментариях. Удачного вам плавания!

    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 19

      0
      радуя наш взор своим изящным профилем, а наш карман — золотыми галеонами


      Стесняюсь спросить, почему ваш карман радуется кораблям?
        0

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

          0
          На дублоны или пиастры!
          Упс, уже.
      • НЛО прилетело и опубликовало эту надпись здесь
          +4
          Куда рыба заплывёт?

          В ноздрю носовой клюз с подруливающим устройством. С вероятностью 99% пострадает только сама рыба, но может и винт треснуть.

          Необычное вооружение для дельфина.

          Плох тот дельфин, который не хочет стать нарвалом…
            0
            Если рыба может заплыть в клюз — кораблю, скорее всего, уже всё равно.
            0
            По-занудствую
            Какая интересная бывает оснастка… и бочка с порохом хранится в необычном месте…

            Оснастка бывает: стоячий такелаж и бегучий такелаж. Неудачное применения того или другого и пролетевшая чайка уронит мачту на палубу.
            Бочки с порохом на палубе: очень хорошо описаны были в «Одисея капитана Блада»
            +3

            Если уж заговорили о сравнении с кораблями, то я бы добавил пункт:
            n) Команда хочет ходить в море, а не сидеть в порту и получать маленькие портовые выплаты, если их добьётся. Все, от рядового матроса до капитана, понимают, что если владелец корабля заметит, что они ничего не делают, либо их можно заменить бригадой, которая раз в год прилетает на вертолете, спишет их в порт. Поэтому большинство старается изобразить деятельность, особенно если это тяжёлый контейнеровоз, которому нужен экипаж из 20 человек, а капитан убедил начальство, что нужно 200. Зато все получают зарплату и занимаются обслуживанием микрокают и непрерывным изменением интерьера.

              0

              Да, в эту сторону тоже бывает. В особенности если корабль бюджетный.

              • НЛО прилетело и опубликовало эту надпись здесь
              0
              Вся прелесть аналогий — «Не можем объяснить про ПО, тогда объясним про корабли и заявим что с ПО тоже самое, и матросы нужны и капитаны, и айсберг борт может пробить».
              По мне такая аналагия была бы удачней — «У нас есть огромный корабль, только то двигатель сам остановится, то штурвал крутишь влево, а корабль идет вправо, то все двери вдруг в стены превратились и все оказались заперты там где есть. А еще переодически откуда невозмись выползают огромные жуки и ломают разного рода системы корабля». Потому что в отличии от корабля работающее ПО не требует сопровождения, команда нужна либо для развития продукта либо для работы над ошибками.
                +2

                К сожалению, работающее ПО может быть постоянно и стабильно работающим только в условии, если оно сферическое в вакууме — или в постоянных условиях эксплуатации.


                Самый простой кейс — десктопное ПО. В этом случае проблем минимум — на него могут повлиять нестандартные настройки пользователя, обновления библиотек, ОС, драйверов и железа.


                Чуть сложнее — ПО для мобильной платформы. Каждый новый апдейт Android и IOS ломает огромное количество приложений самыми причудливыми способами.


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


                Так что на примере ПО мог бы написать всё то же самое, что и с кораблями, с кучей примеров — но будет скучно.

                  +1
                  Потому что в отличии от корабля работающее ПО не требует сопровождения

                  При неизменности внешний условий.

                  Но если вспомнить, что вообще сами компьютеры подешевели и стали доступны только из-за потребностей бизнеса — а требования бизнеса постоянно меняются, конкуренция заставляет постоянно подстраиваться.
                    +3
                    Ага, ага. Даже офигетельно тестируемый nagios-nrpe недавно давал сбой по причине близкой к «неудачный гороскоп». Не успели найти причину, прекратилося.
                    ПО может падать по причине проблем в каждой из тысяч зависимостей. Да и просто потому, что в сети что-то происходит.
                    Даже бинарная совместимость в линукс на больших временных промежутках оказывается не такая уж и совместимость.
                      0
                      отвечу сам себе, а то всем трем не могу)
                      jehy
                      В этом случае проблем минимум — на него могут повлиять нестандартные настройки пользователя, обновления библиотек, ОС, драйверов и железа.

                      может быть, но каков процент такого ПО, где команду поддержки держат НЕ ради развития продукта и внедрения фич, НЕ ради исправления багов, а только ради «Слушайте, а давайте вот тех 30 человек увольнять не будем, вдруг через 10 лет майкрософт выпустит новую ОС и нам надо будет совместимость починить».
                      Если говорить об андройде, то я не могу прокоментировать поломанную обратную совместимость, но в мобильном сегменте чтобы стоять на месте нужно бежать, а чтобы двигаться вперед — бежать в 2 раза быстрее. И вряли держат только команду «а вдруг сломают совместимость».

                      stilic
                      только из-за потребностей бизнеса

                      ну т.е. новые фичи и развитие, то о чем я и сказал)

                      arheops
                      nagios-nrpe это какой-то модуль к nagios? или часть ядра? ну вряд ли nagios попадает под исключения к моему замечанию
                      команда нужна либо для развития продукта либо для работы над ошибками.

                      так как он и развивается и ошибки исправляются да и как я понмиаю open source.

                      Я че хочу сказать, я не могу представить себе что каждому второму разработчику в мире платят за то что он сидит и ковыряет в носу получая деньги за «на всякий случай», они все что-то развивают и чинят, а когда стабильный проект по какой-то причине ломается они по необходимости переключаются на него
                        0

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

                      +4
                      А потом читаешь объявление в портовом баре: требуется десятирукий юнга-шкипер-боцман со знанием навигации, строения и ремонта фрегатов и шхун, трендов по вязке узлов (в том числе и сухопутных), знание артиллерии не обязательно, но приветствуется. Молодая сплоченная команда с миссией, ром и копчености прилагаются.
                        +1

                        опыт замены обшивки бортов во время шторма обязателен, наличие сертификатов НИИ ЧАВО будет плюсом...

                        +1
                        Статья отлично показывает вред аналогий! :-)

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое