Телефонный звонок. Трубку берет отец трех дочерей и слышит:
— Это ты, мой лягушонок?
— Нет. Это хозяин пруда.

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

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

Я не говорю о бас-факторе (назовем его БФ первого рода, или БФ-1, в честь клея), который полностью спровоцирован дегенеративным дядькой, боящимся потерять работу, и оттого пишущем нечитаемый, только ему одному (им вдвоем с поллитрой) понятный, запутанный код. Если любой разработчик в команде не может, или не желает, объяснять свой код коллегам — его надо не просто выгнать, а повесить на позорном столбе перед воротам в ойти, чтобы всяк сюда входящий видел и знал, что бывает с такими вот саботажниками.

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

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

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

Тут на горизонте появляются инфоцыгане, наподобие Мартина и Фаулера (pun intended), которые обещают, что чистый код — панацея, решающая любые проблемы недопонимания, исцеляющая репозиторий и вообще всячески прочищающая карбюратор. Хех. Возьмите любую реализацию криптографии на эллиптических кривых и попробуйте упростить ее чистым кодом. Обещаю, что буду носить вам апельсины в Скровцова-Степанова все десять лет вашего рехаба.

Все разработчики делятся на две категории: тех, кто полагает, будто действительно сложные задачи давно решены опенсорсными библиотеками, не нужно изобретать свои велосипеды,… и тех, кто уже нет. В любой отрасли, кроме печати онлайн-магащинов под копирку, полно́ нерешенных задач. Которые можно прототипно решить в лоб прямо сейчас, но если бизнес окажется успешным — их придется решать по-настоящему.

«Давайте от входа запендюрим в наш магазинчик на три покупателя кафку и постгрес на три инстанса в разных регионах» — так себе вариант пути к успеху. Если вас не финансирует лично Греф, конечно. Кубер, оказывается, не решает задачу горизонтального масштабирования, если в кластере присутствует хоть какая-то связность. Сто тысяч параллельных потоков (гринтредов, корутин, горутин, процессов) — не слишком-то просто отлаживать. 3rd parties начинают чудить в самый неподходящий момент. И так далее.

Тут, как гласит старинная шарада, дорога раз-два-яйца. Если у вас в команде нет инженера(-ов), способного придумать архитектурное решение и реализовать его — происходит окостыливание вплоть до следующего факапа. Если таких инженеров несколько — они набрасываются на проблему со всех сторон, решают ее, верифицируют решение, и телега катится дальше. Обычно, к сожалению, если таких инженеров и есть, то их — один. Чтобы архитектурно правильно решить сложную задачу, бывает необходим такой сплав компетенций, опыта, интеллекта и практических навыков, что решение получается немного кхм… непростым. Но верным, при том.

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

В БФ-2 ведущий инженер не виноват, а случаи такого плана — возникают гораздо чаще, чем саботаж, и нас не учат, как с ними справляться. Вообще говоря, этот текст — чуть ли не первый в интернете, в котором оба типа не лепятся в одну кучу. БФ-1 довольно просто вылечить, потому что там одно узкое место: саботажник. Которого можно исправить, выгнать, отлупить розгами — что-нибудь да поможет. В случае БФ-2 место отказа — вся команда, включая менеджеров и лида, если таковой есть (да, так бывает, что прекрасный лид не в состоянии понять сложное решение, он не для того рос).

Что делать в этой второй ситуации — неясно. Я регулярно вел курсы прямо на рабочем месте: ситуация зеркальная. Кому-то лень, кто-то не тянет, у кого-то голова другим занята. Да и козырное «какие еще курсы от коллеги бесплатно, курсы — это говорящая голова и интернете задорого» — никуда не девается.

Я привозил в офис митапы и устраивал внутренние TechTalks. — Ровно то же самое. Во славу Парето 20% коллег ничему учить практически и не нужно, а 80% — учиться не хотят. Что делать в такой ситуации? Как победить апатию, активное стремление избежать ответственности, нежелание развиваться, если за это сразу не выписывают чек?

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

