Разблокируйте ваших программных инженеров с помощью Unblocked

Освободите своих программных инженеров с помощью Unblocked

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

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

Культура документирования является прекрасным шагом в правильном направлении. Однако часто эта документация разбросана по Slack-сообщениям, страницам Notion и Confluence вики, запросам на слияние в GitHub и задачам в Jira. Как успешно ориентироваться в этом бесконечном море информации?

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

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

Мы рассмотрим три общих категории поиска информации:

  1. Общее понимание архитектуры нового кодового базиса
  2. Попытка понять, как работает функция
  3. Устранение неполадок и исправление ошибок

Готовы начать разблокировку?

Пример хранилища

Для того, чтобы использовать Unblocked с данными моего текущего работодателя, мне бы потребовалось пройти процесс безопасности и получить разрешение. Unblocked соответствует стандарту SOC 2 и изолирует данные клиента. В настоящее время я решил попробовать Unblocked с моими личными проектами, чтобы понять его возможности.

Я обратился к одному из самых крупных хранилищ из моих студенческих лет. У меня есть хранилище, в котором содержатся десятки проектов, над которыми я работал во время студенчества. Большинство из этих проектов я не смотрел в течение восьми лет. Если вы похожи на меня, то, вероятно, забыли детали кода, над которым работали всего несколько месяцев назад, поэтому возвращение к этому хранилищу казалось таким же, как повторно вступить в должность!

Вы можете найти полное хранилище на GitHub. (Пожалуйста, не судите слишком строго по качеству кода. Это был мой первый опыт!)

Сценарий первый: можно ли получить общее представление о кодовой базе?

Когда я познакомился с некоторыми проектами в этом старом хранилище, я спросил Unblocked о своем хранилище.

Я начал с очень общего вопроса: “Что делает это приложение?”

Unblocked ответил мне, что это хранилище содержит множество разных проектов. Он даже описал некоторые из проектов. Он знал, что у меня есть приложения по усыновлению животных, фотографии, фитнесу и потоковому просмотру фильмов. Он также правильно определил, что одно из моих приложений – это веб-игра.

Вопрос и ответ на “Что делает это приложение?”

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

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

Вопрос и ответ на “Какие языки, библиотеки или фреймворки используются в этом хранилище?”

Сценарий второй: как это работает?

Хорошо, для меня это было достаточно хорошим введением. Затем я задал конкретный вопрос о одном из своих проектов: игре Connect Four, построенной с помощью jQuery.

Помните, что целью этого пробного использования было проверить, насколько я могу использовать Unblocked в своей повседневной работе. Поэтому я представил себя разработчиком, который адаптируется к новому кодовому базису и работает над этой игрой. У меня возник вопрос о том, как работает эта игра. Вместо того, чтобы мешать своим коллегам, я решил спросить у Unblocked.

Я хотел убедиться, что у игроков нет возможности жульничать в моей игре. Я спросил: «В приложении ConnectFour может ли игрок сделать два хода подряд, не дожидаясь своей очереди?»

Ответ Unblocked был впечатляющим. Он смог ссылаться на конкретный фрагмент кода, который показывал, как работает очередность ходов в игре.

Вопрос и ответ для «В приложении ConnectFour может ли игрок сделать два хода подряд, не дожидаясь своей очереди?»

Однако я не был убежден, что игрок не найдет способа сжульничать. Я задал дополнительный вопрос: «Что, если кто-то быстро дважды нажмет кнопку, пока анимация не закончится? Тогда сможет ли он сжульничать и поставить две фишки одновременно?»

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

Он даже нашел закрытое обсуждение в GitHub, касающееся подобной возможной проблемы, но заверил меня, что она была решена.

Вопрос и ответ для «Что, если кто-то быстро дважды нажмет кнопку, пока анимация не закончится? Тогда сможет ли он сжульничать и поставить две фишки одновременно?»

Сценарий Три: Можете ли вы помочь мне исправить эту ошибку?

Давайте сменим направление и рассмотрим еще один сценарий. Представим, что я работаю в новом кодовой базе и нуждаюсь в помощи по исправлению ошибки. Я могу попросить помощи коллегу, но кажется, что Unblocked тоже может помочь.

