Откуда берется эффективность программиста

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

Вот вы сами верите в это? Я — да, я уверен в этом. И попробую сейчас это вам доказать.

Как же получается, что производительность двух программистов может различаться в десятки и сотни раз?

эффективность программистаРассмотрим обычную ситуацию (как это себе представляют некоторые менеджеры): в одной большой компании работают два программиста — Петя и Вася. Допустим, что Петя и Вася — программисты абсолютно одного уровня, то есть сколько их не тестируй — не выяснишь, кто лучше.

Любой неопытный менеджер вам скажет, что 2 одинаковых программиста приносят фирме одинаковую пользу. Так ли это? Давайте посчитаем.

Пусть Петя и Вася работают по 9 часов в день, включая обед. Но на что и как они тратят эти 8 часов?

  • Петя каждый день как минимум час проводит на совещаниях и обсуждениях, а также за чтением писем и отвечая на них.
  • Петя курит, поэтому раз в час он уходит покурить на 5 минут, где иногда задерживается и на полчаса, но про это мы забудем.
  • Петя активно читает интернет и профессиональные блоги на работе, на что тратит еще как минимум полчаса в день.
  • Петя, как и любой программист, любит кофе и чай, поэтому пьет их раз 5 в день на кухне, где ведет разговоры с другими любителями чая. Всего 5-6 минут на чаепитие, но за день это полчаса.
  • Петя любит покушать и любит делать это с толком и расстановкой, поэтому он ходит в кафе и проводит там весь час, отведенный на обед.
  • Наконец, Петя, как профессиональный программист, тратит всего около 5 минут на “вхождение в поток”, в рабочее состояние после отвлечения. Так что если проссуммировать все его отвлечения, то на вхождение в рабочее состояние он тратит еще около часа-полутора.

Если вы задумаетесь, то Петя с таким рабочим днем — вполне обычный программист, которых вокруг вас 50%, если не все 80%.
В итоге же Петя из 9 часов, проведенных на работе, занимается полезной работой меньше 4 часов.

А как насчет Васи?

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

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

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

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

На деле же всё гораздо печальнее и одними административными мерами проблем с производительностью не решить.

Мало того, на самом деле все эти административные игры — это все мелочи. Задумайтесь — человек, пашущий без перерыва целый день не вставая всего в 1.5-2 раза эффективнее, чем тот, кто общается, пьет кофе, читает интернет и т.п.
Вы считаете, что “в 2 раза эффективнее” — это достаточно? Нет — вы ошибаетесь.

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

Так что же может быть важнее, чем сидеть 8 часов за компьютером, не разгибая спины?

Вася может быть гораздо более опытным программистом, чем Петя. А значит он меньше “пробует”, а больше делает правильно с первой попытки. Он меньше думает, как что-то сделать, т.к. он это уже делал. Он знает, как избежать ловушек и кривого дизайна, так как это все уже было у него в прошлом. Это всё может дать ему просто огромный прирост производительности по сравнению с Петей — прирост в разы. А иногда и в 10 раз.

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

Кроме опыта, Вася может любить находить простые решения, а Петя — сложные. Не всем дано уметь находить простые решения сложных задач. Но если такой человек у вас есть — можете быть уверены, что он будет работать в разы эффективнее чем те, кто везде ищет “наиболее общее” или технологичное решение. Принцип KISS (Keep It Simple, Stupid) проповедуется давно, но до сих пор слишком мало программистов ему следуют.

Вполне может оказаться, что Вася — очень фанатичный программист и даже дома и по дороге домой он обдумывает разные рабочие задачи. В итоге на следующий день он уже гораздо лучше подготовлен к их решению, чем Петя, который дома занимается другими делами. Это еще может дать Васе 50-100% прирост производительности по сравнению с Петей.
Также Вася может к тому же очень любить свою работу и делать что-то на выходных и по вечерам, что даст ему еще 1-2 дня в неделю, а значит еще 50% преимущества над Петей.

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

Это не конвейер — тут нет двух программистов с одинаковой производительностью.

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

Как же менеджерам использовать это знание?

  1. Во-первых, забыть про конвеер. Не надо считать всех программистов одинаковыми и годными на любую работу. Программисты с трудом взаимозаменяемы.
  2. Во-вторых, надо видеть разницу между программистами и уметь ее использовать. Гораздо выгоднее иметь на проекте двух высокопроизводительных программистов, чем 50 низкопроизводительных. При этом эти двое могут выдать такой же результат, а то и лучше, чем те 50. Тот, кто думает, что это парадокс — тот плохой менеджер.
  3. В-третьих, не брать на работу низкопроизводительных программистов. Зачем вам Петя, который делает в 10 раз меньше, чем Вася? Умейте их различать и не берите “Петю”.
  4. Ну и самое главное — помогайте программистам развиваться и учиться. Именно знания и опыт дают им десятикратный прирост производительности.

Оставить комментарий