В этот раз Машеньке всё-таки пришлось пройти через все эти разговоры, вздохи, взгляды и отработки, которые она так не любила. И в этот раз всё было в разы тяжелее для неё, чем обычно.
Признание ошибок
Ошибки в области разработки ПОэто не какие-то экстренные ситуации, это норма. Иногда разработку сравнивают со строительством дома, но это сравнение очень далеко от реальности. Дома проектируются и строятся точно по плану, план меняется очень редко и крайне незначительно, дома в основном типовые или как минимум состоят из типовых частей.
Разработка скорее похожа на съёмки фильма. Да, есть сценарий, но он не включает в себя все детали и постоянно переделывается. Каждая сцена снимается и переснимается, пока не получится так, как надо. И в процессе случаются многочисленные накладки разной степени ужасности: актёры беременеют, бюджет меняется, меняются законы и т.д. В таких условиях даже сам подход сделать сразу без ошибок не имеет смысла. Это как сказать актёрам: Плёнки на дополнительные дубли нету, играйте сразу нормально.
Для людей из многих других областей неизбежность ошибок кажется ненормальной. Особенно странным им кажется то, что разработчик не несёт никакой ответственности за сделанные им баги. Для нас, работающих в IT, такое положение дел логично и понятно.
Одно время я вёл примерный учёт заведённых на меня багов. Для разработчика каждый баг можно считать официальной регистрацией сделанной им ошибки. Вести счёт я прекратил, когда багов стало больше 3000. Менеджер делает свою работу в тех же условиях неопределённости, что и разработчик, поэтому в IT проекте будут менеджерские ошибки. И их будет много.
Иногда бывает, что разработчик, которому сказали, что по его функционалу нашли 20 багов, удивляется и начинает их разбирать: Ну, этот багэто не я виноват, это там у нас дизайн кода такой кривоватый. А эти два бага надо в один объединить, и вообще это, скорее, в требованиях ошибка. А эти баги я уже исправил, это у вас просто код старый в тестирование ушёл. А эти баги очень мелкие, они не считаются. В общем, я реализовал всё без ошибок!
Очень странно слушать такие речи от разработчика, но совсем недопустимо, когда подобное говорит менеджер. Вместо оправданий менеджеру нужно брать на себя ответственность. Любая ошибка, сделанная командойэто ошибка менеджера. Менеджеру полезно это не только знать, но и признавать публично.
Кажется, что этот подход только мешает, но он наоборот, очень продуктивен сразу по нескольким причинам. Во-первых, поиск виноватого не является необходимым для решения конкретной проблемы, а занимает он ужасно много времени. К тому же часто проблема является следствием цепи ошибок разных людей: заказчик дал не совсем корректные требования, аналитик не обратил внимания на краевые ситуации, разработчик реализовал, не вникая, тестировщик не продумал полноту сценариев тестирования и т.д.
Во-вторых, проблема не может быть решена на том уровне, на котором она возникла (© Альберт Эйнштейн). Если некоторый Вася обрушил продакшн, неправильно реализовав какой-то кусок кода, то очень хочется в виде решения поругать Васю и сказать ему, чтобы он так не делал. Но обычно такие ситуации означают, что процесс построен неверно, и надо менять его, а не Васю. Юнит-тесты, код-ревью, автоматизация, Continuous Integration и прочие плотно вошедшие в индустрию практики как раз позволяют избегать тех ситуаций, в возникновении которых пару десятков лет назад обвиняли нерадивых разработчиков.
А в-третьих (и это самое главное), когда менеджер публично признаёт свою ошибку и берёт вину на себя, это волшебным образом меняет отношение команды к проблеме. Естественная реакция, когда что-то случилось, это заявить о своей невиновности и, для верности, найти виноватого. Это может родить шквал взаимных обвинений, заканчивающийся обидой всех на всех. Виноватым назначают заказчика, так как он, обычно, на обсуждении не присутствует, и все гордо расходятся работать в точности так же, как раньше.
Если же менеджер берёт вину на себя, то команда расслабляется и может начать думать над решением. К тому же, пока менеджер рассказывает, где и что он мог бы сделать лучше, каждый из команды понимает, что он тоже мог бы многое сделать для решения проблемы, и в следующий раз ведёт себя более проактивно. Если удастся своим примером привить команде готовность признавать свои ошибки, то уже в ближайшем будущем это принесёт очень хорошие плоды.
Только менеджер должен быть очень конкретен в признании своих ошибок. Недостаточно заявить: Вот, у заказчика сервер упал и не поднимается. Это моя ошибка, так как только по ошибке я мог нанять таких косячников, как вы. А теперь давайте вместе подумаем, как всё исправить.
Нужно быть очень аккуратным в выборе слов, чтобы подать пример. Менеджер должен сказать то, что он хотел бы услышать от каждого из своей команды. Например: Как вы уже знаете, продуктовый сервер заказчика на новой версии не работает, старая версия не восстанавливается, и заказчик несёт большие убытки. Причина может быть в том, что я запланировал недостаточно тестирования на этот релиз. Или в целом процесс релиза я не сделал надёжным. Или, может, мне надо было сильнее вовлечь заказчика в процесс проверки релиза. Точная причина неизвестна и не важна. Над предотвращением таких проблем в будущем мы подумаем позднее, когда пожар потушим. А пока, кто что может предложить для того, чтобы починить сервер сегодня, чтобы, когда клиенты заказчика проснулись, они могли бы работать?
Такой подход хорош ещё тем, что команда часто видит или думает, что видит, ошибки менеджера. И то, что менеджер свои ошибки готов признать, доверие выводит на другой уровень. Возможно, когда вы будете делать следующую ошибку, кто-нибудь вам об этом скажет раньше, чем ошибка станет непоправимой.
Добренький менеджер
Людиживотные социальные. Мы все хотим симпатий окружающих нас людей и стараемся избегать действий, которые вызовут неодобрение. Особенно, если мы говорим о людях, которых мы уважаем. Менеджеры уважают свою команду, и им бывает тяжело делать что-то такое, из-за чего их могут посчитать плохими. Неопытные менеджеры стараются быть добренькими, не делать ничего, что могло бы негативно отразиться на других.
С такими позывами каждый менеджер должен бороться изо всех сил. Решения должны приниматься потому, что они нужны, а не потому, что они кому-то нравятся. Менеджер постоянно должен принимать непопулярные решения и эти решения часто вызывают негативную реакцию. Но это необходимая часть работы менеджера. Нельзя пытаться быть добреньким.
Пытаться никого не обидетьэто естественная реакция неподготовленного человека, назначенного менеджером. Как ни странно, у такого менеджера в команде обычно процветают конфликты, ссоры, ругань и слёзы. Как так получается, что менеджер, старающийся быть хорошим, становится источником нервотрёпки для своей команды?
Механизм хорошо иллюстрирует одна история. В небольшой компании работал менеджер, под управлением которого было 15 разработчиков. Команда была дружная, работали все хорошо. Менеджеру работать со всеми было легко. Но тут наступил очередной экономический кризис и больно ударил по компании. Менеджеру сказали сократить его команду на треть. 5 из 15 человек должно быть уволено.
Менеджер сильно задумался. Никто у него увольняться в кризис не хотел. Все его люди были хорошими работниками, и объективно он не мог выделить каких-то аутсайдеров. То есть отбор людей для увольнения должен быть случайным, а соответственно эти уволенные люди будут считать решение несправедливым, а самого менеджера нехорошим. Менеджер так делать не хотел.
И менеджер придумал замечательный выход. Пусть команда сама примет решение, а он будет ни при чём. Он сказал следующую мотивирующую речь: Друзья, в нашей компании тяжёлые времена. Мы вынуждены расстаться с пятерыми из вас, но вы все очень хорошие работники, и я не могу никого из вас уволить. Вы лучше меня знаете свои обстоятельства, поэтому обсудите между собой всё и решите, по кому увольнение ударит слабее. Вот вам листок, я жду на нём пять фамилий к концу дня. И менеджер ушёл из кабинета, полностью устранившись от принятия такого неприятного решения.
Через пять минут после ухода менеджера команда разругалась вдрызг. Потому что один из разработчиков, Петя, заявил, что он старейший член команды и должен остаться. Ему недавно принятая разработчица, Оленька, язвительно ответила, что увольнениеэто не пенсия, и выслуга лет здесь не работает. Он в ответ с шовинистической уверенностью в собственной правоте заявил, что Оленька-то в декрет выскочит и будет сидеть на шее мужа, а ему семью кормить. Оленька, обиженная до глубины души, выбежала из кабинета, и Пётр записал её первой в список. Оставшиеся в кабинете испытали некоторое облегчение от того, что их шансы повысились, и сразу устыдились этого чувства. Другой из недавно принятых разработчиков, Олег, поняв, куда идёт дело, закричал: А чего это ты, Пётр, список составляешь?. И начал вырывать лист. Завязалась потасовка, в ходе которой Олегу разбили нос, и он вышел в туалет. Его имя записали в изрядно помятый листочек. Снова все испытали облегчение и сразу устыдились его.
В общем, день у команды прошёл нескучно. Листок рвали и переписывали. Возникали стычки и склоки. Каждый припомнил всё, про каждого из коллег. Кто-то не выдерживал и уходил. Кто-то из ранее ушедших возвращался. В общем, менеджеру листочек с пятью фамилиями пришёл только в конце дня. Он очень удивился, так как ещё утром к нему пришла Оленька с готовым списком. Оснований не доверять тому списку у менеджера не было, так как фамилия Оленьки там была первой. Он уже составил приказ и утвердил его у руководства. Пётр тоже был в том списке.
Команда больше никогда не работала, как единое целое. Вскоре все участники этих событий нашли себе другое место работы. Проект не выдержал таких ударов судьбы и был закрыт.
Желая остаться добреньким менеджер разрушил свою команду, и причинил много вреда ни в чём не повинным людям. Он перекинул принятие решений на свою команду, которая не имела ни навыков, ни полномочий такие решения принимать. Поэтому вся ситуация и вылилась в такой небольшой филиал ада.
Как было правильно менеджеру провести сокращение команды? Да как угодно! Он мог выбрать пятерых по алфавиту, по времени приёма на работу или полностью случайно. Да, ему пришлось бы объяснить, что его выбор несправедлив, но это просто потому, что никакой справедливости в этой ситуации нет. Да, был бы негатив, направленный против него, но это неотъемлемая часть работы! Менеджер и нужен, чтобы нести ответственность за свои решения.
Менеджер не может действовать, исходя из одобрения других людей. Даже попытка подобного поведения пагубно отражается на других. Он должен делать то, что считает нужным.
История про жажду критики
Я работал в одной компании, где было принято очень мягко работать с сотрудниками. Там было не принято выражать критику, не важно, насколько осторожной она была. Там менеджеры очень хорошо прокачивались в сглаживании острых углов и избегании конфликтов. А работа была тяжёлая. Не все выдерживали. Многие уходили в нервный срыв, а кто-то просто брал на себя слишком много и не справлялся, подводя команду и заказчика.
Но даже, когда кто-то из команды начинал вести себя непрофессионально, его не одёргивали. Его очень мягко направляли, советовали, уговаривали. Часто подключали специалистов HR, которые так же мягко пытались привести человека в норму. Даже когда становилось очевидно, что сотрудник не может выполнять свои обязанности на нормальном уровне, его переводили на более спокойный проект, давали лёгкие задания, оставляя формально ту же должность. Людей не расстраивали.
Увольняли людей, только когда они полностью съезжали с рельсов. Например, один из разработчиков, добавленных на мой проект, просто не появился на работе, а в ответ на мои запросы пришёл, устроил истерику и ушёл домой. Таких просили уволиться, но не сразу, а через несколько месяцев мучений всех окружающих.
Кстати, именно работая в той компании, я понял, что критика как инструмент управления, в общем-то, менеджеру не нужна. Она важна для развития человека, и то только если человек готов её воспринять. Но даже у таких готовых к критике людей первая реакция на критику негативная. А для менеджера это лишние сложности. Даже если человек плохо выполнил свою работу, можно просто уточнить, как вы хотите, чтобы она была выполнена. Без всякого негатива. Можно даже извиниться, что изначально некорректно поставил задачу. Признать ошибку, похвалить человека и пойти дальше, унося критику с собой. Я и сам научился так делать, и много раз видел, как так делали с другими.
Когда я увидел в деталях несколько таких ситуаций, то я задумался. Это что же получается, если я не потяну свою работу, то я об этом даже и не узнаю? Меня утешат, успокоят и переведут на какой-то полу-фиктивный проект, где я даже нормальной работой заниматься не смогу? Я не буду даже понимать, что со мной что-то не так, потому что от внешних раздражителей меня отгородят, а правды о моей работе я и не услышу.
В результате вместо благодарности к компании за заботу, я начал постепенно не доверять своему руководству и компании в целом. Я пытался прямо и косвенно получать обратную связь о своей работе, но мне очень не хватало уверенности в том, что со мной будут говорить открыто. Я не верил, что мне скажут правду, если эта правда будет мне неприятна.
В результате это недоверие стало одной из причин, по которой я компанию сменил. Зато я на своём примере понял, насколько прямота нужна людям. А прямота иногда включает и критику.
Раздел 3. Бабло
Менеджер по роду своей деятельности много имеет дела с деньгами: с бюджетом заказчика, с зарплатами команды, с тратами на поддержание инфраструктуры, с покупкой лицензий и т.д. С бытовой точки зрения кажется, что деньгиштука простая и понятная. Но на практике возникает много ситуаций, когда деньги работают по-разному в разных ситуациях. Давайте поговорим про эти сложности.
Прибыль и затраты
Любому работнику нужно понимать основы экономики его компании, так как это влияет напрямую на много текущих вопросов. Для менеджера такое понимание является критичным. Давайте рассмотрим на примере разницу в экономике аутсорсных и продуктовых компаний и следствия, которые эта разница имеет.
За что компания получает деньги? Аутсорсная компания обычно работает в формате бодишопа и получает деньги, перепродавая время своих разработчиков. Обычно аутсорсные компании очень хорошо умеют перепродавать людей, поэтому имеет место прямая зависимость: чем больше людей работает, тем больше прибыли компания имеет. Отсюда следует эта известная истина, что аутсорсные компании стремятся сохранить сотрудников всеми силами. Если разработчик угрожает уволиться, то это страшная угроза. Кроме проблем на проекте из-за ухода человека, компания получит меньше прибыли.
Продуктовая компания получает деньги за продажи своего продукта. У неё может вообще не быть ни одного разработчика (такое случается, например, на старых продуктах, которые слабо поддерживаются), но она будет получать деньги. Разработчики для продуктовой компанииэто в первую очередь источник расходов. На доходы они влияют косвенно, разрабатывая продукт.
Иногда забавно, когда разработчик, привыкший к условиям бодишопа, пытается шантажировать своего менеджера, угрожая уволиться. В продуктовой компании эта угроза воспринимается совсем не так. Да, менеджер будет стремиться сохранить хорошего специалиста, потому что знает, как трудно такого найти. Но если разработчик проблемный, то у менеджера будет большой соблазн отпустить его. В этом случае он экономит деньги компании, а не лишает её прибыли, как в бодишопе.
С прибылью разобрались. А что составляет основные затраты компании? В аутсорсе всё просто. Основная статья затратэто зарплата технических специалистов, особенно разработчиков. Вспомогательный персонал относительно немногочислен. Затраты на инфраструктуру невелики по сравнению с фондом зарплаты.
Поэтому, например, в аутсорсе большая проблема, когда разработчики остаются без занятости на проекте какого-то заказчика. Прибыли они не приносят, а убытки ощутимы. В небольших аутсорсных компаниях, если разработчику не находят новый проект буквально за неделю, то его увольняют. Поэтому же в аутсорсных компаниях очень болезненно решается вопрос повышения зарплаты. Если компания не может повысить рейт, по которому она продаёт человека заказчику, то это означает жёсткий потолок по зарплате, выше которого компания начнёт терять деньги.