Работа инженера-программиста в Lokad

Мы растем, и как никогда раньше мы нанимаем талантливых инженеров-программистов. Lokad сталкивается с впечатляющим перечнем технических вызовов. Поэтому, когда инженеры спрашивают: что я буду делать в Lokad?, мы можем ответить вопросом: что вы хотели бы делать с нами? Давайте кратко рассмотрим основные функциональные области платформы Lokad. Если вы подадите заявку в Lokad, пожалуйста, сообщите нам, где лежат ваши интересы.

Интересует Lokad? У нас приветствуются удаленные позиции.

Подайте заявку, отправив свое резюме на contact@lokad.com.

software-engineering-social

Миссия (с точки зрения инженера)

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

Основы

Наша кодовая база: C# / F# / TypeScript / .NET. Мы используем Git и Visual Studio. Lokad размещён на Microsoft Azure. Мы в основном не привязаны к конкретной операционной системе и работаем на .NET Core и Linux. У нас тысячи модульных тестов и надежная система непрерывной интеграции от начала до конца, позволяющая перезадеплоить всё одним кликом.

Мы набираем 12/12 по Joel Test, но с несколькими изменениями, которые, по нашему мнению, являются лучшими (не забывайте, что этот тест был написан 20 лет назад).

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

Проводите ли вы спонтанное тестирование удобства использования в коридоре? Это, безусловно, работает, когда вы разрабатываете веб-приложение. Но когда речь идет о проектировании компилятора и канала передачи данных для глубокого обучения, это уже не так эффективно. Тем не менее, мы в большом объеме используем собственные разработки, так как наши собственные специалисты по цепям поставок являются самыми активными пользователями Lokad.

Событийное хранение

Устали разрабатывать CRUD-приложения, связанные с SQL базами данных? Если нет, вам стоит попробовать. Событийное хранение представляет собой превосходную альтернативу практически во всех аспектах. Его проще поддерживать, он более масштабируем и безопасен. Основным недостатком остается неопытность сообщества с этим подходом. Основная часть Lokad полностью построена на событийном хранении, и у нас нет SQL баз данных.

Если вы хотите научиться создавать облачные приложения, основанные на современных принципах, присоединяйтесь к нам.

Слой хранения

Мы организовали все данные наших клиентов как нечто вроде Git-репозитория, за исключением того, что некоторые клиенты загружают файлы размером до 100 ГБ. Очевидно, что мы не используем настоящий Git-бэкенд, а создали собственный слой хранения поверх Blob Storage от Microsoft Azure.

Наличие слоя хранения, подобного Git, важно для надежности и воспроизводимости. Загрузка гигантских плоских файлов в Lokad занимает время. Вы не хотите подвергать своих клиентов риску обработки незавершенного (или перезаписанного) файла. Благодаря Git-подобной семантике файл либо присутствует, либо отсутствует; никакое небезопасное состояние файла никогда не передается остальной части Lokad.

Если вы любите Большие Данные, то это именно то место.

Компилятор, фронтенд и бэкенд

Envision — это наш собственный DSL. Его активно использует команда специалистов по цепям поставок. Этот язык прост, но при этом обеспечивает огромную производительность при решении задач оптимизации цепей поставок. В целом, Lokad — это платформа, предназначенная для создания и выполнения скриптов Envision.

Поскольку вся кодовая база Envision находится в пределах платформы Lokad, у нас есть возможность автоматически переписывать существующие скрипты по мере эволюции языка. Таким образом, мы не застреваем навсегда с каждой дизайнерской ошибкой, которую совершили. Мы переписываем и идем дальше. Для инженера по компиляторам это представляет возможность работать с невероятной скоростью.

Обладаете глубокими знаниями в области компиляторов? Мы нуждаемся в вас.

Вычислительная сетка

Наш компилятор нацелен не на одну машину, а на облако. Envision спроектирован для масштабного параллелизма. Мы разработали собственную вычислительную сетку, несколько похожую на Spark. Однако, используя особенности данных цепей поставок, мы часто достигаем ускорения от 10x до 100x по сравнению с обычными подходами, при равных вычислительных ресурсах.

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

Возможно, вы знаете Spark, но сможете ли вы создать лучший Spark? Если да, присоединяйтесь к нам.

Машинное обучение

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

Глубокое обучение в Lokad — это не просто обработка данных с использованием последнего модного инструмента с открытым исходным кодом. Это переосмысление основ статистического обучения для достижения превосходных результатов в целой отрасли. Наши задачи заключаются в изобретении новых алгоритмов и создании собственных примитивов, когда это необходимо.

Возможно, вы знаете TensorFlow, но сможете ли вы создать лучший TensorFlow? Если да, присоединяйтесь к нам.

Решатели и другие алгоритмы

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

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

Вам нравятся сложные алгоритмы. Вы считаете, что производительность — это функция. Нас так же. Присоединяйтесь к нам.

Компонуемые информационные панели

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

Мы упоминали, что наши панели работают быстро? Да, они такие. Обычно рендерятся на стороне клиента менее чем за 500 мс, даже при сложных панелях. Создание красивых и одновременно практичных панелей — задача непростая, мягко говоря. Мы уже внедрили инфраструктуру для достижения такой производительности, но нас ждет долгий путь по ее полному использованию.

Сможете ли вы решить нашу мета-дизайнерскую проблему? Присоединяйтесь к нам.

Мэшапы и интеграции

Оптимизация цепей поставок ничего не стоит без данных. Все больше цепочка поставок живет в облаке. Приложения, такие как ERP / WMS / OMS, также являются SaaS, как и Lokad. Через свои API эти приложения предоставляют данные, критически важные для выполнения миссии Lokad. Таким образом, Lokad необходимо поддерживать растущую экосистему интеграций.

Интеграция данных сторонних разработчиков может показаться всего лишь рутинной задачей. Однако сделать это правильно — настоящий вызов. Нам необходимо получать всю историческую информацию таким образом, чтобы это было и инкрементально, и надежно. Мы должны управлять множеством режимов сбоев. Бесполезно винить приложения за недостижение 100% времени работы — никто так не делает. Вместо этого мы разрабатываем стратегии, чтобы максимально эффективно использовать предоставленное время безотказной работы.

Хотите общаться с половиной B2B программного сообщества? Присоединяйтесь к нам.