Основная особенность наших разработчиков

Недавняя статья, сравнивающая русских разработчиков с иностранными навеяла. И мне есть что сказать по этому поводу.

d07aa81eadb6e282d95873d1e985b4f0

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

По-моему, эта статья — самое важное, что я в жизни сделал. Не самое сложное, объёмное или интересное, а важное.

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

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

Не буду писать, сколько лет я ведущий разработчик, сколько у меня опыта архитектором и техническим директором и какие приколы в связи с этим видел. Не существенно.

Только два обстоятельства существенны:

  1. Так уж сложилось, что я разработчик. Специально обращаю внимание. Я пишу код каждый день. Сегодня, вчера, ранее. Статья НЕ про отношения начальник—подчинённый.
  2. Кроме того, есть опыт управления командой разработчиков как наших, так и не наших.
    У меня пять лет не было русского на рабочем компе. За ненадобностью.

А всю суть статьи описывает такой жизненный случай:
Однажды прихожу я к разработчику (нашему разработчику) и приношу запрос на новую штуку сделать-прикрутить. Штучка в принципе небольшая, но очевидно полезная, нужная конечному пользователю, не двусмысленно со всех сторон полезная, сомнений не вызывает. Минут пять мы обсуждаем, я рассказываю, что и где именно нам нужно получить. Задание донёс, оно понятно и кристально ясно. Всё, стадию донесения задания прошли.

Возникает секундная пауза, а потом разработчик говорит, что это сделать невозможно. Я удивляюсь. Всё дело в том, что это программирование малость из совершенно другой области и разработчик специалист в этой области, а я — специалист в другой. У меня нет поводов не доверять квалификации разработчика, но меня немного оторопь берет, и я интересуюсь у разработчика почему же нельзя реализовать эту маленькую штучку? Ведь я не вижу принципиальных трудностей никаких.
Последующие пять минут разработчик пытается хоть как-то обосновать и найти какую-нибудь существенную преграду. Градус беседы повышается. Заканчивается всё таким диалогом:
— Это нельзя сделать, потому, что это никогда и ни за что нельзя сделать!
— Да я не спрашиваю почему это нельзя сделать! Я спрашиваю: как это сделать?!

Психнул малость, очень хотелось матом высказать всё, что думаю. Но к чести своей сдержался.
Плюнул на всё, сел и сам сделал штуку за полтора дня.

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

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

Нет, это не критический взгляд на проблему у нашего разработчика. Тот разработчик из примера выше даже не подумал задать вопрос: а нам точно нужна эта штука? А может нам нужна эта штука в другом виде? И вот в этаком? Я бы ему ответил, что точно нужна, нужна именно вот в этом виде, наипростейшем виде, я именно для этого и пришел лично, чтобы устно рассказать детали и обсудить буде что непонятно.

Эта штука даст конечному пользователю вот эти и эти возможности, пользователю понравится, пользовательская база вырастет.

Я бы объяснил, что это напрямую означает доходы нашей коммерческой компании в рыночной экономике. Не знаю как в благотворительных фондах (или там в откатных), а коммерческие компании должны приносить прибыль, они для этого и предназначены. Я бы объяснил, что у нашего директора нет печатного станка в подвале, чтобы напечатать мешок денег нам на премию и зарплату, все деньги идут от клиентов. Да и лишнего мешка денег у гендира тоже нет. Нет, он не редиска, у него просто нет лишнего мешка денег. Нам премию надо заработать. Да, в прямом смысле слова. Мы все должны работать и создать условия, чтобы клиент принёс нам деньги. Именно из них зарплата и премия будут! 

Да, я сильно утрирую, но у наших разработчиков часто не возникает мысли связать свою работу непосредственно с тем, что компания коммерческая и должна зарабатывать деньги. (И вообще, откуда берётся зарплата.)

