Иногда всего один случай может полностью изменить всё, но отчаиваться не стоит.
Разработчик программного обеспечения по имени Мэтт Баста недавно опубликовал занимательный подробный рассказ о своём опыте работы в 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, в связи с чем Басте пришлось «подкрутить» работу своего алгоритма, чтобы он точно совпадал с выводом из продукта Microsoft.
Тем не менее, главное — результат, и в июле 2016 года вдохновлённая команда внедрила готовый «Excel в браузере» в эксплуатацию, и он даже успел показать некоторые позитивные результаты.
Однако руководство Uber сыграло с разработчиками Weasley злую шутку — компания DiDi, с которой Uber так рьяно хотел конкурировать в Китае, внезапно объявила о приобретении подразделения Uber China. В связи с этим, инструмент, работа над которым велась больше полугода, был просто удалён с платформы, чтобы не раскрывать китайским инвесторам внутренние алгоритмы работы американской компании.
Чтобы не терять плодов своей кропотливой работы, Баста почти сразу же опубликовал исходный код своего проекта на GitHub в надежде, что он ещё пригодится другим разработчикам.
Сам Баста считает свой опыт работы в Uber ценным уроком и не жалеет потерянного времени на написание и отладку кода. «Наше отношение к тому, что мы производим, является хорошим показателем зрелости. Для нас естественно хотеть, чтобы наша работа была прочной и долговечной. Но с другой стороны, отказ от вашей работы даёт возможность понять, что в ней можно было бы сделать лучше», — отметил Баста.
«У вас не будет возможности извлечь уроки из проекта, если вы расцените его закрытие как провал: зачастую нужно многое узнать о том, какие нетехнические аспекты проекта вышли из строя. Возможно, их нет, и руководство компании — просто группа дураков. Но зачастую это не так, а ваш искусно отфрезерованный винтик был вырван из цельного механизма не потому, что его неправильно поняли, а потому, что он не работал так же отлаженно как часть более крупной системы, в которую был установлен», — подытожил автор.
Одно найти легче, чем другое. Спойлер: это не темная материя