Сооснователь Alef Development Стас Гольденшлюгер рассказал, почему программисты теряют работу и дал советы, как этого избежать.



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

Способ №1. Сделать не так, как просил менеджер


Почему так неправильно. Часто менеджер знает о проекте больше, чем программисты. Кроме того, в машине должен быть один водитель: если левыми и правыми колесами управляют разные люди — машина не приедет в назначенную точку в нужное время.

Пример. Менеджер просит сделать комнату с дверью. Но по ТЗ в двери нет ручки, вместо нее педаль. Программист видел в жизни тысячи дверей и решает, что менеджер сошел с ума. Он пытается спорить, а потом делает «правильно». Его увольняют.

Программиста уволили, потому что:

а) это дверь для склада, куда люди заходят с коробками в руках — ножная педаль была главной идеей;

б) клиент — фирма, производящая ножные педали для дверей;

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

Мораль. Читай ТЗ, делай по ТЗ. Если не понимаешь — обсуждай. Если не согласен — спорь. Нельзя молча делать не то, что требуется.

Способ 2. Не тестировать свой код


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

Пример. Программисту нужно в окошке регистрации заменить слово «Ок» на «Зарегистрироваться». Он находит это слово в коде, заменяет его и, не глядя, отправляет на проверку. По проекту пару часов бегают автоматические тесты. Его смотрят тестировщики. Оказывается, новое слово не влезло в кнопку и испортило верстку. Задачу отправляют на доработку. На проверку в сумме ушел целый день.

В программировании есть понятие, пришедшее из радиоэлектроники — «smoke test». Ты запускаешь свой прибор и смотришь, а не пошел ли из него дым. Это самая простецкая проверка. Понятно, что тестирование — дело тестировщиков. Но если программист регулярно допускает «баги невнимательности», то коллектив его уважать не будет.

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

Способ 3. Заниматься посторонними делами в рабочее время


Почему так неправильно. Ты получаешь деньги в обмен на то, что продаешь свое время. Если ты присваиваешь время себе — это воровство.

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

Мораль. Если ты договорился работать на полную ставку — работай на полную ставку. Если есть свободное время — попроси у начальства больше задач и больше денег.

Способ 4. Использовать любимую библиотеку/фреймворк, не посоветовавшись с менеджером


Почему так неправильно. Программист — профессия, подразумевающая умение подчиняться правилам команды. Если ты любишь react, а твой коллега любит программировать на «сочетании чистого JS и личной самоотверженности», то вы все равно должны делать проект на той платформе, которую выбрал менеджер.

Пример. Программист получает задачу: приделать функцию к сайту. И он понимает, что ее можно быстро решить на ReactJS — и не отказывает себе в этом маленьком удовольствии. Через неделю происходит code review, и программиста увольняют, потому что:

а) он забыл заглянуть в соседнюю папку, а там 10 гигабайт кода на Angular;

б) в компании кроме него нет программистов на React  — если он заболеет, то некому будет поддерживать;

в) Angular был требованием клиента.

Мораль. Архитектурные решения, выбор платформ, технологий, фреймворков, библиотек — задача технического менеджера. Если у тебя есть идея — предложи ее. Если решил устроить молчаливое самоуправство — начинай мониторить биржу труда. Не после первого раза, конечно, но если проделать такой фокус два раза, то почти наверняка.

Способ 5. Просить повышение за несколько недель до сдачи большого проекта


Почему так неправильно. Это шантаж.

Пример. Программист в рамках большого проекта сделал библиотеку «для распознавания голоса» — она почти готова, но еще сыровата. Сдача через 3 недели. Другому программисту потребуется месяц, только чтобы разобраться в коде. Программист решает, что сейчас подходящий момент попросить повышение.

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

Если бы программист попросил повышение уже после сдачи проекта, отношение к нему было бы другим. «Мы повышаем, потому что он молодец и сдал проект» — мотивация получше, чем «мы повышаем, потому что он выкрутил нам руки».

Мораль. «Предложения, от которых нельзя отказаться» больше подходят итальянским мафиози, чем программистам.

От редакции


