Nov 16, 2006 20:27
Многие, наверное, помнят, что не так давно у меня была небольшая собственная конторка. Как любой руководитель я, помнится, долго ломал голову над тем, как поставить процесс разработки так, что бы он был оптимален. Помимо очевидных аспектов о системе контроля версий, системы учета ошибок и т.д. были даже какие-то вещи, которые я придумал сам. Что-то относительно того, что прогресс проекта можно наблюдать по количеству уже успешно выполняющихся модульных и приемочных тестов. Мне казалось, что можно написать несложный алгоритм, который на основе количества сделанных commit’ов в SVN, общего объема написанного кода, процента покрытия кода тестами и т.п. может показать - насколько человек много сделал. И если к этому вопросу подойти правильно - наверняка можно найти такой способ.
Более того, мне казалось, что кто-то такой способ уже давно нашел и использует. И наверняка написано об этом много и разного. Уже после того, как моя чудесная компания испарилась, (к процессу надо сказать это прямого отношения не имело, тут отдельные виноваты другие обстоятельства, о которых речь пойдет ниже) я уже понял что всё, о чем я раньше думал и что искал - чушь. В реальной жизни не существует метрик оценки труда IT-специалистов, которые бы нормально работали. Почему? Потому что так пишут люди, которые умнее и опытнее меня. Они говорят, что за полчаса можно изменить свою работу так, что она по заданной метрике будет выдавать отличные результаты, однако работа в целом станет менее продуктивной.
Отчеты о проделанной работе? Чушь. Можно тратить в 2-3 раза больше времени на поиск красивых абстрактных слов для названий задач, и это приведет к тому, что человек, смотрящий на эту "строчку в отчете", не поймет - сколько на это надо времени: 15 минут или 3 рабочих дня. Да и вообще, любая подобная метрика. Любые показатели простые или сложные - любой можно обмануть.
В чудесной компании Е-Х у меня был хороший начальник - Д.С. У него была доставшаяся ему по наследству бонусная система: он просто смотрел на задачи и оценивал, сколько часов у него бы ушло на решение этой задачи. Да, субъективно. Но в целом вполне работоспособно. И сейчас я понимаю, что Д.С. на момент моей работы там был наголову выше меня как специалист. Поэтому его наколоть было сложно.
Однако, в любой компании возникают вопросы. Как оценивать работу людей? Как узнать надо ли человеку дать премию или выгнать за разгильдяйство?
А ведь это реально сложно, и в некотором роде критически важно для бизнеса компании. Тут не помогут никакие SMARTS задачи как бы гламурно и красиво они не выглядели в своем страничном описании. Если твой непосредственный начальник не понимает что ты делаешь и не имеет своего мнения относительно того, что именно ты сейчас делаешь и сколько на это надо времени (например, если бы это делал он сам) - не важно какой процесс в компании - он просто не работает.
Не важно в чем ведется учет задач, в вордовых файлах, проджекте, motiw'е, tastdesk'е, team-manager'e, JIRA, trac'e или с помощью стикеров 5х5 см. Всё это лишь инструменты. Если человек не умеет программировать - не важно какой у него компьютер. И глупо думать, что если ему купить более мощный компьютер, он наудится управлять.
А ведь управлять это во много раз сложнее, чем делать самому. Хотя возможно сложнее для меня, кому-то, возможно, проще. Я вот, к примеру, вообще боюсь что-либо оценивать в работе системного администратора или разработки для J2ME. Я понятия не имею, сколько надо времени на то что бы настроить IPSec туннель в другую сеть. Или сколько надо времени, что бы разработать GPRS клиента. Однако, почему-то людям кажется что понимать досконально то, чем управляешь не обязательно.
А ведь эти люди нанимают себе подчиненных. Я не знаю, на что они смотрят при этом. На то, что они что-то знают или на то, что у них вид бешенного ботаника или на то что у них не течет слюны изо рта. Эти люди - они оценивают, сколько дать денег своим подчиненным. Видимо по тем же критериям и прямо таки жаждут услышать от соискателя ответ на вопрос "сколько он хочет". Именно они на самом деле руководят «процессом».
Один умный человек сказал что ярким примером того, что из этого получается - являются американские машины. Тяжело нанять хорошего дизайнера, если у тебя нет вкуса. Видимо, у тех, кто нанимает дизайнеров для американских машин - нет вкуса. И они не могут понять есть ли вкус у кандидатов. Поэтом нанимают, наверное, тех, кто им субъективно больше понравится, и видимо эта субъективность не имеет ничего общего с профессиональными навыками кандидата.
К чему я это всё? К тому, что любой процесс - это люди, а не метрики и программы.
Можно несложными арифметическими расчетами показать, что если вдруг человеку создать ВСЕ условия и (в том числе) платить раза в 2 больше при том, что он будет делать раза в 2 больше, то такие компании будут нести такие же затраты на разработку, как и компании, где мы все работаем. Так отчего же они, эти компании мечты, не появляются?
Тут возможны две причины.
Первая из них - мы, разработчики. Если среднестатистическому разработчику создать все условия, и платить в 2 раза больше денег, он не будет в 2 раза более продуктивным. Почему? Потому что он раздолбай и/или туповат, или вообще у него своя картина мира, и «долгая и упорная работа за в два раза большие деньги» в неё не вписывается. Ему это не надо просто.
Вторая - это руководители, для которых весь вышеприведенный текст покажется бредом и провокацией. «Мои работники работают по 3-4 часа в день?!! Да поувольняю всех к чертовой бабушке! Запретить ICQ!* Закрыть порты! Запретить все URL с анекдотами и шутками! Запретить личную почту! Нарушителей штрафовать!». По-моему такая реакция совершенно нормальная для среднестатистического начальника. **
Я всё долго думал, почему же чудесных компаний вроде Google или Fog Greek так мало на территории постсоветского пространства. И мне кажется, я знаю почему. У нас отсутствует культура управления людьми.
Как правило, учредители, акционеры и инвесторы компаний у нас это те, у кого есть деньги. Деньги за последние 10-15 лет появились у людей из разных источников. В общем, наверное, понятно, откуда они появились. Я, кстати заметил, что как деньги влияют на людей. Не то что бы портят - люди от них становятся другими. Более самоуверенными. Логика в целом понятна, раз моё «мировоззрение» принесло мне квадриллион долларов - значит, я всё делаю правильно в этой жизни. И меняться такие люди крайне не любят.
И уж точно эти люди не являются IT-специалистами и не испытывают ни малейшего желания ими становится (знаю нескольких, кто пока не разобрался с адресной книгой сотового телефона, микроволновой печью и т.д.). Они ещё для себя не ответили на вопрос «IT:миф или реальность. Если реальность, то почему так дорого?».
Эти люди на руководящие должности будут нанимать тех, кто говорит с ними на одном языке. Кто может им может наговорить много красивых слов и обещаний, которые они хотят услышать. Бизнес-кейсы, планы в project’е, зоны ответственности, схемы в visio… Доводилось даже мне видеть много чего такого. По началу я не понимал, как можно делать такие смелые оценки в этих документов. Я считал людей их делающих - очень умными и опытными***. Потом, пообщавшись и задав вопросы о происхождении цифр - я для себя понял, что «от балды» основной метод оценки в вышеперечисленных «документах». И такого рода «руководители» вряд ли могут объяснить руководству, зачем надо платить «в 2 раза больше денег» нежели специалист стоит на рынке (если специалист того стоит). Им бы какого-нибудь студента подешевле.
Под такими руководителями есть ещё особый вид руководителей, это «бывшие программисты». Те, кого повысили или кто решил что «хватит кодить» и чудом попал на руководящую должность в другую компанию.
У них, как правило, другие проблемы. Они не могут довести ни до инвесторов-учредителей, ни до особ начальственных с такой же степенью познания в IT то, зачем «нужно платить много денег лучшим разработчикам». (с) Джоел Х. Спольски.
Наверное, пройдет время и в нашей стране появится и другой тип компаний. Те компании, у истоков которых будут стоять люди, которые «в теме». Которые будут «рубить фишку». Когда появятся инвесторы, которые хорошо знают предметную область и которым из-за их нелегкого детства пришлось прочитать книгу «С++ для начинающих» и что-то пописать. Ну, хотя бы в течение нескольких лет.
А нам вот всем что при этом делать? А вот на этот вопрос я ответа пока не нашел. Видимо зарабатывать деньги мы и дальше будем в компаниях, где надо писать планы на следующую неделю, отчитываться перед руководством, и далее пытаться объяснять человекоподобным обезьянам: зачем в нагрузку к спинному мозгу им дали ещё и головной.
А оценивать нас будут по субъективному мнению HR-департамента (насколько хорошо и вовремя мы приходили на работу), и вышестоящих начальников, которые наверняка считают, что все IT-специалисты - нахлебники и раковая опухоль на теле компании.
* Вообще говоря, та же ICQ конечно зло. Но если ты действительно мотивированно работаешь за идею - ты сам будешь недоволен своей продуктивностью. И будешь её включать на несколько часов в день. Или изучишь silent mode в каком-нибудь клиенте.
** Знаю нескольких начальников, к кому это не относится. Но их катастрофически мало.
*** У меня до сих пор встречаются отдельные проявления детской наивности.
P.S. Коментирующие это, учтите, я всё ещё работаю в ИнКоре, и этот блог читают некоторые мои колеги. Так что не пишите тут разного :)