В следующих вопросах я ссылался на многопользовательскую игру под названием Pixel Mania, которую я разработал много лет назад в качестве проекта-окончания. Эта игра написана на JavaScript и использует веб-сокеты для обмена информацией между пирами. В игре каждый игрок представлен точкой. Они перемещаются по экрану, поедая еду, чтобы увеличиваться в размерах. Игроки также могут съедать друг друга. Это приходится делать, избегая препятствий, которые уменьшают их размер вдвое.

Эта игра работает отлично, когда играют два-четыре игрока. Однако она начинает тормозить, когда количество игроков увеличивается.

В этом сценарии представьте, что я разработчик, работающий над этим проектом, и замечаю эти проблемы с производительностью. Мне нужна помощь. Кого стоит спросить? Конечно же, Unblocked!

Мой первый вопрос был: «В PixelMania я замечаю проблемы с производительностью при большом количестве игроков. Почему так происходит?»

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

Кстати, он прав. Многие операции в игре связаны с проходом по всем элементам, поиску столкновений, чтобы узнать, съели ли вы кусок еды, съели ли вы другого игрока или получили удар шаром. Если мы думаем о нотации O-большое, эти операции занимают не меньше времени O(n).

Затем Unblocked предложил, что некоторые возможные оптимизации могут быть достигнуты с помощью “техник, таких как ограничение частоты обновлений, использование сжатия дельты для обновлений или реализация системы управления интересующей областью, где клиенты получают обновления только для объектов, находящихся рядом с их игроком”.

Вопрос и ответ для «В PixelMania я замечаю проблемы с производительностью при большом количестве игроков. Почему так происходит?»

Приятно в общении с Unblocked то, что можно проводить беседу, подобную ChatGPT. У меня были дополнительные вопросы, и я хотел рассматривать это как сессию совместного программирования.

Я спросил: «Можете ли вы объяснить подробнее про предложенные вами методы оптимизации?»

Unblocked дал подробные объяснения по своим пяти предложенным методам:

  • Ограничение частоты обновлений
  • Сжатие дельты
  • Управление интересующей областью
  • Пространственное разделение
  • Оптимизация структуры данных

Вопрос и ответ для «Можете ли вы объяснить подробнее про предложенные вами методы оптимизации?»

Я хотел углубиться еще больше. Я спросил: «Пространственное разделение звучит мне интересным подходом. Можете дать мне совет, как мне реализовать его в PixelMania?»

Он дал еще более подробные советы! Обратите внимание, что он не просто дал общую информацию о том, как работает пространственное разделение, но применил советы к конкретным файлам моего приложения, таким как game.js и Player.js.

Вопрос и ответ на вопрос “Пространственное разделение звучит как хороший подход для меня. Можете ли вы дать мне совет о том, как я могу реализовать это в PixelMania?”

После этого я задал всего один вопрос о структурах данных, которые я использовал: “Вы также упомянули оптимизацию структуры данных. Есть ли в PixelMania структуры данных, которые используются неэффективно или неправильно и могут быть оптимизированы?”

Unblocked ответил с конкретными примерами выбора дизайна, которые я сделал, и выделил некоторые потенциальные недостатки. Многие из моих операций выполнялись за время O(n), и возможно, я мог бы использовать другие структуры данных и лучше использовать объекты для достижения времени O(1). Это потенциально может улучшить некоторые проблемы с производительностью.

Вопрос и ответ на вопрос “Вы также упомянули оптимизацию структуры данных. Есть ли в PixelMania структуры данных, которые используются неэффективно или неправильно и могут быть оптимизированы?”

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

Вывод

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

Искусственный интеллект играет все более важную роль в нашей области как разработчиков, и он имеет возможность значительно увеличить нашу продуктивность таким способом, которого мы никогда не видели раньше.

Unblocked – один из таких инструментов. Облегчая разработчикам находить ответы на свои вопросы самостоятельно, Unblocked позволяет нам получать необходимую помощь в нужный момент.