Курсы «Нетологии» по теме:

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


  1. AllexIn
    06.02.2019 17:46
    +10

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

    Почти всегда работаю одновременно на двух работах.
    Как правило это одна основная, которой я выделяю рабочии дни и дополнительная на вечера и выходные.
    Причина проста как три копейки — завтра что-то случилось в компании, и я сижу без работы и без денег.
    Плюс не понятно что такое «рабочее время» в случае удаленки. Я за 10 лет практики не сталкивался с тем, чтобы кто-то назначал удаленщикам фиксированное рабочее время. Есть договоренность, что примерно 40 часов в неделю должно быть потрачено на работу и всё.
    Соответственно ситуация «одновременно аврал, одновременно кидают задачи» просто невозможна.

    P.S.
    Ну и отдельный момент. Программисты не продают своё время. Программисты продают решение задач.
    Я бы жестче сказал про продажу времени, но не буду.


    1. Matisumi
      06.02.2019 18:37
      +1

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

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


      1. AllexIn
        06.02.2019 18:48
        +1

        Я работаю удаленно и только над интересными проектами.
        Трэш вакансии предлагают регулярно, но 80% — офис, еще 15% — мусор.


  1. little-brother
    06.02.2019 17:46
    +14

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


  1. SergeiMinaev
    06.02.2019 17:53
    +3

    то вы все равно должны делать проект на той платформе, которую выбрал менеджер.


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

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


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


  1. SirEdvin
    06.02.2019 17:54
    +7

    Способ №1. Сделать не так, как просил менеджер

    Клик-бейт какой-то получился. По факту "втихую сделать не так, как написано в ТЗ, что бы переделка заняла большое количество времени".


    Способ 2. Не тестировать свой код

    Хах, если бы.


    Способ 3. Заниматься посторонними делами в рабочее время

    Ведь смотреть в код, который компилируется — это так интересно.


    Способ 4. Использовать любимую библиотеку/фреймворк, не посоветовавшись с менеджером

    Серьезно? То есть ладно с фреймворков (хотя синтегрировать два фреймворка обычно довольно сложно), но согласовывать либы с менеджеров — довольно странная идея.


    Мне интересно, а где такие пункты как:


    • Регулярно срывать сроки
    • Писать отвратительный код, который или не работает, или работает так, что бы лучше не работал.
    • Воровать информацию о клиентах
    • Отдавать свою работу на аутсорс
    • Быть токсичным насколько, что начинаешь каждый день с оскорблений.


    1. j8kin
      06.02.2019 18:20

      но согласовывать либы с менеджеров — довольно странная идея

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


      1. SirEdvin
        06.02.2019 18:25
        +1

        Я прошу прощения, но разве лицензия имеет обратную силу? То есть что вам мешает использовать ту версию, что у вас осталась?


  1. defaultvoice
    06.02.2019 17:57
    +3

    Способ 5. Просить повышение за несколько недель до сдачи большого проекта

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


  1. amarao
    06.02.2019 17:58
    +5

    Пока выглядит так, что «делать что сказали и не выделываться». Это разумное требование, которое сотрудник может принять, а может поискать работу, где ему дают больше свободы.

    … А ещё эта статья подразумевает, что менеджер понимает больше программиста в том, что делает программист. Либо у вас такие крутые менеджеры, либо такие тупые программисты.

    … Что вполне вероятно с учётом первого пункта.


  1. DickCancer
    06.02.2019 17:59
    +3

    Программисты это как правило очень умные и талантливые люди, и при том очень скромные и иногда застенчивые. Я сам лично знаю много примеров как «крутые» продакт менеджеры унижали и обижали программистов. А уж среди «эффективных» менеджеров это в порядке вещей, не поиздевался над программистом считай день зря прошёл! Админов тоже стараются «опустить» но они как правило по зубастие и то что прокатывает с программистом, не прокатит с админом. А вообще если программист выполняет свою работу (по своиму, так как он лучше знает чем манагер) то доставать его придирками явно не стоит!


    1. VMichael
      06.02.2019 18:03
      -3

      А какой из пунктов вы считаете «придирками»?
      Там вроде есть обоснование, можете написать ваше обоснование, почему именно это придирка?


      1. DickCancer
        06.02.2019 18:12

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


        1. Koneru
          06.02.2019 18:54
          +1

          У меня был менеджер. Два года опыта в FrontEnd. И он не мог себе позволить сам решить какие технологии будут использоваться на проекте. Всегда советовался в первую очередь с архитектором и командой которая будет реализовывать. И не потому что он плохой дев был, а потому что понимал, что писать будет не он и уважал мнение ребят.


    1. AllexIn
      06.02.2019 18:03

      «Придирки» — сложное слово, не однозначное.
      В любом случае — задача управленца контролировать рабочий процесс. В идеале должен быть баланс между свободой и контролем. Тогда команда эффективно работает.
      Но в баланс никто не умеет, поэтому либо команда сваливается в свободу и не делает нихрена, либо команда сваливается в контроль, и теряет мотивацию нормально работать — не делает нихрена.
      Что характерно, в обоих случаях менеджмент обвиняет команду, и не считает что накосячил.
      ТАк забавно на это смотреть, что снаружи, что изнутри.


  1. MaZaNaX
    06.02.2019 18:02
    +2

    в) Angular был требованием клиента.

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


    1. koluka
      06.02.2019 18:14
      +4

      Причем не факт, что это должно быть увольнение программера… =)


  1. retran
    06.02.2019 18:22
    +3

    … или как за несколько минут уничтожить свой бренд в глазах разработчиков.


  1. dom1n1k
    06.02.2019 18:31
    +1

    Как подгорает-то в комментариях…


    1. Vadem
      06.02.2019 18:41
      +3

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


      1. dom1n1k
        06.02.2019 18:49

        А по-моему, в половине комментариев категоричности намного больше, чем в статье.


  1. Akuma
    06.02.2019 18:33

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

    Способ №1. Сделать не так, как просил менеджер

    Пример с дверью слишком «в лоб», тут случай тупого программиста. Если, например, верстальщик начнет сам рисовать макеты, это как раз ваш случай.

    Способ 2. Не тестировать свой код

    Нет, на проверку в сумме ушло 10 минут вместо пяти. Остальное время — это ваша «бюрократия». Увеличение текста кнопки в пять раз должен был проверить тот, кто это придумал, а не программист.

    Способ 3. Заниматься посторонними делами в рабочее время

    Расскажите это тем людям, которым нужно больше думать, чем кодить. Понятно что не нужно играть в Дотку на работе, но почитать хабр пока что-то собирается/компилируется/деплоится — почему нет то?

    Способ 4. Использовать любимую библиотеку/фреймворк, не посоветовавшись с менеджером

    У вас очень крутые менеджеры. У меня около 70 зависимостей только в nodejs. Они правда будут проверять каждую?

    Способ 5. Просить повышение за несколько недель до сдачи большого проекта

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


  1. Grigorenkovic
    06.02.2019 18:35

    Показываешь результат — можно нарушать все правила. Заваливаешь проект — любая мелочь ведет к увольнению.


  1. Scf
    06.02.2019 18:39
    +3

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


    Способ №1. Сделать не так, как просил менеджер
    Почему так неправильно. Часто менеджер знает о проекте больше, чем программисты.

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


    Способ 2. Не тестировать свой код

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


    Способ 3. Заниматься посторонними делами в рабочее время

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


    Способ 4. Использовать любимую библиотеку/фреймворк, не посоветовавшись с менеджером

    см. Способ №1. — диктат как средство упрочнения власти менеджера


    Способ 5. Просить повышение за несколько недель до сдачи большого проекта

    А кормить завтраками о повышении "а ты попаши сначала за троих пару лет, там мы тебя и повысим до Самого Главного Программиста с тем же окладом" не шантаж, да.


  1. Anshi85
    06.02.2019 18:40
    +1

    Не вижу нечего зазорного чтобы попросить прибавки к зарплате во время проекта, если я показал и доказал свою полезность в проекте и в компании целом! Почему менеджер сразу рассматривает сколько займет времени вникнуть новому специалисту если меня уволить за такую «наглость»? А вдруг менеджер после завершения проекта похлопать меня по плечу и все? Обычно бонусы и премии за проект обсуждаются до начала работы на проекте, а не после, после тебе скажут что лишних денег нет, надо было до проекта просить. В общем менеджер как то однобоко мыслит, получается программист только должен, а прав у него нет.


  1. andreysmind
    06.02.2019 18:43
    +2

    А там во всех пунктах один и тот же менеджер или каждый раз разные?
    Там получился такой собирательный образ суперменеджера, который и требования заказчика знает и в фреймворках разбирается и зарплатами заведует?

    Менеджер просит сделать комнату с дверью. Но по ТЗ в двери нет ручки, вместо нее педаль. Программист видел в жизни тысячи дверей и решает, что менеджер сошел с ума. Он пытается спорить, а потом делает «правильно». Его увольняют.

    Я так понимаю, что информация о том, что клиент — бизнес производящий педали так и не была донесена до программиста? О чем спорили тогда?

    А читать статьи для повышения квалификации это посторонние дела или еще нет?
    А сходить прогуляться потому, что решение задачи в голову не идет — это воровство или нет?

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


  1. M_AJ
    06.02.2019 18:43
    +1

    Менеджер просит сделать комнату с дверью. Но по ТЗ в двери нет ручки, вместо нее педаль. Программист видел в жизни тысячи дверей и решает, что менеджер сошел с ума. Он пытается спорить, а потом делает «правильно». Его увольняют.

    Раз уж вы решили разговаривать на языке аналогий… Менеджеры забыли, что двери нужно открывать с двух сторон. Когда программист спрашивает где вторая педаль, менеджер говорит ему: "делай по ТЗ, заказчик вторую педаль не заказывал!". Программист, чтобы его не уволили делает по ТЗ. За день до сдачи двери, случайно зашедший клиент спрашивает, как ему открыть дверь с другой стороны. Тут менеджер понимает, что в ТЗ вроде как сказано, что двери должны открываться в обе стороны, и вообще это требование пожарной безопасности. В общем, менеджер, нехотя признав свою ошибку, поручает программисту СРОЧНО сделать вторую педаль, говоря, что если он не сделает её к завтрашнему вечеру, то заказчик останется очень недоволен, а вся фирма (и он не исключение) останется без премий. В результате программист работает всю ночь и весь следующий день, кое как прилаживая вторую педаль, а менеджер, довольный тем, что решил проблему, уходит в шесть.


  1. PMVyatkin
    06.02.2019 18:44

    Что то мне не очень нравится утверждение про то, что программист продает свое время.
    Если вы покупаете разработчиков — от звонка до звонка, это очень странно. Многие разрабы делают задачи на стороне, и если в ущерб основной работе — да, это нечестно. Но еще чаще человек ставит приоритет на основной работе, и время на компиляцию кода\просто отдых тратит не на фриланс (сроки которого можно сдвинуть) а на обучение.
    ИМХО надо договориться на берегу, сидит разраб от звонка до звонка и в вечер релиза уходит домой потому что 7 вечера и электричка в Мусохранск уходит, или мирится с тем что разраб прикрывает такие вещи но в свободное время ковыряет фриланс\петпроекты\качается.


  1. maslyaev
    06.02.2019 18:57
    +2

    Способ №1. Сделать не так, как просил менеджер
    Часто менеджер знает о проекте больше, чем программисты.
    Часто, но реже, чем наоборот. Увы.
    Кроме того, я ни разу не сталкивался с тем, чтобы ТЗ (то самое, в котором написано про педаль, а не ручку) писал менеджер. У менеджеров, извините, другие задачи. Если менеджер пишет ТЗ, то в проекте уже что-то пошло не так.

    Способ 3. Заниматься посторонними делами в рабочее время
    Ты получаешь деньги в обмен на то, что продаешь свое время.
    Если прогер продаёт своё время, то это сигнал, что его работу нужно отдать на аутсорс.
    Не знаю как кто, но я получаю деньги не за затраченное время, а за решённые задачи и устранённые проблемы. В мире не должно быть ни одной живой души, которой было бы не всё равно, тупил я в задачу все положенные 8 часов, или сначала 4 часа доводил себя до кондиции чтением статеек на Хабре, потом за 3 часа сделал, а потом час на том же Хабре умничал в комментах.
    Когда работник умственного труда относится к работе как к продаже своего время — это, я считаю, катастрофа, притом сразу для всех. Гораздо правильнее и продуктивнее к работе относиться как к взаимовыгодному сотрудничеству. Работник выдаёт полезный организации продукт, а организация обеспечивает наличие необходимого и достаточного для самореализации работника как работника.

    Господа администраторы, как бы вам так научиться перестать относиться к сотрудникам как к скоту? Я понимаю, что в ваших MBA вас этому не учили, но почему бы не попытаться дотянуть самообразованием?


  1. xfaetas
    06.02.2019 19:02

    Заниматься посторонними делами в рабочее время

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


  1. 32bit_me
    06.02.2019 19:08

    Всех уволю, один останусь.