Программистский синхрофазотрон.

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

Ну, что, берет за душу? Если вы менеджер – уверен берет, если вы программист – тоже берет, хотя за другой кусок души и уже хочется разогнать всех менеджеров к чертовой бабушке 🙂

Осторожно ниже много букв. Так, что читать только морально устойчивым и заинтересованным.

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

И представляете, я таки нашел эту формулу (спасибо товарищу Паше Веревкину 🙂 ). Но о ней чуть позже.

А пока, разберемся, что вообще помогает программистам шустрить:

— Удобности

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

— Неотвлекательности

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

— Мозго_хорошести

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

Теперь посмотрим на каждый пункт. Удобности – хороши тем, что покупаются в магазине за 50$ и с помпой презентуются, с надеждой, что теперь программист станет ну гораздо быстрее. Замечу, что обычно эти удобности подымают эффективность ну скажем на 5%, то-бишь нужно купить дай бог десяток таких вещей, чтобы почувствовать эффект.

Неотвлекательности. С этим уже тяжелее, ну не выделишь каждому программисту офис, да и пиктограммы выбирать кто-то с менеджером должен (самому то скучно). Да и кофе подносить никто не хочет. В общем, можно конечно пару любимчиков обласкать на большую компанию – назвать их Chief Architect и порадовать их неотвлекательностями, а на всех бабок не напасешься такое делать. Но зато, эффект (сам по себе, если не считать влияние других), сразу может быть и 50% и 100%. Хотя, что уж говорить, чаще всего временный из-за пункта 3.

О… Мой любимый пункт три. Тяжко залезть в чужую голову и смотреть как там все устроено, ой как не хочется, это вам не монитор презентовать. А устроено на самом деле там все просто – если программист умный и умелый, то он может быть эффективнее на 50%, не на 30%, а в 1000% (с ноликами все в порядке), чем глупый и неумелый программист. Не помню, где уже ссылки были на все эти исследования, но если вы не верите в 1000% разницу и сами не программисты (что редкость 🙂), то пойдите спросите за сколько ведущий программист исправит хитрый баг и за сколько зеленый студент-программист, не видевшей еще вашей системы, исправит тот же баг. Думаю, вы можете получить соотношения и 1:1000.

Ok. Это я отвлекся. Мы все говорили о том, как конкретному человеку улучшить производительность, а тут начали сравнивать кого-то с кем-то. А дело ведь в том, что самые мощные программисты не рождались с встроенным знанием языка, продукта и т.п. Они этому учились. Итак, мы имеем тут две вещи, которые в какой-то мере присущи каждому — ум и опыт. Увы, ум фактически не тренируется или по крайней мере, он формируется к тому возрасту когда нанимают на работу, так что брать надо сразу умных программистов (об этому можно почитать тут). А вот опыт тренируется еще и как.

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

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

Хорошие программисты не дадут мне соврать (хотя может и дадут таки). 80% работы делается в 20% времени, и остальные 20% работы делается в 80% времени. Выходит это из-за того что бывает утром проснешься на взводе (кстати, стоит почитать у Губермана, поищите текст «Бывает – проснешься, как птица») и так радостно, хочется чего-нибудь сделать – идешь на работу и делаешь задачу, которая не получалась неделю в течении трех часов, причем легко так делаешь – левой пяткой. А бывает встаешь утром – за окном серо, моросит дождь (по этому поводу нужно смотреть «Одновременно» Гришковца) и плетешься на работу, одну мелкую ошибку мусолишь весь день и она не выходит, потом бросаешь ее и начинаешь перечитывать весь архив anekdot.ru, но даже от этого лучше на душе не становится.

Соответственно вопрос – а нафига было на работу приходить? Все равно пользы от проведенного времени никакой. Лучше было бы посидеть дополнительный час, когда день на взводе и не приходить в тяжкий день. Результат был бы тем же, только вместо просиживания дня на работе, можно было пойти в тренажеру разогнать себя, почаевать дома, поглядеть фильм, да мало ли что еще. Но, нет, ходит на работу Обязательно (с большой бувы «О»), иначе начальник не чувствует, что ты работаешь.

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

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

