Cheater (cheater) wrote,
Cheater
cheater

На хабре какое-то время назад был занимательный пост про опыт общения команды тех.поддержки КРОК с клиентами из разных стран, и про то, как национальные черты влияют на это самое общение. Очень клёвый рассказ, но могу ещё добавить к нему свою собственную коллекцию впечатлений от общения с иностранцами. Правда, пост на хабре рассказывает в основном про взаимодействие с недовольными клиентами, у меня же это 100% общение с коллегами по работе. Естественно, всё это исключительно ITшный народ, преимущественно разработчики.


Американцы

Большую часть моих контактов составляют именно они. Прежде всего скажу, что Задорнов бы наверное расстроился - они в среднем самые квалифицированные среди всех коллег-разработчиков. Также они очень приятные и предельно корректные в общении - я долго не мог привыкнуть, что даже в случае косяков или горящих сроков никто никогда тебе ничего не говорит на повышенных тонах. Сломал код, ну исправь. Если что-то срочное, то просто слово ASAP в письме или пометка "срочно", и всё. Впрочем, насколько я знаю, у них там вежливость общения это норма в национальном масштабе. Через некоторое время в общем-то сам приучаешься постоянно применять в общении все эти "thanks for your time".

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

<Еженедельное совещание>:
- У нас по плану вводное занятие по новой системе time tracking... Чёрт, как на неё заходить... Кто-нибудь уже читал инструкцию?
- А что это вообще такое?
- Ну 3 недели назад рассылали всем анонс. Средство учёта рабочего времени.
- Вау какая у нас, оказывается, штука есть. Ну как-нибудь запущу.
- Это как бы обязательная вещь... Впрочем, там можно вводить произвольные данные задним числом... Кто-нибудь возьмётся на неделе прочитать мануал и вкратце всем рассказать, что там делать?


Ещё у американцев как у разработчиков одна очень любопытная черта - они никогда не пойдут на доработку или рефакторинг кода, если это не приносит непосредственный результат, например не чинит конкретный баг в багтрекере. Там может быть хоть 100 раз говнокод, и американец скорее всего будет соглашаться со всеми замечаниями, но при этом всё равно как партизан стоять на том, что код не нужно трогать, раз тот делает, что от него требуется.


Небольшой ложкой дёгтя является тот факт, что их пресловутая квалифицированность действует по большей части только в пределах C++ и проектирования/управления, а за пределами этого они иногда демонстрируют зияющие провалы. Почти все предпочитают пользоваться только графическими средами разработки и графическим клиентом Perforce - в случае нестандартных задач (починить разметку в большом коде, поиск по репозиторию или сложные мёрджи за пределами возможностей GUI) сразу возникают трудности. Сломанные билды они не пытаются чинить почти никогда и никак, даже тупо откатом на более раннюю версию кода (хотя весь вопрос - набрать p4 sync ...@1234567 в консоли) - либо через GUI запускают новый билд более ранней версии (1 билд = час работы фермы ПК и 5-10 Gb на диске), либо просто ждут багфикса.



Индийцы

Ну что, стереотипы про "индусский код" имеют под собой некоторые основания. Довольно большая часть говнокода у нас написана людьми с именами на "Радж" и "Шри". В ход идут самые разнообразные приёмы издевательства над кодом, от утечек памяти и пренебрежения к оформлению до инопланетной логики поведения. Есть, правда, и нормальные разработчики, но их единицы.

Индийцы - единственный случай, когда помимо программистов мне приходилось общаться ещё с сисадминами и техническими писателями. Почти все сисадмины в компании являются индийцами, но их деятельность идёт где-то далеко от меня и проявляется разве что редкими емейлами по поводу каких-нибудь технических работ на сервере и прочих подобных вещей. Судя по тому, что я не помню, когда у меня последний раз ломалась виртуалка или почта, дело своё они делают нормально.=)

Техрайтеры почему-то почти поголовно - девушки. В общении они абсолютные няшки, даже лучше американцев, но незнание области, которую документируют, проявляют просто феерическое. "Can you please explain what is the type of this 'int *elementCount' variable" - совершенно нормальная ситуация.



