“Excel в браузере, который никому не нужен” – откровения бывшего разработчика Uber

Разработчик программного обеспечения по имени Мэтт Баста недавно опубликовал занимательный подробный рассказ о своём опыте работы в Uber, где ему поручили создать альтернативу таблицам Excel для работы с большими данными.

В 2016 году Баста присоединился в подразделение Uber под названием “Crystal Ball”, где его основной задачей стала автоматизация процесса создания моделей для анализа данных. Компания в то время активно работала над завоеванием китайского рынка и для этого нужны были надёжные и удобные инструменты по работе с большими данными.

“Вся моя работа и работа команды, в конечном итоге, заключалась в поддержке Uber China. R-Crusher был инструментом, который помог нам получить данные, необходимые для конкуренции с Didi”, – вспоминает разработчик.

Некоторое время после трудоустройства Баста получил своё первое задание: создать удобный веб-интерфейс для работы с данными из R-Crusher, который внешне и функционально должен был быть похож на Microsoft Excel.

“Каждый день без этого инструмента обходился нам в миллионы долларов”, – утверждали коллеги разработчика, что и побудило новоприбывшего Мэтта начать воплощать поставленную задачу в жизнь.

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

Итоговый инструмент, разработанный командой “Crystal Ball”, представлял из себя клон Excel, написанный на JavaScript и работающий в браузере. В целом, он удовлетворял всем выдвинутым к нему требованиям. Однако позже, в ходе дополнительного тестирования, выяснилось, что Weasley и оригинальный Excel выдавали немного разные результаты при работе с одними и теми же данными.

После долгих копаний в коде, формулах и обсуждений с коллегами, Баста обнаружил, что при создании циклической ссылки в формулах оригинальный Excel останавливал расчёт, если разница между последними значениями ячейки падала ниже некоторого порогового значения. В результате исполнения этого алгоритма могли возникать ошибки, в результате чего Excel выводил неверное значение, но всех это, как ни странно, устраивало.

Таким образом, у “Crystal Ball” получился некий улучшенный аналог Excel, лишённый его технических недостатков и от этого более точный. Тем не менее, расчёты должны были полностью совпадать с Excel, в связи с чем Басте пришлось “подкрутить” работу своего алгоритма, чтобы он точно совпадал с выводом из Excel.

Тем не менее, главное – результат, и в июле 2016 года вдохновлённая команда внедрила готовый “Excel в браузере” в эксплуатацию, который даже успел показать некоторые позитивные результаты.

Однако руководство Uber сыграло с разработчиками “Weasley” злую шутку – компания DiDi, с которой Uber так рьяно хотел конкурировать в Китае, внезапно объявила о приобретении подразделения Uber China. В связи этим инструмент, работа над которым велась больше полугода, был просто удалён с платформы, чтобы не раскрывать китайским инвесторам внутренние алгоритмы работы Uber.

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

Сам Баста считает свой опыт работы в Uber ценным уроком и не жалеет потерянного времени на написание и отладку кода. “Наше отношение к тому, что мы производим, является хорошим показателем зрелости. Для нас естественно хотеть, чтобы наша работа была прочной и долговечной”, – отметил Баста.

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

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

Public Release.