Несколько лет назад один программист под ником t0st совершил нечто выдающееся: он исправил 8-летнюю ошибку в GTA Online, которая сводила с ума игроков. Ошибка? Ужасно долгая загрузка, иногда до 20 минут. В то время как однопользовательский режим загружался за считанные секунды. Его решение было элегантным: 13-строчный твик кода, который сократил время загрузки на 70%. Студия Rockstar Games, стоящая за GTA, вознаградила его 10,000 долларов и выпустила патч для игры. Проблема решена, да?
Не совсем.
Интернет взорвался критикой. Как могла компания стоимостью в миллиард долларов упустить такую очевидную вещь? Были ли их разработчики некомпетентны? Как человек, работающий в сфере технологий, я могу сказать, что ответ не так прост. На самом деле проблема здесь не в ленивых разработчиках или технической некомпетентности. Речь идет о том, как даже самые простые решения теряются в лабиринте корпоративных приоритетов.
Позвольте мне нарисовать вам картину того, что, вероятно, произошло за кулисами.
Жизненный цикл ошибки
Представьте себе такой разговор, происходящий в Rockstar (или в любой другой крупной технологической компании):
1-й год
Разработчик 1: «Эй, я думаю, мы можем улучшить время загрузки, исправив способ парсинга JSON. Это быстрая победа».
Разработчик 2: «Звучит хорошо. Создайте тикет, чтобы мы не забыли».
Менеджер по продукту: «Это было в требованиях? Нет? Хорошо, я отмечу это как технический долг и добавлю в бэклог».
3-й год
Разработчик 3: «Это узкое место с JSON все еще здесь. Стоит ли нам отдать приоритет старому тикету?»
Менеджер по продукту: «В этом квартале мы сосредоточимся на следующем DLC и микротранзакциях. Возможно, в следующем году».
6-й год
Менеджер по продукту: «Этот тикет от 2013 года. Он все еще актуален?»
Разработчик 35: «Понятия не имею. Кодовая база была переписана дважды. Вероятно, нет. Давайте его заархивируем».
8-й год
Разработчик N: «Эй, я думаю, мы можем сократить время загрузки, исправив способ парсинга JSON…»
И так цикл продолжается.
Почему хорошие ошибки остаются неисправленными
Это проблема не только Rockstar. Это проблема больших компаний. Вот почему даже такие очевидные ошибки, как эта, ускользают от внимания:
1. Тирания «Запросов»
В крупных организациях все вращается вокруг дорожной карты. Если исправление ошибки не привязано к конкретному запросу (requirement) или фиче, оно помечается как «технический долг» и помещается в конец списка невыполненных задач. И давайте будем честны: «технический долг» на корпоративном языке означает «мы никогда с этим не разберемся».
2. Вращающаяся дверь собственности
За восемь лет разработчики и менеджеры по продуктам пришли и ушли. Человек, который изначально завел тикет? Его давно уж нет. Человек, который понял проблему? Перешел к другому проекту. Институциональная память стирается, и тикет становится пережитком прошлого. Даже если проблема все еще актуальна.
3. Миф о «быстрых решениях»
Патч из 13 строк может показаться тривиальным, но в устаревшей кодовой базе даже небольшие изменения могут иметь непредвиденные последствия. Без надлежащих тестов и документации разработчики часто не решаются прикасаться к legacy коду. Риск что-то сломать намного перевешивает выгоду от исправления некритической ошибки.
4. Невидимый ROI
Давайте будем реалистами: улучшение времени загрузки не оказывает прямого влияния на конечный результат. А вот продажа Shark Cards (виртуальная валюта GTA) — да. Компании оптимизируют свою деятельность на основе показателей, которые отражаются в квартальных отчетах о доходах, а не на деловой репутации или пользовательском опыте, пока не станет слишком поздно.
Счастливый конец, который ничего не меняет
Исправление t0st стало пиар-победой Rockstar, но оно не решило основную проблему. На каждую исправленную серьезную ошибку приходятся тысячи ошибок, которые остаются в нерешенных задачах, забытые и игнорируемые. Главный вывод здесь не в том, что компании не заботятся об ошибках. Дело в том, что их часто парализуют конкурирующие приоритеты, бюрократическая инертность и холодный расчет прибыли.
Так что в следующий раз, когда вы будете смотреть на загрузочный экран или проклинать глюк, помните: ваш враг — это не ленивые разработчики. Это система, которая рассматривает пользовательский опыт как нечто второстепенное. Пока кто-то посторонний не вынудит им заняться.