После публикации резюме того парня произошли два хороших события.

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

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

Практику ускорения разработки я давно хотел систематизировать, но не было повода. А потом ко мне обратилась одна компания и предложила разработать курс, чтобы потом его продавать в определенной (чего уж там — 1Сной) среде. Предполагалось, что это будет видеокурс, с какими-нибудь презентациями и заданиями — скукота, в общем. Я решил убить двух зайцев — написать текст, типа книгу, а потом из него уже видеокурс делать. Таким образом, получилось бы два продукта. Минимальными усилиями из нее получился бы и третий.

Структура книги давно известна, что там написать — тоже, надо просто сесть и сделать. Я написал, на данный момент, 6 глав из 20, т.е. ~30%. И, раз пошла такая пьянка, выложить их в виде статей. Девушка, кстати, прочитала только 3 главы.

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

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

Раз вы знакомитесь с этим материалом, то могу предположить один из двух вариантов.

Первый – вас кто-то заставил. Начальник, директор, руководитель проекта — не важно.

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

Кто вы, угадать тоже несложно: вы – либо программист, либо руководитель программистов, либо работаете в компании программистов, а может – и владеете этой компанией.

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

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

Это руководство по повышению эффективности. Вашей личной, ваших коллег, ваших подчиненных или отдела, команды или компании в целом. Написано оно программистом, а по совместительству – руководителем проектов, команды, продуктов. Так что, смею надеяться, я понимаю и учитываю лично ваши интересы.

Итак, поговорим об эффективности.

Посмотрите вокруг, на окружающих вас программистов. Кто из них прямо сейчас эффективно работает?

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

А вон те двое, которые о чем-то оживленно спорят? Кажется, об архитектуре какого-то решения? Они эффективны?

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

Один говорит – надо делать регистр накопления. Другой орет – нет, какой регистр накопления, ты чего, валенок? Только регистр сведений! Сколько это уже продолжается? Полчаса? Час? Вы там приглядывайте за ними, а то подерутся.

А вон тот, умник, ни с кем не спорит. Сидит в наушниках, подперев руками голову. Не программирует, это явно видно. А что он делает? Спросим?

Говорит, что проектирует архитектуру решения. Ну вот, опять. Прям проектируешь? В голове схему рисуешь? Нет, говорит, думаю – регистр накопления, или регистр сведений выбрать. Давно думаешь? Часа два уже, всю голову сломал. Варианты одинаковы по трудозатратам, и особых преимуществ не имеет ни один из них. А клиенту важно, будет это регистр накопления, или регистр сведений? Да вроде нет. Клиент – Клавдия Елисеевна, бухгалтер, ей без разницы.

Этот парень эффективно время проводит, как вы считаете?

Ну-ка, а вон тот. Рука быстро крутит колесо на мышке, сосредоточенный взгляд устремлен в монитор. Что у него там? Ага, знакомый список… Это же наши задачи! Что же он делает? Спросим?

Задачу, говорит, выбираю. Не знаю, с какой начать. Половина не понятна, половина – на толстых формах, а я их не знаю, ибо молод. Тут вот СКД надо знать, а я… Ну это… Так себе.

Этот эффективен?

Посмотрим на нашего чемпиона. Вот этот точно эффективен! Он такие решения выдает, закачаешься! В одного тяжелейшие проекты тянет! Что там у него? Хм, вроде макет какой-то рисует. Эй, чемпион, чем занят? ТОРГ-12 подправляешь? А чего там не так? Надо, чтобы вместо наименования договора выводился номер и дата? Серьезно? Такая задача?

Ну, мы, конечно, понимаем – клиенты попросили, надо – значит надо. Но почему ты, чемпион, эту задачу решаешь? У тебя, вроде, хватает больших, серьезных задач, уровня подсистем и новых конфигураций. Что, больше некому ТОРГ-12 подправить? Может, лучше вон тот парень, который задачу себе выбрать не может, справится?

Чемпион эффективен, как думаете?

А вон тот парень чего делает? Почему сидит возле телефона, и смотрит на него, как солдат на вошь? Звонка, что ли, ждет? Вроде нет, все звонки офис-менеджер принимает… Спросим?

Опа. Он должен позвонить клиенту, но боится. Уже два часа сидит и придумывает сценарии разговора, даже в блокнот что-то записал – фразы какие-то, свои прогнозируемые ответы. А почему он должен звонить клиенту? Он же интроверт до мозга костей. Так, стоп, у нас же каждый сам со своими клиентами общается. Что-то здесь не так, похоже…

Ну ладно, с этими понятно. А я что делаю? Пишу выгрузку из УПП в Бухгалтерию 3.0. Тут уж не подкопаешься – эффективен, как черт. Или нет? Откуда смутные сомнения в душе? Может, их причина в том, что выгрузку из УПП в Бухгалтерию 3.0 мы уже делали? И не один раз. Зачем я ее снова пишу? Почему не взять готовую? Конфигурации-то типовые. Черт, и со мной придется поработать…

Продолжать можно до бесконечности. Если к людям не приглядываться, то всегда кажется, что они работают эффективно. Ну, или хотя бы работают. На самом деле, нам даже не кажется, что они эффективны – мы надеемся, что они эффективны.

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

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

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

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

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

Просто примите за аксиому – программист неэффективен всегда. И вы – в том числе. И я – тоже.

Если вы будете сопротивляться этой аксиоме, выдумывать оправдания, спорить и пытаться что-то доказать – мне или коллегам – то никогда не станете эффективными.

Я понимаю, что такое утверждение – «я неэффективен» — может сильно бить по самолюбию. Но мы с вами чуть раньше договорились, что вы расслабитесь и получите удовольствие. В конце концов, можете ведь ничего и не менять, оставить все как есть и жить себе дальше, счастливо в неведении.

Но попробовать, все-таки, стоит. Мало ли, вдруг этот материал изучают и ваши конкуренты? Если они не будут сопротивляться, и сделают повышение эффективности своей миссией? Не красивой бумажкой на стене в коридоре, а реальной красной нитью всей своей деятельности? Тогда перестанут действовать правила вроде «верю – не верю» или «хочу – не хочу» — вступят в действие жесткие и неумолимые законы рынка.

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

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



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

Если знакомы с теорией ограничений Голдратта, то вот вам и оттуда картинка.



Слова написаны другие, но смысл тот же – цикличность. Совершенствовать, и совершенствовать, и совершенствовать. Предела совершенству нет.

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

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

Можете попробовать все методы, можете – только часть. Бывают случаи, когда применение лишь одного метода повышает эффективность в разы. Это называется «принцип рычага», когда в системе найдена ключевая причина проблем и точно подобрано ее решение. Но, как вы уже поняли, совершенству нет предела.

Часть методов рассчитана на внедрение в команде. Если у вас команды нет, вы один, и будете заниматься только своей эффективностью, то эти методы вам не помогут.

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

Есть такая знаменитая формула синергии: 1+1=11. Она буквально означает, что объединение усилий двух человек может дать результат, в разы превосходящий простую сумму. Понятно, что эту формулу придумали маркетологи – доказать ее на практике еще никому не удавалось. Но посыл она дает правильный – команда может делать больше, чем коллектив.

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

