Ключ к выживанию для представителей клиентоориентированных профессий, в том числе разработчиков программного обеспечения, — научиться распознавать признаки того, что, несмотря на все усилия, проект проваливается. К примеру, серьезной помехой успеху могут стать «трудные» заказчики, к таким можно отнести и некоторых из вас.
Задумывались ли вы, что, выступая в роли заказчика, вы иногда напоминаете разработчикам ПО мифическое чудовище? Возможно, проект и начинался отлично, но потом свернул с пути, чтобы погибнуть медленной смертью в бюрократическом тумане. Возможно, будучи могущественным топ-менеджером, внезапно вышедшим из-за кулис, вы уничтожили проект на полпути? А может быть, неразумное требование, предъявленное разработчику слишком поздно, лишило его всех шансов получить плату за проделанную работу.
Глазами ИТ-разработчика покажем, какие бывают невыносимые клиенты. Не исключено, что в некоторых вы узнаете себя. И возможно, такой взгляд со стороны поможет наладить рабочую обстановку и не провалить проект.
Кракен
Подобно мифическому морскому чудищу, по имени которого и назван этот вид заказчика, кракен всплывает неожиданно, нередко посередине проекта, чтобы обвить разработчика своими гигантскими щупальцами — конфликтующими требованиями.
С одной стороны, вы хотите, чтобы клиент был удовлетворен и получил систему, которая ему нужна. С другой — выполнить противоречивые требования непросто. С третьей — чем больше требований, тем внушительнее может быть выставленный счет. С четвертой — конфликты могут привести к провалу проекта. С пятой... ну, вы поняли.
Кракен же не видит никаких конфликтов; ведь обычно подобные требования поступают от разных отделов, которые не знают о запросах других. К тому же, будучи огромным, кракен попросту не понимает, что своими трепыханиями он ломает вам мачту и давит команду.
Как только вы поняли, что одно щупальце не знает, что делает другое, созывайте общее собрание. Только открыто перечислив и обсудив противоречивые требования, вы сможете утихомирить кракена. Возможно, окажется, что при групповом обсуждении какие-то конфликты уйдут сами собой, а может быть, придется приложить дополнительные усилия, чтобы выпутаться из клубка, способного утянуть ваш проект на дно.
Стригой
Подобно летающему кровососу из Dungeons & Dragons, стригой в одиночку нананосит малозаметный вред — мелкая дрянь, которая вас почти не задерживает. Но рой стригоев — это уже серьезная проблема. Если не передавить их вовремя, ваш проект может оказаться обескровленным.
Обсуждение начинается невинно: у заказчика есть идея, кажущаяся разумной (по крайней мере, в теории), — и вы задаете уточняющий вопрос. Вместо того чтобы ответить, заказчик зовет кого-то на помощь. Этот человек вроде как отвечает на ваш вопрос, но предлагает еще одну идею, слегка противоречащую первой, и вам кажется, что этот конфликт можно устранить.
Вы задаете новый вопрос, и тут приводят еще одного человека на помощь, потом еще и еще... и у каждого новые запросы, предложения, входящие в противоречие с предыдущими, это порождает новые вопросы, отвечать на которые приходят все новые люди. Не успеваете вы опомниться, как оказывается, что вокруг собралась толпа людей, одновременно выкрикивающих нереализуемые противоречивые требования. И вас начинает одолевать агорафобия.
Ограничьте до минимума число людей, которых приводят на «помощь» при обсуждении, особенно если каждый новый участник только больше запутывает всё, вместо того чтобы давать ответы на вопросы. А как только вы почувствуете себя в опасности, сделайте вид, что вам позвонили, и ретируйтесь.
Гидра
Клиент-гидра — маленький зловредный кошмар: вы отрезаете одну голову, а на ее месте вырастают две новых. Единственный способ победить — отрубить все головы одновременно.
Гидры бывают двух видов: нескончаемый поток запросов и условий, выдвигаемых до заключения договора (это если повезло), либо нескончаемый поток обязательных к выполнению требований и изменений, когда у вас уже есть контракт с фиксированной ценой, но с неопределенным графиком выполнения.
Чтобы новые головы не вырастали на месте отрубленных, их надо прижигать. Приходить с факелом на деловое собрание — это было бы слишком, но следующая по степени действенности мера — это контракт, в котором оговорены конкретные артефакты продукта и четко описан процесс внесения изменений.
Минотавр
Получеловек-полубык, прячущийся в недрах запутанного лабиринта, Минотавр — это могущественный топ-менеджер, таящийся за кулисами до тех пор, пока вы не приблизитесь к сдаче проекта, а потом внезапно возникающий, чтобы пустить ваш проект ко дну.
От этого создания нет гарантированных средств защиты. Нередко оно обладает непобедимым патологическим самомнением. Но о самом его существовании можно догадаться по косвенным фразам типа «Это Джим не примет» или «Давайте позже спросим у Джима, чтобы сейчас не сбиваться из-за него с графика». Любая попытка с вашей стороны заранее привлечь «Джима» к процессу будет встречена лишь испуганными взглядами.
Если именно «Джим» должен поставить подпись под счетом на ваш гонорар, сворачивайте проект, ибо вы обречены.
Дракон
Может, это будет сюрпризом, но заказчики из драконов никудышные. Они копят свое золото, из прихоти сжигают дотла консультантов и вообще не очень сговорчивые. И если вы ждете рыцаря в сияющих доспехах, который бы победил дракона, флаг вам в руки. Драконы довольно тщеславны и могут быть падки на лесть, а еще они вероломны и вряд ли сдержат данные ими же обещания. Для них гораздо проще вас просто сожрать.
Дракона можно опознать по необоснованным требованиям, по ненасытности, по нежеланию платить, по огню, которым он плюется, и по чудовищному скрежету его когтей, когда он не в духе. Скорее всего, контракт с драконом выполнить не удастся — он вас уволит, дыхнув в спину пламенем.
Лучший способ не связываться с драконом — пообщаться с теми, кто работал с тем же заказчиком до вас. Обращайте внимание на перечисленные выше признаки, а также на выжженную землю и кости, разбросанные перед входом в его логово; откажитесь от контракта — и сохраните себе жизнь, чтобы продолжать программировать.
Единорог
Кто бы что ни говорил, но единорог — это настоящий кошмар. Он проявляется в виде идеальной возможности... которая никогда не воплощается в жизнь. Вам описывают соблазнительную перспективу. Теоретически единорога можно обуздать, но чаще всего он, едва появившись, незамедлительно исчезает, и в итоге вы тратите неимоверные усилия, пытаясь выследить и приручить его. А если к нему приблизиться, есть серьезная вероятность напороться на его рог.
Если какая-то возможность выглядит слишком хорошей, чтобы быть правдой, если она беспорядочно появляется и исчезает, если ее можно увидеть только на расстоянии, если вам приходится снова и снова отправляться на поиски приключений, чтобы доказать, что вы достойны проекта, — это единорог.
Идите прочь, здесь вам нечего ловить.
Оборотень
Большинство заказчиков не монстры. Они производят впечатление людей дружелюбных и с готовностью сотрудничают. Но время от времени заказчик может вдруг превратиться в кровожадного зверя, раздирающего вас на куски. Это оборотень.
Что хуже, когда он возвращается в человеческое обличье, то ничего не помнит и не верит вам — если, конечно, вам вообще удалось выжить. В мире программного обеспечения в оборотней обращаются не только с наступлением полнолуния. Внезапное превращение в отвратительное существо может быть вызвано тем, что вы поставили под сомнение какую-нибудь технологию, являющуюся для него священной коровой, или указали на очевидные недостатки сомнительной бизнес-практики.
Одолеть заказчика-оборотня можно, если знать, что именно вызывает его метаморфозу. Подсказку могут дать его прежние консультанты. Например, такую: «Не пытайтесь обсуждать с ним проект в конце месяца». Или: «С ним прекрасно можно работать, только не критикуйте его пристрастие к электронным таблицам».
Сфинкс
Сфинкс осыпает разработчиков и консультантов загадками и пожирает тех, кто отвечает не так, как он хочет (совсем как кадровики претендентов на вакансии в некоторых пафосных технологических компаниях). Загадки могут быть непростыми; на первый взгляд может показаться, что речь идет об обычных бизнес-проблемах, вроде трудовой дисциплины, низкой продуктивности, проблем с качеством и излишней текучкой персонала. Но — «неверный» ответ, и вы искромсаны, причем, как это часто бывает со сфинксами в мире разработки ПО, верного ответа может вообще не быть!
Сфинкса трудно распознать вовремя, но если вы услышали (или случайно подслушали) фразы вроде «это уже третий консультант за год» или «запасайтесь попкорном, у нас новичок», то весьма вероятно, что вас ждет провал по необъяснимым причинам. Со сфинксом лучше договориться об оплате вперед.
Нежить
В мире ПО есть много видов нежити, по-разному выглядящей и имеющей различный арсенал губительных способностей. Некоторые поначалу выглядят обычными, даже милыми людьми, а потом вдруг набрасываются на вас, когда вы уязвимы, и высасывают жизненные силы из вашего проекта. Другие — призрачные, бестелесные сущности, которые проходят сквозь стены и другие препятствия, постоянно являясь на вашем проекте и пугая разработчиков. Какую бы форму ни принял заказчик-нежить, он особенно страшен, так как беспощаден и неуязвим, а хуже всего то, что никто вам не верит, когда вы о нем рассказываете.
Мифологическую нежить можно победить различными способами в зависимости от вида: осиновый кол в сердце — если это вурдалак, экзорцизм — если злой дух, отрубание головы — если зомби и т. д. Но в мире ИТ самый безопасный способ — «уволить» такого заказчика и найти новую, более доходную работу.
Тролль
Тролли таятся в засаде, нежданно выскакивая перед ничего не подозревающей жертвой. Любой, кто заходил в разделы комментариев на сайтах, узнает интернет-тролля из мира ИТ.
Заказчик-тролль воспринимает как оскорбление все, что вы ему говорите, независимо от формы высказывания, в том числе цитирование его собственных слов. Тролль получает наслаждение от длительной переписки по электронной почте, «съезжая» с первоначальной темы в загробные миры демагогических аргументов, потому что ему кажется, что это весело, или просто из-за того, что у него есть любимая техническая «лошадка», которую он оседлал и не желает слезать.
С троллем у вас ничего не выйдет. Вы не сможете вразумить его независимо от уровня вашего опыта в роли технического специалиста или консультанта. Придется поступить, как диктует мудрость Интернета: не кормите троллей, игнорируйте их.
Если ваш заказчик — тролль, «увольте» его. Если же тролль работает на вашего заказчика, избегайте общения. Жалуйтесь заказчику на выходки тролля, подчеркивая свое стремление исключить какой-либо контакт с ним. Не слишком элегантное решение, но если вы утратите бдительность, тролль может вас съесть.
Сирена
Сирены, как известно, заманивают мореплавателей своей красотой и чарующими голосами, чтобы разбить корабль о скалы и рифы. Настоящие сирены среди заказчиков встречаются редко, а вот песни они могут петь подобно сиренам довольно часто, причем не хуже. (В сущности, разработчики и сами для себя могут быть сиренами, отвлекаясь на новые заманчивые технологии, вместо того чтобы заниматься делом.)
Заказчик-сирена может искушать вас предложениями, от которых невозможно отказаться; обычно он обещает гораздо больше работы в будущем, если вы сделаете для него что-то «простое» прямо сейчас бесплатно. Но велика вероятность того, что задание на сегодня окажется не таким уж простым, а в будущем никакой работы вы не получите. Так что не поддавайтесь искушению — лучше заткните уши, отвернитесь и придерживайтесь курса.
Людоед
Заказчики-людоеды имеют неприятную привычку чисто рефлекторно губить идеи и проекты. Они ничего не могут с собой поделать! Аллергия ли это на новые идеи, тайная нацеленность на провал или просто ненависть лично к вам, не имеет значения: с людоедом у вас ничего не получится.
Если ваш заказчик ведет себя, как людоед, мешая прогрессу или в зачатке уничтожая любые ваши инициативы в угоду собственным новым идеям, то ваш единственный выход — обратиться к помощи свыше. Простейший способ — отправить людоеду и его боссу составленное в уверенном тоне письмо с перечислением ваших предложений или начинаний, которые были «сожраны» (только не употребляйте это слово в письме — людоеды известны своим дурным нравом), разъясняющее, каких целей и как именно вы пытались достичь, и содержащее просьбу о помощи. Если ничего такого не сделать, вы только зря потратите время, пытаясь воплотить в жизнь недостижимую мечту.
Не удивляйтесь, если людоед уволит вас — людоеды обидчивы.
Блуждающий огонек
Блуждающие огоньки — ваш путеводный свет на туманном болоте, появляющийся, когда он вам больше всего нужен. Но как только вы приближаетесь к нему, он отодвигается, будто приглашая вас последовать за ним. Думая, что вы спасены, зачарованные огоньком, вы заходите все дальше в болото, прямиком к своей погибели.
Знакомая ситуация? Вначале такой заказчик напускает туману: противоречивые, неясные требования; множество начальников и подписей; серия запросов, предложения неоплачиваемых или низкооплачиваемых концептуальных проектов. Но вы так и не получаете ни серьезного контракта, ни четко оговоренных целей. Конечный результат — медленная смерть в попытках вырваться из мрачного вязкого болота.
Большинство заказчиков и сами не желают быть блуждающими огнями, это происходит само собой, потому что они не могут остановиться на какой-либо цели или конкретном пути ее достижения. Многие из них не разбираются в технологиях. Другие просто сами блуждают в тумане, настолько погрязнув в собственных бюрократических процессах, что не могут вырваться. Но вам не нужно вместе с ними отправляться на верную смерть. Так или иначе, не дайте увести себя в туман и трясину.
Те, кто стал блуждающим огоньком преднамеренно, более вредоносны. Нередко они просто используют вас для получения информации, тогда как сами уже выбрали другого исполнителя либо просто изучают рынок. Способ избежать их — обратиться к вышестоящему начальству. Почувствовав, что вы общаетесь не с тем, с кем надо, добивайтесь, чтобы вас связали с человеком, у кого есть реальные полномочия и кто отвечает за общий замысел проекта. Скорее всего, это будет не непосредственный начальник того, с кем вы общаетесь, но начальник его начальника или кто-то еще выше по служебной лестнице. Если ваш контакт не желает связывать вас с начальством, вам надо забраться на дерево, откуда вы сможете разглядеть окрестности поверх тумана, и найти хорошую опору, иначе останетесь ни с чем.
Франкенштейн
Чудовище Франкенштейна неправильно понимали. Собранное из фрагментов умерших людей, оно пыталось быть хорошим, но у него ничего не выходило.
Чудовище Франкенштейна — это обычно не сам заказчик, а результат взаимодействия с заказчиком, который не ценит согласованные методы, чистый код и грамотно организованные тестирование, рефакторизацию, взаимодействие с пользователем и т. п. В романе Мэри Шелли истинным монстром был сам доктор Франкенштейн, и именно его черт надо остерегаться в заказчике.
Ваш заказчик попросил о сомнительном обходном решении? Или он сторонник нравственно неоднозначных принципов, вечно подчеркивает, что хочет результатов прямо сейчас любыми средствами, при этом абсолютно беспощаден и ни в какую не желает устранять беспорядок, который сам же создал? Если так, то, возможно, вы работаете на доктора Франкенштейна и, сами того не желая, создаете чудовище.
Этика разработки ПО требует предусматривать меры, позволяющие сохранять чистоту кода. Экстренные исправления и дополнения неизбежны, но нельзя просто «стрелять и забывать» — при обсуждении срочных модификаций (которые со временем вполне способны захламить вашу кодовую базу настолько, чтобы вызвать к жизни чудовище) непременно нужно предусмотреть время и средства на рефакторизацию, тестирование, а также, если понадобится, на повторный анализ и переработку затрагиваемых подсистем.
- Steven A. Lowe. 14 nightmare clients — and how to defang them. InfoWorld. Jan 19, 2015