И вы действительно верите, что то, что тебе 9 месяцев назад подняли чуть (на 12% зарплату) и еще через 6 месяцев дадут бонус повлияет на то, что человек захочет сидеть дополнительные несколько часов в день когда все идет хорошо? Я бьюсь об заклад, что большинство хороших программистов с серьезным опытом на это плевать с большой горы уже. В основном они сидят на внутренней мотивации, что не хотят совсем уж заплесневеть и поэтому они что-то делают.

А теперь, представим другую ситуацию, что фирма платит за результат и позволяет не сидеть в офисы в плохие дни. Что мы имеем – программист не сидит в плохие дни, а сидит в хорошие чуть дольше. Результат для компании тот же, количество выплаченных денег то же, для программиста – работа вместо 23 дня * 8 часов, становится резко 12 дней * 10 часов. Все счастливы.

А теперь последний вираж, перед окончанием. Так вот, самая большая проблема, что хорошие программисты не мотивированы работать, даже в те самые дни когда у них все получается. Так как, хоть они будут вкалывать, хоть они будут работать еле-еле, очень мало скажется на их ЗП. Если они будут пахать – им просто подсыплют новых задач, если они будут отдыхать и чуть-чуть что-то делать, то как раз их меньше напрягать будут. И получается, что хороший (в смысле опытный и умный) программист работает с 20% эффективностью в хорошие дни и с 5% эффективность в плохие, хотя на самом деле он мог работать 100% в хорошие и с теми же 5% в плохие.

А теперь, подумаем. Если программисту начинают платить за результат, он то решит, что не стоит в хорошие дни сачковать и делать все на 20%, лучше впахать на 100% и сделать 10 дневную норму за день. Итого, легко мы получаем, что программист может вполне перейти на режим 3 дня * 12 часов * 100% эффективности = 36 эффективных часов, вместо 12 * 10 часов * 20% эффективности = 24 эффективных часов или 23 дня * 8 часов (при эффективности 20% и 5% для разных дней) = 25 эффективных часов.

То-есть мотивированный хороший программист зачастую может оказаться в 5+ раз более эффективен, чем не мотивированный. Вот она золотая формула. Кстати, золотая она и для фирмы, программисты бы пахали гораздо больше чем 3 дня в месяц и делали бы за месяц результат 3-4 нынешних — немотивированных месяцов работы, и для программистов она тоже золотая, так как получали бы программисты легко в 3-4 раза больше чем сейчас (так как им платили за результат).

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

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

Кстати, насчет корректной постановки целей и задач, смотри тут.

Зная, как будут себя бить в грудь многие программисты, крича, что они работают на 120% эффективности все время. Может вы уникум, а может вы еще в этой отрасли мало времени. Обычно по прохождению скажем 7-10 лет на работе, люди утыкаются в потолок зарплат и после этого не ищут как больше работать, а скорее ищут как бы поменьше всего делать, чтобы с своей стороны оптимизировать соотношение деньги/усилия.

Продолжение статьи можно прочесть тут.

А третью часть статьи можно прочесть здесь.

71 комментарий to “Программистский синхрофазотрон.”

  1. […] Блог об IT бизнесе » Blog Archive » Программистский синхрофаз… (tags: programming blog writing) […]

  2. Всё верно.

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

    • Victor Ronin:

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

  3. […] требовали умение работать в команде. Я же ставлю умение работать самому выше чем умение работать в […]

  4. […] Программерский синхрофазатрон — ну очень актуальная полемика […]

  5. […] у меня в блоге статьи Программисткий синхрофазатрон (часть 1 и часть […]

  6. […] там. Я и сам бывает этим грешу. Например, вся серия про Программистский синхрофазотрон построена на идеи, что одна переменная (вид оплаты) […]

  7. […] Кстати,  именно он подкинул мне идею (был ее автором) самой моей любимой серии статей про программистский синхрофазатрон. […]