Резюме



  1. Любой человек, в любой момент времени, работает неэффективно;
  2. Практически любое действие человека может таить в себе потерю эффективности;
  3. Если на заниматься эффективностью проактивно, то она не изменится;
  4. Эффективность любого человека имеет бесконечный потенциал для повышения;
  5. Эффективность команды может быть выше, чем сумма эффективностей ее участников.

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


  1. submagic
    03.05.2019 18:42

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


    1. nmivan Автор
      03.05.2019 19:24

      ок, осознали. Дальше что делать?


      1. submagic
        03.05.2019 19:38
        -1

        Решать ЭТУ проблему, естественно.
        Приводить эффективность к одному направлению. Чтобы то, что эффективно для одного, было эффективно и для другого (или хотя бы ему не мешало), ну и т.д.
        Если Вы пишете, что некто неэффективен — то сразу встаёт вопрос, ДЛЯ КОГО он неэффективен? Возможно, ДЛЯ СЕБЯ он вполне даже эффективен. Получает 100% зарплаты, работая 10% рабочего времени. Что тут неэффективного — ДЛЯ НЕГО?
        С департаментами может получиться ещё интересней. Там вообще уникальные вещи случаются, особенно в банках и крупных компаниях.


  1. D666l
    03.05.2019 19:16

    Спасибо, за главу!


  1. RegisterWindowClassExA
    03.05.2019 19:24

    Формула синергии? В кодинге, кмк, действует обратное правило: 1+1=1.5.


    Если программист неэффективен, значит либо он перерабатывает, либо не получил специфицированную задачу, либо не любит свою работу. Во всех случаях виноват руководитель/тимлид/архитектор. Кмк, программу вообще пишет архитектор, а кодеры лишь пишут модули по его ТЗ. Я сам не видел, но мне так сказали… А если у Вас анархия, то лучший способ повысить эффективность — ввести роль архитектора и программиста-консультанта. Который скажет: делаем так. И будет отвечать за результат. Главное, чтобы он знал, что делает. ИМХО.


    1. nmivan Автор
      03.05.2019 19:33
      +1

      Если программист неэффективен, значит либо он перерабатывает, либо не получил специфицированную задачу, либо не любит свою работу.

      Вариантов намного больше, мне кажется.
      Навскидку:
      1. Он недоволен зарплатой, но стесняется спросить;
      2. Над ним иногда смеются, и он по 100 раз переписывает, чтобы не смеялись;
      3. Его бросила жена;
      4. На лестничной площадке завелись наркоманы;
      5. Он — самый крутой разработчик, и вынужден поддерживать образ;
      6. Его работа учитывается в потраченных часах;
      7. и т.д.

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

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


      1. RegisterWindowClassExA
        03.05.2019 19:51

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


        1. RegisterWindowClassExA
          03.05.2019 19:57

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


    1. archimed7592
      04.05.2019 21:10

      Во всех случаях виноват руководитель/тимлид/архитектор.

      Вы выполняете какую-либо из перечисленных ролей? В неэффективности выполнения этих ролей, тоже есть список виноватых? :)


  1. RegisterWindowClassExA
    03.05.2019 19:35

    Двое спорят? А кто эти двое? Если архитекторы, то зачем их двое? Если кодеры — почему они вдвоем пишут один модуль? Снова ИМХО


    1. kapash
      06.05.2019 17:11

      Двое спорят? А кто эти двое? Если архитекторы, то зачем их двое? Если кодеры — почему они вдвоем пишут один модуль? Снова ИМХО

      А пожалуйста:
      Архитектор Бизнес-Решения и Бизнес-Системы
      Архитектор Программист и Архитектор инфраструктуры

      Молодой кодер учится у старого или наоборот.
      Модуль большой.
      Один пишет, другой тестит


  1. eugene_bx
    03.05.2019 20:09
    +1

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

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


  1. gennayo
    03.05.2019 21:34

    Чорт… Очень хорошо, но практически бесполезно...


  1. Yury_SB
    04.05.2019 01:41

    На текущий момент в статье показаны:
    1) Примеры неэффективности разных членов коллектива
    2) цикл Деминга
    3) цикл TOC
    Статья стала бы сильно полезней, если кроме п 1. показывала бы реальные кейсы с решениями. С другой стороны — ежедневные публикации от автора позволяют надеяться, что скоро мы сможем увидеть и реальные кейсы с решениями.


    1. Vnuchok
      06.05.2019 22:43

      я тоже думаю, что кейсы с решениями впереди… а иначе к чему такая затравка?


  1. metacore
    04.05.2019 01:41

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


    1. Vezzird
      05.05.2019 16:36

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


      1. submagic
        05.05.2019 16:43

        За «усилия рядом» В ЛУЧШЕМ СЛУЧАЕ поставят на вид, чтобы не совался в не в своё дело. Причём и работодатель, и работник (который «рядом») поставят. И оба будут правы. Если Вы не понимаете, ПОЧЕМУ — ну… Наверное, у Вас просто мало опыта.


        1. Vezzird
          05.05.2019 17:48

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


          1. submagic
            06.05.2019 11:01

            Бывают счастливые исключения. Сам с такими сталкивался.
            Это воодушевляет — но увы, рассчитывать на такое опасно.
            Лучше ничего такого себе не позволять — результат непредсказуем (точнее, он вряд ли будет хорошим). Если хотите «вперёд и вверх, к сияющим вершинам» — лучше хобби или свой бизнес.


            1. Vezzird
              06.05.2019 11:37

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


        1. kapash
          06.05.2019 17:19

          За «усилия рядом» В ЛУЧШЕМ СЛУЧАЕ поставят на вид, чтобы не совался в не в своё дело.

          я бы прям посмотрел на кейс данного проекта, где членам команды нельзя помогать друг другу


          1. submagic
            07.05.2019 11:10

            Обычно везде можно (не всегда). Просто не получится.
            Если Вы кому-то помогаете, значит, недогружены своей собственной работой (если только Ваша работа не состоит в том, чтобы помогать, но это вообще экзотика). А тот, кому Вы помогаете — не справляется. Дальше объяснять надо?


            1. kapash
              07.05.2019 12:14

              Если Вы кому-то помогаете, значит, недогружены своей собственной работой

              Недогружен насколько? На 90-100%?


      1. Kemet
        05.05.2019 16:51

        Только если это соответствует твей компетенции, допуску и мотивации. Да и в целом — потогонная система получается — из сотрудника выжимается всё возможное и даже невозможное, в результате чего лет через 10 он загнётся.


        1. Vezzird
          05.05.2019 17:54

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


      1. kapash
        06.05.2019 17:14
        +1

        И это упирается в вопрос — а зачем это мне, не так ли?)

        Ну один раз приложил усилия, и стал постоянно это делать — всё же просто.


  1. dpyzhov
    05.05.2019 09:42

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

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

    А ещё можно добавить определение эффективности и методы её измерения? Навскидку я бы измерял в 1С аутсорсе прибыль, сарафанное радио, отток клиентов.