Следующий случай из моей жизни:
Однажды ушел я пораньше с работы, чуть после обеда, в районе 16:00. А на следующий день пришел на работу с утра попозже, где-то в полпервого. (А чего? Имею право и все дела 🙂

В общем, выхожу я на работу и узнаю, что мой непосредственный подчинённый-американец уволил в моём отделе своего непосредственного подчинённого — нашего программиста (белоруса). Начинаю выяснять что случилось. А было всё очень похоже на первую историю. Американец пришел к своему непосредственному подчинённому (белорусу-программисту) и принёс тому новое задание. Хорошее, понятное задание. Сделать новую штуку. Не отловить какой-то мигающий баг, не какая-то муть или тупость, а нормальное задание. Не сложное, но и не простое. Я уверен, что оно по силам было нашему программисту, он ведь настоящий нормальный программист, мог бы сделать не напрягаясь. Нет, программист не был загружен. Во всех историях разработчики были не загружены выше головы, а занимались второстепенными проектами пониженной важности, времени было навалом.

Так вот приходит американец к подчинённому с заданием и получает прям ну очень похожий ответ на тот, что я описал в первой истории.
Для американца это шок и ступор. Это у него в голове не укладывается. Как? Как такое возможно? Для американца (а равно европейца) это выглядит совершенно однозначно: сотрудник не хочет работать, не хочет зарабатывать деньги для компании! Что происходит? Вот он нормально работал, все нормально работали, зарабатывали деньги и тут бах и такая петрушка! Нет, американец не дурак, а вполне грамотный разработчик. Нет, не тупой начальник из анекдотов, а вменяемый тимлид.

У американца проходит шок и он пытается объяснить, что вот эту штуку надо сделать. Эта штука принесёт деньги. В ответ он получает вполне логичные стройные объяснения от нашего программиста почему он эту штуку делать не будет. Но ведь это лежит совершенно в другой плоскости. Отмазки не канают! Американец искренне не понимает, как можно не пытаться решить проблему и отказываться сделать новую штуку для компании. Причём он бы понял, если бы были прямые доводы против новой штуки или способа реализации.

Тут самое время дать небольшой англо-русский ликбез:
Когда мы говорим: У нас проблема, сервер упал., то это troubles.
Русские слова: Наши проблемы, ваши проблемы, проблемы — не переводите проблема как problem.
Problem — это принципиальный конфликт интересов.
Problem на русский переводится как:

  • вопрос (который надо обсудить),
  • задача (которую надо решить), задание (которое надо сделать)
  • тема (исследования в науке)

А когда мы говорим: У меня тут проблемка есть, через час сделаю., то это obstacles — затруднения.

А теперь вернёмся к истории:
американец приносит задание, ему наш разработчик говорит, что не будет делать задание, потому что тра-ля-ля. И вот если здесь заявить американцу, что тут у нас problem, то ступор его будет более глубоким.

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

Это не вопрос: сложно ли сделать эту штуку или просто. Моя последняя фраза:
— Да я не спрашиваю почему это нельзя сделать! Я спрашиваю: как это сделать?!
выглядит, как будто это тупой прапор командует. Но в ней вся суть.

Нельзя сделать новую штуку в общем виде? Ну, так давай подумаем как сделать её в частном, вот в этом вот конкретном! И принести деньги компании. Нет готовых решений в гугле? Давай подумаем как можно сделать штуку самостоятельно. Есть решение, но оно некрасивое? Да ведь это прекрасно! Прекрасно, что есть решение! Давай сначала сделаем простое костыльное решение раз уж других нет и заработаем деньги для всех нас!

Для мелкой вебстудии одна-единственная новая штука может быть вопросом жизни или смерти. Для продуктовой софтовой компании это нелишние деньги и ускорение вверх к успеху или вниз, к банкротству и депрясняку. Для гиганта размера яндекса/гугля любой даже самый маленький вебсервис, увеличение доли на сотые процента — это миллионы!

Признаюсь, что я бы не увольнял белоруса. Если бы я был на рабочем месте, то я бы вразумил его, мягко или жестко, по обстоятельствам. Если что, то я прекрасно умею увольнять как наших, так и иностранцев. И вот когда я появился на работе, что я сделал? Ничего. Американец-то по сути прав; ну да, тут можно обсуждать и дискутировать насколько он жесток, но он прав.

Написал только прощальное письмо белорусу: пока-пока, бывай, свидимся. Не знаю, научила ли история его чему-нибудь или он до сих пор думает, что американец редиска. Бодрящий пинок он получил, да.

Эта история с белорусом и американцем не уникальна. Одноранговый мне начальник соседнего отдела, американец точно так же поступил в схожей ситуации.

Честно говоря, я не знаю точную причину такого поведения наших программистов (тестировщиков, инженеров и др). Это даже не лень, не отсутствие квалификации.
Всё дело в какой-то культурной особенности.

Вот как Макаревич описывает работу на английской студии звукозаписи:

Скрытый текст

По-моему европейцы в этом плане изоморфны американцам, только деликатнее.
Также удивляются, как можно отказываться делать свою работу и не приносить прибыль компании.

Но вот кто полная противоположность нашим разработчикам: так это японцы.
В абсолютно таких же исходных данных японец берёт под козырёк, говорит: «Есть!» и идёт на своё рабочее место. Заметьте, японец совершенно так же не знает насколько именно сложна задача в реальности, какое именно решение есть, существует ли в природе решение вообще. Он просто идёт решать задачу. И, как правило, он находит решение за два-три дня.
Заметьте, не в квалификации дело. Квалификации одинаково хорошая.
У японцев свой прикол: они не могу сказать: нет. Потому говорят да, идут выполнять и делают свою работу. Успешно в основном.
С этой японской особенностью есть куча других проблем, но это отдельная статья (есть на хабре).
Минимально что надо: если японец не приходит с решением через три дня — то допросить его подробно, выяснить настоящее положение дел и решать проблему вместе.
В общем, рекомендация тимлидам: если есть возможность нанять смышлёного японского разработчика — нанимайте не задумываясь. Остерегайтесь китайских подделок! 🙂

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

Если есть кто-то разбирающийся в социологии/психологии или знакомый лично с социологом/психологом: проясните, пожалуйста.

Дамы и господа, если вы минусуете карму/статью: пожалуйста, напишите в комментариях в чём именно вы не согласны, это важно для меня.

Эта статья боль и надежда моя. Квинтэссенция опыта. МАНИФЕСТ. Я мечтаю, чтобы каждый умеющий читать по-русски прочёл эту статью.

Сегодня я даже сделал специальный сайт в дополнение:
http://xn—–6kcfbtd3audiumjf4b2f0cxa2d.xn--p1ai/
(осторожно, ненормативная лексика)

Дамы и господа, добро пожаловать в коменты! Давайте конструктивно обсудим!
(Опечатки и технические огрехи, присылайте личным сообщением, пожалуйста).

Долгих лет и благоденствия!

Tags: