четверг, 1 сентября 2011 г.

[prog;work;thoughts] Прибавка к зарплате “за выслугу лет” программистам, да и не только…

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

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

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

С одной стороны, это знания внутреннего устройства компонентов. Мало того, что такой человек гораздо лучше ориентируется в коде и способен быстрее, а главное, качественнее, вносить изменения в программу. Так он еще и помнит (способен вспомнить) причины принятия тех или иных проектных решений. Поэтому на вопросы “А почему здесь сделано через задницу?” находятся конкретные ответы. Зачастую полностью объясняющие ситуацию. Ну и плюс к тому, у старых кадров меньше желания “переписать все нафиг с нуля!” :)

Но эта сторона очевидна. По крайней мере должна быть очевидна для имеющих к разработке софта людей (полагаю не только к разработке, но и к любой конструкторской, а то и просто производственной деятельности). А вот менее очевидная сторона – это знание туевой хучи связанных с софтом инцидентов, их причин, решений и последствий. И когда такого программиста дергают из техподдержки с вопросом “Мы делаем вот это, а оно не работает, почему?” он зачастую может с ходу назвать причину проблемы и дать ссылку на раздел документации, в которой уже несколько лет как расписана правильная последовательность действий для этого случая.

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

Не буду сейчас сильно заострять внимание на том, хороша ли такая ситуация или нет. AFIAK, всякие CMM как раз направлены на то, чтобы снизить риски компании от ухода ключевых разработчиков. Скажу лишь, что здесь все упирается в две вещи – деньги и время. Деньги тупо нужны для того, чтобы над одной проблемой работало больше людей. Тогда знания оказываются “реплицированными”. Т.е. если какой-то проект может сделать один человек, то для страховки нужно будет поручать этот проект двум людям. Соответственно, увеличение количества разработчиков затрудняет и замедляет разработку – за счет увеличения необходимых коммуникаций и пр. организационной лабуды.

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

Очевидно, что в ряде случаев (стартап, слишком короткие сроки на доработки) все это утопично и недостижимо. А мы как раз в таком режиме и развивались – маленькая амбициозная компания хваталась за серьезные проекты малыми силами, терпеливо выполняя капризы VIP-заказчиков. Так что вопрос не в том, хороша ли сложившаяся ситуация или нет. А в том, что она вот такая. И отталкивая от объективной реальности нужно подходить к размерам зарплат сотрудникам, в особенности ключевым.

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

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

Кроме того, очень многие программисты весьма серьезно относятся к результатам своего труда. И чувство неудовлетворенности от не очень хорошего решения нас преследует. Иногда заставляя постоянно оглядываться назад и думать о том, как можно было бы сделать лучше. Бывает, что в условиях цейтнота или из-за недостатка знаний сделаешь что-то грубо, наспех – актуальность принципа “если сомневаешься, используй brute force” пока еще не снизилась. А потом на ум приходит более элегантное и эффективное решение. Но ты не имеешь возможности внедрить его – программа работает, клиент пока не хочет ничего менять, ты сейчас занят другими важными проектами и т.д. Тем не менее, ты знаешь, как можно сделать лучше.

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

Уверен, что успешной фирме, проекты которой приносят прибыль, выгоднее выплачивать прибавку “за выслугу лет”. Намного выгоднее, чем рисковать потерей ключевых разработчиков. Не только разработчиков.

PS. Да, я сейчас выступил в роли “Капитана Очевидность”. Но складывается впечатление, что даже очевидные вещи не грех время от времени озвучивать вслух.

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