Что плохого в работе на результат
Все чаще приходится слышать: "Работай на результат!"
"Работай на результат!" — кричит начальник подчиненному, чтобы заставить этого тупого неповоротливого кретина, принятого в команду по протекции, приносить хоть какую-то пользу общему делу.
"Мы работаем на результат!" — бахвалится бригада голодных гастарбайтеров, надеясь, что, если они будут кричать именно это, их предложение хотя бы немного выделится среди гула голосов тысяч голодных и безработных.
"Обязательна ориентированность на результат!" — напишет пожилая кадровичка «ГорАвиаВагонМорСтроя» в требования к кандидату на должность помощника бухгалтера, будучи уверенной в том, что раз все так пишут, то и ей надо.
"Наш девиз — Работа на Результат!" — именно так, с двумя Большими Буквами для большего пафоса пишет на корпоративном сайте очередной говноконторы-однодневки молоденькая девочка-всё-в-одном, гордо именующая себя помощником руководителя по связям с общественностью. И этот самый руководитель, даже не знающий, что секретутка это, оказывается, ни больше ни меньше, целый его помощник, тоже употребит эту фразу на фуршете в городской администрации с целью создать себе рекламу в среде местных бюрократов.
Культ карго. Мало кто из произносящих эту фразу может внятно объяснить, какой смысл в неё вкладывается. Люди верят в неё, как в волшебную формулу, заклинание, они пихают её куда ни попадя, надеясь, что она придаст им уникальность, выделит их из толпы таких же неудачников. Организации, Компании, конторы да и откровенные «шараги» не мыслят себя без этого лозунга. Как же это, «Рога и копыта» работают на результат, а мы, что, хуже?
А хуже ли?
О чем они все
В самом деле, о чем все эти люди? Что они имеют ввиду, говоря, что они, в отличие от других (интересно, кому именно они себя противопоставляют) работают на результат. От кого они пытаются отделиться, выкрикивая этот бездарный лозунг?
Последний вопрос наиболее интересен. Как работают эти самые «другие»? Очевидно, что не «на результат», иначе не было бы смысла от них отделятся. Сказать, что они совсем не работают — тоже нельзя, ведь тогда на результате не стоило бы акцентировать внимание, всё было бы намного проще: "Мы работаем [а они — нет]!"
Пользуясь известной поговоркой, примем, что противоположным тезисом будет являться «Ориентированность на процесс». Запомним её в качестве антитезиса, она нам понадобится чуть позже.
Итак, разделяя, как это принято в разных псевдоинтеллектуальных статьях, всю совокупность людей на две категории, посмотрим, чем же они отличаются. Для простоты будем рассматривать на примере. А поскольку Хабр — ресурс околоайтишный, то и примеры возьмем из IT, точнее, из эникейства, как области знания (ха-ха, знание в эникействе, каламбур), наиболее близкой автору.
Пример из жизни эникейщиков
Андрею и Павлу поставили одну и ту же задачу: развернуть инсталляцию нового клиента КИС в своих сетях. Андрей справился и доложил об успехе в установленный срок, а Павел — сообщил о возникновении неких проблем (для простоты давайте считать, что сети и пользователи у наших героев одинаковы, разница только в них самих). Андрей сказал, что было трудно, но он сделал. Павел утверждает, что ему тоже было трудно и молчит, потупив взор, когда его спрашивают об итоге его усилий.
Кто из них ориентирован на результат? Очевидно, Андрей. Давайте посмотрим, как ему это удалось.
В отличие от Павла, который первым делом спросил сисадмина о том, что говорит корпоративная стратегия деплоймента ПО относительно установки клиента на конечные точки (предварительно, естественно, убедившись, что она таки ничего об этом не говорит), Андрей сразу бросился исполнять.
Переполненный осознанием собственной нужности и важности, он бегал от одного компьютера к другому, сгоняя сотрудников с рабочих мест ("Брысь! У меня Распоряжение!"), запускал Setup.exe, выбирал десяток компонентов, с умным видом ставил галочки в чекбоксы, поминутно сверяясь с объемной инструкцией от сисадмина, и ждал двадцать минут, болтая с симпатичными сотрудницами и уничтожая накопленные в «женских» отделах запасы печенек. Поняв, что такими темпами успеть в срок не получится, Андрей несколько раз задержался на работе. Это позволило ему выполнить задание.
Посмотрим теперь, чем в это время занимался наш аутсайдер, Павел. Получив ответ от сисадмина, который, если убрать совсем уж непечатную лексику, звучал примерно как: "Нечего умничать, ручками поставишь!", Павел начал читать документацию на сайте производителя. Убедившись в том, что модуль деплоймента таки существует в природе, но требует отдельной лицензии, Павел начал «ковырять дистрибутив». Затратив некоторые усилия и определенное время на тестирование, Павел получил скрипт, формирующий MSI-обертку для установки в AD из оригинального дистрибутива.
Случилось это ровно через день после завершения срока. Павел сразу же назначил развертывание в сети свежепротестированного пакета и пошел «на ковер» получать заслуженное наказание.
Пример из жизни начинающих «программистов»
Примерно в это же время Евгений и Антон, начинающие эникеи-быдлокодеры, получили задание написать небольшие модули, обеспечивающие импорт данных в учетную систему организации. Евгений сразу же бросился выполнять и написал тысячу строк отборной «лапши». «Лапша» работала и даже импортировала данные из тестовых файликов в нужные таблицы БД. Прямо внаглую, минуя API, напрямую в таблицу. "Не, ну а чо?!", говорил Евгений. Его творение работало быстро: он не использовал постинкрементов, строил временные индексы и вообще делал все круто. Он получил результат.
Антон не стал писать код, а вместо этого полез разбираться с интерфейсами импорта-экспорта. Осилив документацию, он понял, что импорт нужно делать с помощью метода «Import» класса «SuperPuperClass», создавать экземпляры которого у него не было полномочий. Антон отправил заявку на получение необходимых прав в системе, прошел процедуру согласования, получил таки права и написал свой импортер. Но было уже слишком поздно. Фейл.
Что общего в этих примерах? Пока «неудачник» обдумывает решение и «умничает», правильный пацан делает. Он проявляет «креативность» в хитросплетениях говнокода, настойчивость в нарушении рабочего процесса сгоняемых с насиженных теплых стульев сотрудников при установке программ, решимость и преданность делу его велика настолько, что он даже немного задерживается на работе. Он умеет добиваться результата, он успешен. В отличие от.
Ты так говоришь, как будто это что-то плохое
Ну, да. Это и есть «что-то плохое». Это, вообще говоря, ужасно. Но прежде, чем обсуждать это всерьёз, давайте посмотрим, что случилось с нашими героями.
Через год после описываемых событий вышла новая версия клиента КИС и Андрей с Павлом получили новое задание на обновление. Андрей, вдохновленный своим предыдущим опытом, бросился бегать по офису, удалять старые версии и устанавливать новые.
Контора разрослась, открыли маленькое подразделение на другом конце города, где печенюшки были особенно вкусны, а сотрудницы — сговорчивы. Успешный реактивный Андрей носился по этажам, возбуждая нездоровый интерес молоденьких бухгалтерш и фактуровщиц, но к завершению третьего дня осознал, что не успевает.
Серьезно так не успевает, настолько серьёзно, что остаться вечером после работы (все равно Маринка поздно заканчивает, подожду её, будет хороший повод подкатить) уже не поможет. Мало того, что теперь приходится удалять старую версию клиента (вот же гады, обновление поверх не работает!), мало того, что новая версия ставится в два раза дольше (и чего эти криворукие туда напихали!), так еще и компов стало больше. Андрей больше не контролировал ситуацию. Он стал жертвой собственного стремления к результату.
Неудачник Павел уныло запустил свой унылый скрипт. Нет, он не был образчиком совершенного кода. Наверное, настоящий программист написал бы лучше, но Павлу хватало и этого. Скрипт вылетел с ошибкой из-за того, что имя одной из папок новом дистрибутиве изменилось, но это не было проблемой для Павла. Одно маленькое изменение в конфиге скрипта, двадцать минут ожидания перепаковки, и вот он, пакет для развертывания новой версии через AD. Десяток движений мышкой, — и задание на удаление старого пакета с последующей установкой нового разошлось по компьютерам. Скучно. Никакого драйва. Нет необходимости добиваться результата. Результат есть, а «ориентированности на него» — нет.
Импортер Евгения три месяца назад запорол базу. "Не, ну а чо?!", по привычке сказал Евгений. "А я чо, я ничо!", сказал его начальник, разрешивший использование лапшекода в продакшне. Пришлось нанять внешнего программиста, который, продираясь в дебрях перекрестных вызовов, тщетно пытался понять, каким же надо быть извращенцем, чтобы придумать такой уродливый гигансткий «GodClass», лезущий своими мерзкими щупальцами в нежное лоно базы.
Медленная и неказистая тулза Антона медленно и уныло вызывала методы доступного через API «SuperPuperClass». Эти методы выполняли сотни проверок валидности загружаемых данных, таблиц базы, схемы и, почему-то версии MSXML. Пользователей несколько раздражала медлительность процесса. Они не знали ни того, что разработчик учетной системы три месяца назад выпустил мажорный апдейт, сменивший структуру БД и обновивший (фактически, перезаписавший) движок, ни того, что реализация хитрого метода требовала строго определенной версии XML-парсера, ни того, что этот парсер вообще существует. Не знал об этом и Антон, благодаря профессионализму разработчика, оставившего совместимость версий на уровне API. Унылые будни уныло текли.
Решения, ориентированные «на результат», оказались бомбами замедленного действия. Они внедрились в процессы конторы и стали ждать подходящего момента. Нет, они не сработали сразу, когда про них еще помнили, когда их последствия можно было бы легко устранить. Они, как будто обладая разумом и злой волей, направленной на разрушение, ждали своего часа, ждали, пока контора вырастет, чтобы увеличить масштаб разрушения.
Суеверная жена директора, Инга Альбертовна, объяснила все проделками Маньки-секретарши. Эта накрашенная ведьма с вырезом до пупка, наверняка, принесла в контору коробку бесов, которые все поломали. Пришлось уволить Маньку к вящей радости Инги Альбертовны.
Кто виноват
Вот так обычно ставят вопрос наши успешные менеджеры. Формулировка «в чем причина» для них сильно сложна, они привыкли искать «виноватого» (наверное, чтобы свалить на него ответственность, которую в ином случае пришлось бы нести им самим). Не будем уподобляться этим милым людям, и разберемся сначала в причинах.
А причина проста — та самая «ориентированность на результат». Исполнитель имеет критерий («установлен клиент на всех ПК или нет», «импортировались данные из тестового файла или нет») и выстраивает свою деятельность таким образом, чтобы достигнуть выполнения этого критерия. Казалось бы, что плохого? Ничего. В сферическом случае в вакууме — ничего.
В реальной жизни есть множество причин, по которым это не работает так, как хотелось бы. Рассмотрим наиболее очевидные из них — склонность человека к оптимизации энергетических затрат и закон дырявых абстракций.
Первый фактор приводит к тому, что исполнитель, видя четкую и ясную цель, оптимизирует деятельность для её достижения. "Мне сказали покрасить забор, я и покрасил. Никто не говорил, что нельзя красить поверх грязи!" "Заказчик просил импорт из экселя, я сделал. Про импорт из старых версий речи не было!"
Хотим мы этого или нет, но исполнители всегда будут стараться достичь выполнения задания минимальными усилиями. Есть, конечно, перфекционисты, но их слишком мало, чтобы тратить на них время. Обычный сотрудник, зная, что он может совершенно честно отчитаться о выполнении задания, пойдя самым простым и очевидным путем, не станет утруждать себя размышлениями о красоте и масштабируемости решения.
Сказали поставить клиент, он поставил. Никто ведь не говорил «сделать так, чтобы клиент был установлен сейчас и быстро разворачивался новыми версиями в будущем». Напротив, решение этой, надуманной, задачи принесло бы исполнителю неприятности, как это произошло с Павлом.
Андрей с Евгением просто оказались более эффективными оптимизаторами. Они прекрасно решили задачу ровно в тех рамках, в которых она была поставлена. Они эффективно добились результата. Три слова, так любимые российским руководством, отлично описывают всю глубину их фейла!
Но, может быть, ошибка была в постановке задачи? Что если менеджерам просто нужно было изменить формулировку? Сказать Андрею, что нужно «развернуть систему деплоймента», а Евгения заставить использовать API?
"Нет, брат, не пойдет! Не получится!" — со всей пролетарской ненавистью ехидно ответим мы хитрому менеджеру, решившему легко от нас отделаться. Получи, гад, по голове законом дырявых абстракций!
Ведь ты сам, тунеядец, только что попытался схалтурить: решить задачу наименьшими усилиями, просто поменяв формулировку. Думаешь, исполнители хотят работать больше тебя?! Ну, уж нет, они тоже будут находить лазейки во все уточняющихся формулировках, а ты будешь ставить им ловушки, которые они будут обходить… Типичная гонка вооружений. Напомнить, чем они заканчиваются? Исчерпанием ресурсов: вы просто утонете в бюрократии.
Нельзя придумать такие формулировки, которые исключили бы неверное прочтение и чрезмерную локальную оптимизацию. Просто потому, что абстракции протекают. Просто потому, что все пойдет не совсем так, как вы задумывали.
Я только один раз, честно
"Вообще, я согласен, но сейчас я сделаю как-попало. Понимаешь, времени нет, результат нужен вчера. Один раз, только один!". Ага, знаю, слышал. Один модуль не покрою тестами. Один сервер отправлю на удаленную точку, не проверив. Одну проблему решу, не регистрируя в HelpDesk. Один прием работы не опишу в конторской Wiki. Один раз перебегу дорогу на красный свет. Такие как ты только и думают, как бы прикрыть «одноразовостью» собственную лень и неспособность к производительному труду.
Как наркоман, впервые упоровшийся дозой опиатов, ты вначале ничего не поймешь. "Я вмазался, но ничего кроме странного шума в ушах и легкого головокружения не ощущаю. Странно, почему меня все так пугали этим?" — думает нарк. "Я закоммитил эту функцию без тестирования, назавтра ничего не сломалось" — говоришь ты.
"Да ладно тебе, у меня сильная воля! И вообще, в прошлый раз ничего не случилось!" — скажет себе наркоман и повторит дозу через пару дней. "Не парься, мы на прошлом проекте тоже нифига не документировали!" — скажешь ты во второй раз.
И оба вы не заметите, как подсядете. А когда осознаете, что произошло — ничего уже нельзя будет изменить. Что? Ты мне хочешь рассказать про гениальных наркоманов хакеров, которые делают все в обход принятых правил и все равно круты? Ну, вот как будешь гением, — поговорим. А пока, жертва неверных стереотипов, запомни: у тебя есть только один шанс избежать падения: всегда делай всё правильно. Даже если действие однократно. Даже если никто не узнает. Даже если кажется, что разницы нет.
Что делать
Не начинать. Отказываться от локальной оптимизации в пользу глобальной и многофактороной. Что? Конкретнее? Эй, менеджер, ты же сам ратуешь за ориентированность на результат! Критерий я тебе дал, достигай и добивайся.
Не нравится? Хорошо, давай посмотрим, что можно сделать. Что будет, если мы откажемся от «ориентированности на результат»? Алхимики говорили, что природа не терпит пустоты. Позаимствуем у них это утверждение. Не бойся, российское корпоративное управление еще не доросло до настоящих научных методов, инструменты алхимиков — вот предел тех высот, на которые ты сможешь подняться.
Так вот, чтобы заполнить образовавшуюся пустоту, примем противоположный тезис: будем ориентироваться на процесс. Запомни, а лучше — запиши: при плохом процессе не может быть хорошего результата! (Да-да, я понимаю, что в глубине души ты все равно думаешь о результате, и выбить это из тебя можно только ударяя бамбуковыми палками по пяткам, но это — не мой метод).
Следи не только за тем, что производят твои подчиненные, но и за тем, как они это делают. Если Пётр один тянет весь отдел, а отдел показывает хорошие результаты, это неправильный отдел. Риски потери Петра слишком высоки (или он у тебя пуленепробиваемый, а?).
Если кодер кодит код, кодя говнокодом разработчик «ускоряет» приложение, заменяя простую и понятную иерархию классов мегаобъектом с кучей инлайнов, это неправильно. Скажешь, иначе нельзя? Значит, проблема не в коде, она в алгоритмах, структурах данных, используемом движке или даже маркетинге (действительно ли вам нужны все эти рюшечки?).
Если шустрый эникейщик быстро пробегает, устанавливая в заданный срок программу на все ПК, это неправильно. Очнись! Аллё! Двадцать первый век на дворе! Какой, нафиг, «бегать по компьютерам»?! А если завтра надо будет три программы поставить? А пять? А быстро снести пиратку по всему офису? Пусть осваивают методы деплоинга приложений в интросети, тысячи их.
Ориентируйся на процесс, заставляй всех делать всё правильно! Правил слишком много? Удали лишние, ты же управленец! Придется думать и работать вместо того, чтобы надуваться и вещать о том, как важно для тебя ориентироваться на результат? Убейся!
Яйцеголовые умники уже давно придумали шесть сигм, бережливое производство, ITIL и прочие непрерывные улучшения. В конце концов, у тебя же MBA, и ты обязан знать про все это! Да что там, даже мне в моем Дальневосточном Заборостроительном Институте про это рассказывали, это старо, как мир.
Сложно? Слишком много слов на непонятном языке? Понимаю, сочувствую. Но есть же и упрощенные версии: code-review, best practices, etc. Выбирай то, что тебе подходит. Не можешь осознать всех принципов, копируй, анализируй, копируй снова. Это — процесс, здесь не будет результата. Он итеративен и повторяем по своей природе.
Ясно дело, ты хочешь возразить мне о важности результата, о том, что заказчики платят за результат, начальство определяет, кого казнить, а кого миловать — по результатам.
Но тут все гораздо проще: если все всё делают правильно, то и результат будет правильным. Если процессы отслеживаются и корректируются в соответствие с глобальными целями и задачами системы (а не выдуманными из головы некомпетентными «консультантами» искусственными метриками), то вы, всей командой, достигнете ваших настоящих (возможно, даже пока неизмышлимых) целей!
Ну, не успеет поставить твой эникейщик софт за три дня, поставит за пять. В первый раз — за пять, а потом — скорость развертывания будет измеряться в часах. И не будет зависеть от размеров конторы. Скажи честно, тебе чего надо: чтобы три дня или чтобы не было проблем с софтом? Шашечки или ехать?
Ну, то-то же. И вообще, в следующий раз, когда захочешь потребовать от кого-то ориентированности на результат, подумай о сексе. Не впечатляет? Ну что ж, ханжа, подумай о жизни. Она, в конце концов, тоже, в первую очередь — процесс!
P.s. Благодарю Nitatunarabe за картинки.
Автор: hdablin