Китайцы

Тоже вначале думал, что стереотипы про "китайский код" не работают - оказалось, работают. Практически все китайцы, с которыми приходилось сталкиваться, отличались невысоким качеством кода, а также страстью к предельно простой и тупой логике без оглядки на скорость исполнения и чистоту кода. Простота это конечно хорошо, я сам стараюсь упрощать код и вообще инфраструктуру насколько возможно (KISS), но тут доходит до абсурда. Двадцать почти одинаковых функций в одном файле? Норм. Тестеры обнаруживают ошибку, и команде несколько дней приходится героически её исправлять в 20 старых местах и ещё десятке новых, куда успел распространиться код и ещё перемешаться с другим кодом? Тоже норм и никто даже не видит проблему, плюс начальник американец, см. отношение американцев к обобщённым идеям "улучшения кода". Самое печальное, что китайцы не воспринимают абстрактных понятий, с помощью которых пытаешься им объяснить, что изначально не так с кодом. Они мыслят предельно конкретно: "вот тут ошибка" или "вот в эту точку переменная может прийти неинициализированной" воспринимают и чинят на ура, но как только говоришь что-то вроде "твой код нарушает const correctness" или "твоя функция использует побочные эффекты, этого лучше избегать" - в лучшем случае игнорирует, в худшем случае уходит в глухой отказ: код работает как требует спецификация, ничего не знаю.

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



Французы

По скиллам твёрдая пятёрка, не отличишь от прочих европейцев/американцев. Более того, только среди французских и русских разработчиков я встречал "универсалов", т.е. людей, которые более-менее равномерно, без дыр в неожиданных местах, разбираются в IT сверх необходимого по работе (то есть сверх С/C++, Perforce и необходимого минимума в юниксах и Lisp) - иными словами, при необходимости умеют и написать что-то на перле, и починить проблему в виндах/линуксе с утилитой или сетью, и знают, что такое контекст/замыкание/свёртка в лиспе.

Отличительной их чертой также является повышенное любопытство и дотошность: как только вводят новый сервис или фичу, можно смело ожидать, что именно от французов на совещании поступит 500 вопросов на тему как это работает, 300 критических замечаний и 100 рац. предложений. Это наблюдается и в code review.

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


И в заключение:
Русские

В сравнении с иностранцами, первое, что бросается в глаза, - очень большой разброс уровней прокачки. В московском офисе обитают как абсолютные чемпионы компании по внутренним C++ конкурсам, так и люди, не знающие, разрушается ли объект базового класса при разрушении дочернего. Впрочем, средний уровень очень высокий, такой же как и у европейцев с американцами. Плюс, как я уже сказал, у многих хорошие фундаментальные знания.

В общении, похоже, специально стараются соответствовать американским стереотипам - абсолютная прямолинейность и БРУТАЛЬНОСТЬ. Только русский разработчик может начать свою рецензию в code review суровым "Review rejected." вместо этого вашего толерантного "Please address the issues and resubmit the review". При наложении этой манеры разговора на корпоративные стандарты вежливого общения возникают адские гибриды вроде "could you please remove these crappy checks from the code".

От наших разработчиков исходит подавляющее большинство предложений вида "это надо стереть и написать с нуля", а также они значительно больше других повёрнуты на тюнинге среды разработки и скриптовании всего подряд. Плагины, плагины к плагинам, самописные скрипты для автоматической очистки старых билдов, для замены текстов варнингов, для бэкапов, - всё это образует огромный слабо структурированный общий каталог, знакомство с которым является отдельным ценным скиллом и передаётся по большей части в устной форме от более старых разрабов более молодым.
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

  • 2 comments
Спасибо, интересные наблюдения :)

>>разрушается ли объект базового класса при разрушении дочернего

ммм... давно я не имел дело с C++. Это про то, что деструктор базового класса всегда отрабатывает после деструктора наследника?
Да, про это