Когда конторы en masse поймут, что на одного синьёра должно приходиться три-пять мидлов, и примерно 10 джунов, — БФ-2 исчезнет сам собой. Но когда вокруг одни грёбаные синьёры, получившие лычку просто за выслугу лет, а не за решения, — пиши пропало.

А вы что думаете?

Комментарии (24)


  1. Keeper22
    01.12.2025 08:00

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

    Sic!


    1. spqr_voldi
      01.12.2025 08:00

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


      1. cupraer Автор
        01.12.2025 08:00

        Гвидо и Брендан пробовали, и результат им не понравился. Только у Расмуса получилось.


  1. Biga
    01.12.2025 08:00

    Настоящий профессионал всегда счастлив рассказать ...

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


    1. cupraer Автор
      01.12.2025 08:00

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


      1. vkni
        01.12.2025 08:00

        Так может ключи подавать и лучше? Жизнь одна, эти обезьяньи дрязги очевидны и противны до нельзя.

        Вы читали «Made at Intel»? Отличная серия — читаешь это и думаешь, ну какое счастье, что я не в этом бабуиннике.


        1. cupraer Автор
          01.12.2025 08:00

          Не читал, но после вашей рекомендации почитаю. А так-то да, конечно, лучше, тут и говорить не о чем.


          1. vkni
            01.12.2025 08:00

            Ещё очень интересный коммент к автору цикла — https://habr.com/ru/articles/967252/comments/#comment_29126008 по-поводу ИИ и начальства:

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

            Господи, наконец-то мы можем показать этим умникам их место в общем бараке!

            Здесь, кроме экономического мотива, звучит яркая нота мести. Услышьте ее.

            Да, это ловушка. Да, кончится это все плохо. Но ближайшие несколько лет начальство будет действовать именно в этой парадигме.

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


  1. vkni
    01.12.2025 08:00

    (да, так бывает, что прекрасный лид не в состоянии понять сложное решение, он не для того рос)

    Я был в такой ситуации примерно два года назад — сделал довольно сложное решение сложной проблемы (язык С++, что не добавляет прозрачности), дальше диалог:

    — Пожалуйста, отрецензируйте PR.
    — Я не понимаю решения.
    — Давайте я расскажу, как оно устроено.
    — У меня нет времени на то, чтобы разобраться.


    И вот что в такой ситуации делать, если скандал разводить не хочется?


    1. Keeper22
      01.12.2025 08:00

      Менять тимлида рецензента.


      1. vkni
        01.12.2025 08:00

        Я как-то с трудом удержался от фразы «ты вообще понимаешь, что несёшь?». Пикантность ситуации заключалась в том, что в группе тогда было 2 человека — я и TL.


    1. cupraer Автор
      01.12.2025 08:00

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

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


      1. vkni
        01.12.2025 08:00

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


  1. vkni
    01.12.2025 08:00

    Когда конторы en masse поймут, что на одного синьёра должно приходиться три-пять мидлов, и примерно 10 джунов, — БФ-2 исчезнет сам собой. Но когда вокруг одни грёбаные синьёры, получившие лычку просто за выслугу лет, а не за решения, — пиши пропало.

    А вы что думаете?

    А мы думаем, что надо ждать, пока вас разбанят. Так, сама по-себе, ситуация несколько сложнее, чем нарисована:

    1. Случай БФ-2, когда «все остальные едут по встречке», может, например, означать, что решать задачу и не нужно. Например, контора уже и так «too big to fail», или изменения должны быть косметическими, чтобы клиенты не переучивались, или ещё что.

      Например, из общих соображений о движении к монополизации (см. книгу «Империали́зм, как вы́сшая ста́дия капитали́зма. Популярный очерк») следует, что маленькие конторки оказываются съеденными гигантами, а тех сеньоры за выслугу лет вполне устраивают.

    2. Да, безусловно, двум медведям в одной берлоге ужиться сложно, если они ещё и думать об этом не хотят. Но ведь и прекрасный ведущий — это тоже не Господь Бог. Вы вот отмечали ситуации, когда вы со своими идеям были неправы, а ваше начальство право? Я вот отмечал такое периодически в отношении себя.

    3. У наших американских коллег есть замечательная тенденция «продать». Если рассматривать с плохой стороны, то это «впаривание», а если с хорошей стороны, то это «детальное рассмотрение интересов аудитории» и «умение продвигать идеи».
      То есть, когда вы рассказываете про технологию условному Васе, можно попробовать изучить его интересы (цЫнично — нихера не делать, и получать з.п., чтобы не выгнали), и попробовать изложить так, чтобы эта скотина заинтересовалась сразу.

    4. Как мы знаем, настоящие сеньоры стараются писать как можно более простые решения (потому, что они же наиболее модифицируемы — усложнить любой дурак сможет). Короче говоря, обычно у сеньора код получается очень даже отчуждаемым. Т.е. истинный профессионал в кап. обществе работает себе во вред — часто «мавр сделал своё дело, мавр заменён на джуна». Поэтому, возможно такое, что уважаемый ведущий специалист немного недопроработал решение?

    С другой стороны, статья безусловно интересная, разбивку на БФ-1 и БФ-2 я действительно нигде не встречал. Темы подняты интересные. Ждём разбана.


    1. cupraer Автор
      01.12.2025 08:00

      Хабр в своей третьей лиге по технической части; сценарий «автор с 40 публикациями написал текст в песочницу» отрабатывается вот так:

      Могу, да не могу
      Могу, да не могу

      Но лишь спустя сутки мне возвращают право написать гадость в комментариях.

      Ладно.

      Случай БФ-2, когда «все остальные едут по встречке» […]

      Это не тот, случай, который я пытался описать. БФ-2 едет по своей полосе, проблема в том, что попутного потока нет. И когда БФ-2 проколет шину, или завязнет в грязи, — ему в помощь будет запаска, домкрат и та самая едрёна матерь.

      двум медведям в одной берлоге ужиться сложно

      Опять не то. Два медведя (на личном опыте) уживаются волшебно, я даже целый абзац^W предложение этому посвятил: «Если таких инженеров несколько — они набрасываются на проблему со всех сторон, решают ее, верифицируют решение, и телега катится дальше.»

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

      Конечно. Тысячу раз. И еще десять раз прав был я. И начальство приходило спустя неделю с побитым видом: «Что ты там говорил про второй независимый кластер при роллинг апдейтах этого грёбаного кубера?».

      замечательная тенденция «продать»

      С «продать» у меня никогда не было проблем. Будь я потвердолобее, и не пытайся я вникнуть в то, что там лопочет начальство, соотношение из предыдущего примера было бы 50:1050, а не 1000:100 (запах ФИДО случаен).

      Я не про это. Я про ситуации, когда объективно прав ведущий инженер. Но если пойти предлагаемой им дорогой, то скоро бас-фактор станет домокловым и нависнет угрожающе. А если пойти другой дорогой — бизнес начнет терять деньги.

      настоящие сеньоры стараются писать как можно более простые решения

      Когда это возможно — разумеется. Ключевое слово — «стараются». Но ведь не зря Менкен (эту сентенцию часто приписывают Артуру Блоху) однажды сказал: «For every complex problem there is an answer that is clear, simple, and wrong.».

      возможно такое, что уважаемый ведущий специалист немного недопроработал решение?

      Конечно. Но по условиям задачи эта ситуация выходит за рамки обсуждения.


      1. vkni
        01.12.2025 08:00

        Это не тот, случай, который я пытался описать. БФ-2 едет по своей полосе, проблема в том, что попутного потока нет. И когда БФ-2 проколет шину, или завязнет в грязи, — ему в помощь будет запаска, домкрат и та самая едрёна матерь.

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

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

        Я не про это. Я про ситуации, когда объективно прав ведущий инженер. Но если пойти предлагаемой им дорогой, то скоро бас-фактор станет домокловым и нависнет угрожающе. А если пойти другой дорогой — бизнес начнет терять деньги.

        Но ведь ваша пирамида не способствует этому бас-фактору?


        1. cupraer Автор
          01.12.2025 08:00

          мне не очень понятно, как вообще получается так, что ведущий инженер работает один

          По-разному бывает. Было двое, один уволился по не зависящим от вселенной причинам, — пока второго найдешь, обязательно свалится задачка. Или как у Вознесенского, «пусть мой напарник певчий, // забыв, что мы сила вдвоем, // меня, побледнев от соперничества, // прирежет за общим столом».

          ваша пирамида не способствует этому бас-фактору?

          Минимизирует, скажем так. Но есть вещи, я настаиваю на этом, которые не то, что вчерашнему джуну — триста лет синьёру не объяснишь. Даже если он старается понять.


          1. vkni
            01.12.2025 08:00

            Но есть вещи, я настаиваю на этом, которые не то, что вчерашнему джуну — триста лет синьёру не объяснишь. Даже если он старается понять.

            Ну тогда есть авторитет и ответственность. Вот человек, вот его слово, вот его действия по исправлению, если он был неправ.

            Но, если честно, хотелось бы примера таких вещей. Не то, чтобы я не мог сам о таких рассказать — я рассказал выше, но интересен контекст.


            1. cupraer Автор
              01.12.2025 08:00

              хотелось бы примера таких вещей

              Из входящего потока значений примерно в 100к/сек некоторые случайным образом искажены. В режиме реального времени необходимо минимизировать риск проникновения такового значения внутрь системы.

              Для вышеозначенной проблемы необходимо определить ① что мы считаем выбросом, ② как мы удаляем выбросы, ③ как восстанавливаемся от многих выбросов подряд, ④ что считается «приемлемым риском», ⑤ как мы обнаруживаем проникновение выброса в систему, ⑥ как откатываем изменения, вызванные проникновением выброса, ну и так далее.

              На пальцах это можно объяснить даже продажнику. Код восстановления после сбоя — поймет с листа несколько человек в мире. Наверняка можно было написать просто и понятно, на радость Мартину с Фаулером, но я осилил хоть как-то, и оно даже работает. Но как оно работает — не понимал никто, пока не пришел толковый джун, который меня усадил рядом и трое суток задавал мне вопросы по коду.


              1. vkni
                01.12.2025 08:00

                Код восстановления после сбоя — поймет с листа несколько человек в мире.

                Ну и ладно.

                Но как оно работает — не понимал никто,

                Ну вы-то понимали? Нормальный такой процесс рецензирования сложного кода — садитесь рядом, проходите через код, дальше две подписи и всё. Неоднократно делал. Да, очень утомительно.

                Но вы вообще заметили, что рецензирование кода — вещь вообще неблагодарная?


                1. cupraer Автор
                  01.12.2025 08:00

                  садитесь рядом, проходите через код

                  Ну да, в результате с джуном так и получилось. Но без его желания это было бы невозможно. Тут играет роль тот факт, что мне скучно и тесно в бигкорпах, я предпочитаю стартапы (не те, конечно, где пиццу в офис на третьи сутки кодирования заказывают, но все-таки и не где «две подписи и всё»).

                  рецензирование кода — вещь вообще неблагодарная?

                  Ерунда какая. Самые ценные уроки по любимому языку я получил от Жозе (автора языка) — в дискуссиях к моим предложениям по улучшению. Я сам иногда больше комментариев пишу, чем было рецензируемого кода.

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


              1. vkni
                01.12.2025 08:00

                P.S.
                Спасибо за объяснения. Понятно, в общем!


  1. yappari
    01.12.2025 08:00

    А вы что думаете?

    Мы думаем, что интересно было бы увидеть статистику, сколько из десяти джунов - толковых.


    1. cupraer Автор
      01.12.2025 08:00

      «Статистики» у меня нет, конечно. По собственному опыту — могу экстраполировать. Если джунов набирать не пучком по три рубля, а через стажировку — бо́льшая половина. На стажировку иногда не хватает дальновидности руководства и свободных денег — тогда из десяти — шесть-восемь остаются после испытательного срока и из них вырастают три-четыре — прям толковых.