Здравствуйте, ебаные читатели. Циничный галерный менеджер репортинг ин.
Меня часто спрашивают:
• Как мне достичь таких высоких профессиональных высот (sic!) в управлении жирными командами разработчиков;
• Что нужно, чтобы шагнуть на следующую эволюционную ступень в области high-менеджмента айти-фирмой;
• Как грамотно и аргументированно отказать человеку, просящему о повышении?
• Как технично убедить кандидата в сотрудники, что он ноль без палочки, а потому должен быть готов работать за копейки?
• Как заставить работников работать за еду?
Ответы на все эти вопросы подразумевают, что вам придется овладеть искусством гнобления разработчиков. Об этом мы сегодня и поговорим, поделюсь с вами некоторыми секретами в качестве дополнения к статье Как платить программистам меньше.
Зачем, почему?
Но я не хочу никого гнобить! — может возразить кто-то. Все верно, друг! Я тоже человек бесконфликтный, которому бери да проставляй пиво без какого-либо повода, просто так. Но что-то я сижу здесь сейчас, размышляю, и не вижу пива. Если взглянуть на типичного программиста, то сразу становится ясно, что перед тобой простой лох. Он сам не против, чтобы его наебали. И это хорошо для фирмы, т.к. на разработчиках мы будем нехило экономить — хватит не только на пиво, я это гарантирую. Алсо: наебывать разработчика нужно не только потому что он лох, но и просто потому что можешь. Ты ведь крут, не так ли?
Когда?
Когда лучше всего гнобить разработчика? Ответ очевиден: когда они наиболее уязвимы. То есть на собеседовании, или при аттестации, или на тренинге. При желании можно это также делать во время code review или когда консультируешь проектную команду. Не стоит гнобить разработчика, когда он занимается своими прямыми обязанностями, то есть разрабатывает что-нибудь. Почему? Да потому, что он в это время и так огорчен и пребывает в подавленном настроении. Вероятнее всего, ему опять подсунули отвратительно написанное и нетестируемое приложение на тормозящем энвайронменте, а тесты постоянно валятся по непонятным причинам или же никто не хочет их запускать. Гнобление в такой момент не принесет вам никакого морального удовлетворения: от вас просто отмахнутся.
Как?
Существует масса способов как гнобить разработчика. Остановимся на них подробнее.
1. Ad hoc чмырение
Первый и самый очевидный способ – так называемое ad hoc или спонтанно-бытовое чмырение. Рассматривать его в деталях мы здесь не будем, так как оно неспецифично для сферы айти. Перечислим лишь несколько базовых примеров:
• Э-э, епта, иссуа-на! Деньги есть?
• Что ты тошнишь? Водить научись, мудила!
• Вон, Лидке муж норковое манто купил, а ты чего добился, неудачник?
• У Вас не хватает двух справок и одной печати. Зайдите в следующий четверг между 11 и 11:30.
2. Профессиональное гнобление
Профессиональное гнобление – не обязательно то занятие, за которое вам будут платить деньги; скорее это гнобление по профессиональному признаку. Но это не означает, что профессиональным гноблением можно заниматься спустя рукава и как попало. И, естественно, если вы желаете загнобить кого-то профессионально, вам необходимо учитывать всю специфику избранной профессии. В противном случае вы рискуете получить закономерный ответ «Ну и что?».
Технические приемы
Итак, перейдем к обсуждению чисто технических моментов, которые могут вам пригодиться на собеседованиях вне зависимости от того, по какую сторону стола вы сидите. Многие из этих приемов можно применять и к представителям других IT-профессий, но мы будем рассматривать на примере программистов и тестировщиков.
2.1 Прием «подучи паттерны»
Этот прием прост, универсален и безотказен, так как по итогам его применения всегда можно похлопать собеседника по плечу со словами «Расти тебе еще надо, парень, расти». Нужно отметить, что программисты особенно падки на паттерны – видимо, потому, что большинство лишь недавно о них узнало. При этом дальше теоретических рассуждений дело заходит редко, и на реальных проектах 80% не использует ничего кроме синглтона, а еще 10% не используют и его, потому что уже давно стали менеджерами и код больше не пишут.
Как применять?
• Спросите собеседника, какие паттерны проектирования он знает. Ответ «Синглтон» не засчитывайте.
• Попросите описать отличия между двумя малоизвестными паттернами, названия которых вы незадолго до этого подсмотрели в книжке. Независимо от ответа снисходительно хмыкните и скажите «Хорошо».
• Даже если собеседник перечислил все 23 канонических + еще пару десятков паттернов, нарисовал диаграммы и написал на бумажке примеры кода, спросите «А еще какие знаете?». Независимо от ответа снисходительно хмыкните и скажите «Хорошо».
• По итогам беседы порекомендуйте к изучению список из не менее десяти паттернов. Паттерн «Синглтон» не указывайте.
Опасность
Опасность у этого приема отсутствует. Даже если ваш собеседник по той или иной причине ухитрился не облажаться, вы-то все равно смогли показать, что знаете паттерны как минимум не хуже, а на самом деле значительно лучше него. Важно понимать, что реальное знание хотя бы одного паттерна от вас вообще не требуется, нужно лишь заучить их названия, чтобы потом умело вворачивать в свою речь.
2.2 Прием «инверсия»
Суть данного приема заключается в том, чтобы узнать с каким инструментом человек работал, а затем раскритиковать за отсутствие опыта работы с другим инструментом той же группы. Например, если человек работает с Django, то нужно неодобрительно покачать головой, если он не работал с Flask. Обязательно спросите у бэкендщика знает ли он фронтенд, умеет ли верстать? Помните, что fullstack — это золотое дно для таких манипуляций. Именно поэтому fullstack так популярен.
Как применять?
Совершенно неважно, о какого рода инструментах или технологиях идет речь. Самое главное – подробно расспросив, объяснить оппоненту, какой он лошара:
• Если работал на проектах с SVN и Perforce – мало опыта с более современными системами типа Git.
• Если с Git на «ты» – подтянуть коммерческие системы контроля версий.
• Если специализируется на UI-автоматизации – слабые знания в области тестирования веб-сервисов.
• Если знает WebDriver – побольше поработать с QTP, SoapUI, тулами для нативных мобильных приложений и распознаванием образов.
• Если являлся членом большой команды – был простым пользователем фреймворка вместо того, чтобы разрабатывать архитектуру.
• Если в основном работал в одиночку – не командный игрок.
Список можно продолжать. Идею, думаю, все поняли.
Опасность
Если вам попался реально крутой спец. (читай — задрот), который знает и пробовал все, что бы вы ни упомянули, существует определенный риск того, что этот раунд гнобления сведется к ничьей. Не унывайте, негодяй обязательно сядет в лужу на чем-нибудь другом. Важно не давать здесь слабины, потому что, если этот умник таки преодолеет все заслоны, то гнобить вскоре будут уже вас. Вам это надо? Впрочем, риск этот представляет чисто академический интерес. Программиста, который знает ВСЁ, просто не существует. Уж мэйнфреймы через терминальный эмулятор он точно не программировал. А Fullstack-разработчики — это вообще миф, тут кто угодно сядет в лужу после кучи вопросов.
2.3 Прием «покажи код»
Собственно, названием приема все сказано. Запомните: программиста ВСЕГДА можно подловить на написании говнокода или хаков. Одни искренне хотят, но не могут. Другие могут, но искренне не хотят. Третьи и могут, и хотят, но не получается по причине того, что:
• Там уже и так наговнокожено.
• Сама система спроектирована через жопу.
• Нужно поддерживать всякое legacy.
• И так далее.
Как применять?
• Потребуйте у противника продемонстрировать примеры своего кода, которые он считает особенно удачными.
• Если он начинает мямлить что-то про NDA, пригрозите, что будет хуже и код придется писать на бумажке, а то и на доске.
• Спросите, почему вот здесь избран именно этот подход и какие могли быть альтернативы. Необходимо задать вопрос таким тоном, чтобы собеседник заволновался и начал думать, будто упустил из виду какую-то элементарную деталь.
• Поинтересуйтесь, что та или иная конструкция представляет собой синтаксически. Вы не поверите, сколько пишущих код людей даже не задумывается, является ли то или иное слово ключевым в используемом языке, или же это, скажем, вызов какой-то функции. Разочарованно протяните: «Ну-у, это же самые основы».
• Высший пилотаж – это зачмырить за неверную (как вам кажется) расстановку отступов или фигурных скобок, но так, чтобы человек и впрямь почувствовал себя невеждой, а не подумал, будто вы придираетесь по пустякам.
Опасность
Их здесь две. Во-первых, разбирать чужой код – это уныло, в особенности, если он действительно отстоен. Тут уже вообще теряется какой бы-то ни было спортивный интерес, и от гнобления перестаешь испытывать всякое удовольствие.
Во-вторых, некоторые люди (очевидно, посетившие слишком много тренингов по коммуникации) умеют дистанцироваться и не воспринимать критику своего кода, как критику себя лично. Но мы ведь добиваемся вовсе не этого! Гнобить код бессмысленно: он все равно ничего не почувствует. Так или иначе, применяя данный прием, следует помнить одно простое правило: ад – это код других.
2.4 Прием «оценка английского»
Ни одно интервью не может считаться полным, если в нем не будет предпринято попытки загнобить собеседника за уровень владения английским. Ваш собственный уровень и компетентность как экзаменатора не играют никакой роли. Это тот случай, когда гнобить можно, даже заметно уступая собеседнику в данной области. Уместно добавить сюда же толику психологии – опять же, вне зависимости от вашей компетентности в этой сфере. Разумеется, если у вас на проекте/в компании приоритет отдается, скажем, венгерскому, то методику необходимо скорректировать под этот язык.
Как применять?
• Предложите собеседнику переключиться на английский язык, даже если он у него (или у вас) на откровенно низком уровне. Попросите его рассказать о себе/своих проектах/своих сильных и слабых сторонах. Самых желторотых можно будет поставить на место уже на этой стадии, так как многие и по-русски-то на подобные темы связно говорить не умеют.
• Поставьте его в тупик каким-нибудь хитроумным вопросом с подковыркой, например: «Why are you feel yourself as a senior automatization engineer?».
• Отметьте, что словарный запас собеседника выдает неуверенность в себе и слабость познаний в программировании, что и само-то по себе непростительно, а для той позиции, на которую он претендует – и подавно.
• Безапелляционно изреките, что заявленного уровня языка вы здесь не слышите, и максимум, на что может рассчитывать ваш оппонент – какое-нибудь худосочное A2. От такого клейма он уже не отмоется никаким IELTS’ом.
Опасность
Бывают случаи, когда человек в принципе не владеет иностранным языком, о чем сразу прямо и заявляет. Можно, конечно, слегка пожурить его: «Ну что же вы, батенька, как же в наше-то время без языка?», но едва ли он из-за этого почувствует себя по-настоящему униженным. Что ж, чувствовать он может что угодно, но промоушна ему при таком раскладе все равно не видать, хе-хе-хе! Еще одна опасность состоит в том, что сейчас в айтишники, а особенно в программисты и тестировщики, прут все кому не лень, и всегда есть шанс нарваться на какую-
нибудь выпускницу иняза. За английский ее не загнобишь, но зато у нее наверняка с паттернами беда. Тут-то вы и развернетесь.
2.5 Прием «бесконечность»
Иногда попадаются особо настырные типы, к которым на кривой козе не подъедешь: и паттерны они знают, и Оксфорд они заканчивали, и технологии все изучили вдоль и поперек. Здесь и приходит на помощь рассматриваемый прием. Заключается он в том, чтобы задать собеседнику какой-нибудь изощренный вопрос, а затем на каждой итерации уточнять условия задачи, давая понять, что вы хотите услышать немного не то. При этом иметь в виду какой-то конкретный ответ вовсе не обязательно; главное – продолжать допытываться и создавать видимость, будто вы пытаетесь подвести собеседника к какому-то решению, а он все никак не допетрит, чего от него хотят. Некоторые утверждают, будто подобные вопросы позволяют посмотреть, как человек будет решать проблему, но на самом деле их цель – запутать собеседника и продемонстрировать, какой он на самом деле недотепа.
Как применять?
Простор для фантазии здесь на самом деле безграничен – не зря же прием так называется! Приведем здесь лишь один из миллионов возможных вариантов развития беседы.
А: Допустим, вы – тимлид, и заказчик просит вас срочно сделать POC фреймворка по автоматизации их продукта с каким-нибудь необычным интерфейсом. Ваши действия?
Б: Ну-у, я исследую рынок тулов автоматизации для данного интерфейса.
А: А допустим, есть только один подходящий тул, и тот коммерческий.
Б: Ну-у, я посчитаю затраты и экономию и выкачу цифры заказчику.
А: А допустим, заказчик наотрез отказывается платить за коммерческий тул.
Б: Ну-у, я рассмотрю возможность встраивания в интерфейс каких-нибудь хуков для автоматических тестов.
А: А допустим, девелоперы утверждают, что хуки встроить невозможно.
Б: Ну-у, тогда я попытаюсь использовать какое-нибудь низкоуровневое API самого приложения.
А: А допустим, никакого API наружу не выставляется.
или
А: Ну хорошо, а вот допустим, объем работы слишком большой, чтобы сделать все в одиночку, а уже вечер пятницы, и вся команда ушла домой.
Б: Ну-у, я обговорю с заказчиком перенос сроков сдачи.
А: А допустим, заказчик требует, чтобы все было сделано ASAP.
Б: Ну-у…
Как вы понимаете, этот обмен репликами можно продолжать до бесконечности. Рано или поздно оппонент окончательно утратит нить ваших рассуждений и перестанет понимать, чего вы от него добиваетесь. Вы же потом можете сказать, что он недостаточно гибко мыслит в техническом плане, да к тому же склонен уходить от ответственности и не умеет работать с командой.
Опасность
Данный прием следует с осторожностью применять на юных и неопытных, так как они ломаются и уходят в ступор довольно быстро, так и не позволив вам в полной мере продемонстрировать собственное превосходство. Если же ваш собеседник – тертый калач, он может просто послать вас нахуй с такими вопросами, и будет прав. Плюсов ему это, конечно, не прибавит, но и загнобленным он себя опять-таки не почувствует, а это никуда не годится.
3. Микрогнобление
Помимо масштабных и многоходовых приемов унижения соперника существует еще так называемое микрогнобление. Оно включает в себя мелкие вопросы и придирки, перемигивание с другими собеседующими, гнусное хихиканье, обмен записками или сообщениями в скайпе, пренебрежительный взгляд, перебивание и многое другое.
Микрогнобление помогает заполнить паузы в разговоре и не позволяет сопернику расслабиться. Также оно может использоваться, чтобы сменить тему беседы и перейти к следующему макроприему. Более того, один удачно проведенный микрогнобительный выпад может обернуть в вашу пользу уже, казалось бы, проигранную схватку.
Рассмотрим несколько типичных примеров, связанных с автоматизацией тестирования. Все эти приемы, опять же, никак не привязаны к профессии, но если вам удастся ввернуть сюда нужную специфику, это пойдет вам только в плюс.
• Можете спросить, умеет ли оппонент считать ROI или метрики по автоматизации. Их никто считать не умеет – а вернее, все делают это по-разному, так что всегда остается возможность для маневра.
• Поинтересуйтесь, сколько фреймворков по автоматизации оппонент нафигачил с нуля, или, как вариант, почему в его проекте используется технология A, а не B. Очень многим приходится
заниматься поддержкой легаси-кода или же работать в составе крупной команды – вы же сможете обвинить оппонента в неопытности и архитектурной безграмотности.
• Время от времени отпускайте комментарии типа «Нда, жиденько» или «А что ж архитектуру WebDriver не доучили?». Если подадите это с правильной интонацией, человек заволнуется, даже если регулярно контрибьютит в проект Selenium.
Победа?
И вот, враг повержен, унижен, раздавлен и позорно бежит, размазывая по щекам слезы, а вы стоите, гордо вскинув голову, и пьете вино из его черепа. Но не стоит почивать на лаврах: рано или поздно он обязательно вернется – если только не произойдет самое страшное, что может случиться с программистом, и он не станет бизнес-аналитиком.
Заключение
У кого-то может сложиться ощущение будто бы я самый что ни на есть демон во плоти. Возможно. Однако не все столь добры и бесконфликтны, и обязательно найдется мерзавец, которому захочется вас загнобить. Но теперь, когда вы вооружены знаниями, вы сможете распознать все его гаденькие приемчики, а в идеале и обратить их против него самого. Вопросы?