Столкновение культур на код-ревью, Россия против США

Пожалуй, заголовок слишком драматичен, на самом деле имел место небольшой спор на код-ревью, в котором мы с коллегой из США обсуждали выбранный мной подход. Обычно дело, так ведь? В процессе обсуждения меня постоянно раздражало, что коллега переводит разговор на какие-то детали, и как будто не слышит, что я говорю. Я объяснял, что моё решение концептуально лучше, изолирует логику от данных, и делает функцию чистой. Но вместо того, чтобы опровергать мою концепцию, или выдвигать свою альтернативную, коллега указывал на конкретные куски кода со словами: “во тут, тут и тут мы просто можем воткнуть уже имеющееся решение и всё заработает”. Я ему про Фому, а он мне про Ерёму!

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


Обратите внимание на последнюю строку, подход к убеждению (Persuading).

Столкновение культур на код-ревью, Россия против США Программирование, Культура, Россия, США, Межкультурные коммуникации

США и Россия находятся на совершенно противоположных концах этой оси. Причем Россия лежит на стороне “сначала принципы”, то есть нам чаще важны теоретические основы и методика, а частные случаи выводятся уже из них. В США наоборот, многие люди смотрят сначала на практическую пользу, а общие знания извлекаются из частных примеров. Разумеется, некоторые люди могут вести себя совсем не так, как свойственно большинству их соотечественников, н в нашем случае мы так точно попали в статистические средние для наших культур, что даже забавно. Для меня это был прямо момент прозрения.


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


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


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

Лига программистов

1.5K постов11.4K подписчиков

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
93
Автор поста оценил этот комментарий

> есть нам чаще важны теоретические основы и методика, а частные случаи выводятся уже из них. В США наоборот, многие люди смотрят сначала на практическую пользу


Ошибка в переводе.

“from the first principles” это вывод частных случаев из компактного базиса, а “holistic approach” это взгляд на проблему в целом, причем именно на всю целиком а не на частные случаи.


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

раскрыть ветку (14)
44
Автор поста оценил этот комментарий
Некорректно сравнивать программиста и начальника - тут и русский начальник тоже самое скажет, к теории про национальные особенности это не имеет отношения.
16
Автор поста оценил этот комментарий

Нет, дело в том, что там на одной оси смешаны два измерения, которые в книге опять же раскрыты подробнее. То есть, там два противопоставления Specific (конкретное) - Holistic (целостное/общесистемное) и Principles First (сначала принципы) - Applications First (сначала применения).

раскрыть ветку (12)
15
Автор поста оценил этот комментарий

Не очень понимаю, зачем смешали эти две шкалы именно так, как на пикче. Holistic вроде больше совпадает с Principles First (целостные общесистемные принципы), а Specific похож на Applications First (конкретные штуки и применения)

раскрыть ветку (8)
2
Автор поста оценил этот комментарий

да, мне тоже в глаза бросилось

Автор поста оценил этот комментарий

потому что по изоквантам картинка будет откровенно пугающей

раскрыть ветку (6)
Автор поста оценил этот комментарий

А как тут изокванты фигурируют?

раскрыть ветку (5)
Автор поста оценил этот комментарий

это ж экономическая деятельность (внезапно)

раскрыть ветку (4)
Автор поста оценил этот комментарий

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


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


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

раскрыть ветку (3)
Автор поста оценил этот комментарий

два противоположных подхода

если это чисто математически умозрительно и между ними нуль - это запрещенный переход и позиция посередине не попадает ни под один из них. Если же это изокванта (что экономически обосновано в социальных науках) - они не противоположны, а линейно независимы и позиция посередине учитывает оба. Смысл кардинально меняется, да. Это - логично, поскольку социально. Нелогично исключать социальность при декларации принадлежности к ней (культура).

раскрыть ветку (2)
Автор поста оценил этот комментарий

Мне кажется маловероятным, что на последнем графике вдруг появилась изокванта, когда все остальные - просто оси с одной переменной. Но чтобы удостовериться наверняка, надо книгу Эрин Мейер читать, а я этого пока не планировал. Если прочитаете - сообщите, будьте добры)

раскрыть ветку (1)
Автор поста оценил этот комментарий

когда все остальные - просто оси с одной переменной.

это нелогично, да

1
Автор поста оценил этот комментарий

Вопрос - имеет ли ваш пример характер частного случая? Просто если в США практикуется такой подход в программировании (от частного к общему), то это же огромная дыра в безопасности

раскрыть ветку (2)
3
Автор поста оценил этот комментарий
Ну хотя бы что-то у нас в безопасности!
PS По факту да, американские программисты часто пишут код с кучей фич и плюшек, но кривой архитектурой, а вместо устранения причины проблемы ставят костыли. Сомневающимся — читайте список уязвимостей винды.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку