Автомобилисты шутят, что главная неисправность в автомобиле - это прокладка между рулем и сиденьем. Безопасники всерьез считают человека самым слабым звеном любой системы безопасности. В обеих сферах цена "человеческого фактора" очень высока. В IT компаниях та же самая проблема. И не только в IT. Все потому, что долгое время человек считался рациональным существом. И все системы развивались с расчетом на это.
Но люди - не роботы. Мы устаем, ленимся, испытываем эмоции. Нам присущи когнитивные искажения и много всего доставшееся от древних людей. Особенно это заметно на больших числах. Что приводит продукты и целые компании к совершенно неожиданному результату.
Но это не мешает считать работников винтиками в системе. Оценивать работу в человеко-месяцах, измерять эффективность количеством написанного кода, мотивировать KPI или оценить всех по матрице компетенции... И потому мне приятно видеть другие подходы.
Недавно был на внутреннем митапе Яндекс.Маркета. Ребята рассказывали про свои наработки. Мне запомнился сервис, который решает достаточно тривиальную задачу, собирает данные из разных источников, что-то с ними делает и отдает уже готовое отображение. Интересна в нем архитектура, в основе которой она лежит закон Конвея:
Организации проектируют системы, которые копируют структуру коммуникаций в этой организации.
Другими словами, если у вас над проектом работает 4 команды, то скорее всего в нем будет 4 больших модуля. При этом взаимодействие между модулями будет тем хуже, чем хуже настроена коммуникация между командами.
Именно на этом месте появляются самые болезненные проблемы - интеграционные проблемы. Проблемы, возникающие на стыке модулей, сервисов или систем. Проблемы, которые не понятно на чьей стороне их нужно решать. Тикеты с такими багами очень часто летают от одной команды к другой и, делая полный оборот, возвращаются назад.
Так вот, в своем сервисе ребята из Яндекс.Маркета предположили, что люди, которые собирают данные, обогащают данные, создают API и в итоге потребляют данные - скорее всего это разные люди. А потому при разработке они сконцентрировались именно на связях между модулями, а не на работе с самими данными.
Модуль сбора данных может собирать данные как угодно. Он может использовать любые инструменты и технологии. Зато взаимодействие со следующим модулем максимально зарегулировано. Модуль обогащения данных также может быть реализован как угодно, но имеет жесткий контракт с модулем отображения данных. При этом разные команды имеют возможность под себя настроить работу внутри модуля.
Кажется очевидно, что закладывая то, что заложено в архитектуру, особенности потребителя сервиса сделают работу с ним производительной. Но нет, посмотрите на большую часть интернет-приложений. Они сделаны чужими для хищника, а не для людей.
При этом удивительно то, что к своим клиентам те же компании не относятся как к рациональным существам. Собственно, весь UX построен именно на том, что ребята на больших числах изучают поведение людей. Если интересно, погуглите, как ритейл пользуется человеческими особенностями, подталкивая покупать больше. Но при этом работники компании, которые такие же люди, воспринимаются как механизмы.
В целом ситуация меняется, как и в IT, так и в мире в целом. Графические представления, функциональные и объектные подходы к написанию кода, высокоуровневые языки программирования и многое другое - это шаги в торону человечности. Но самая главная проблема - это люди. Люди, которые относятся к другим людям как к винтикам.
Ну и под конец я бы хотел вспомнить про бирюзовые компании. Эти компании изначально относятся к человеку как к нерациональному существу, при этом не стараясь его изменить. Не пытаются подогнать его под свои лекала. А наоборот, стараются использовать человеческие особенности как возможность для своего развития. И для таких компаний нет такой проблемы, как человек.
Спасибо, что дочитал до конца. Мой телеграм канал