В Rithm мы считаем, что один из лучших способов подготовить студентов к работе в качестве веб-разработчиков — предоставить им возможность работать над реальными проектами. Работа над личными проектами может быть интересной, но работа в команде или над существующей кодовой базой дает учащимся представление о повседневных задачах разработчика, которые иначе они могли бы не узнать. Ближе к концу этих проектов мы поговорили со студенткой Джулией Хейзер, чтобы узнать ее мнение об этом опыте.

Опишите себя в нескольких предложениях (откуда вы родом, чем вы занимались до буткемпа, что-то уникальное в вас).

Я живу в Сан-Франциско более десяти лет, но я родом из Индианаполиса, штат Индиана. Ранее я работал оценщиком/исследователем образовательных и технологических проектов, а также преподавал. До прихода в Rithm я путешествовал со своим партнером в течение 7 месяцев по Юго-Восточной Азии и научился нырять с аквалангом, заниматься серфингом и ездить на мотоцикле. В свободное время я люблю проводить время с семьей, быть на природе, кататься на велосипеде и играть на пианино, а также играть в футбол и теннис.

Как бы вы описали опыт работы над проектами этих компаний? Не могли бы вы рассказать нам немного о проектах, над которыми вы работали?

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

За последний месяц я работал над двумя проектами компании:

  1. Tunelark — использование React и Redux для создания интерактивной музыкальной игры, в которой пользователи изучают ноты гитары, идентифицируя их на гитарном грифе.
  2. Отчет о курсе — добавление функциональности и повышение производительности для сайта Rails, который служит онлайн-ресурсом для будущих студентов буткемпа по кодированию, предоставляя тысячи отзывов выпускников, а также другие данные буткемпа, включая советы и интервью.

Насколько велика ваша команда? Чему вы научились, работая вместе?

Над каждым проектом я работал в команде, состоящей из 2–4 студентов. Один или несколько инструкторов Rithm помогали наблюдать за каждой командой и проводить проверки кода. Мы также тесно сотрудничали с разработчиками в каждой из компаний. Это был мой первый опыт такой совместной работы над кодовой базой в продакшене.

Я многому научился и приобрел уверенность, используя инструменты для совместной работы разработчиков, такие как Git и GitHub. Раньше я использовал Git в основном для личных проектов, а проекты компании дали мне практический опыт работы с различными методами и проблемами, более специфичными для совместной работы, такими как слияние, разрешение конфликтов слияния, перемещение, обработка запросов на включение и ветвление.

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

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

Чего вы достигли, работая над этими проектами?

Для проекта Tunelark мы создали прототип новой игры с гитарным грифом, используя React и Redux. В частности, мы написали код для отображения вопросов и интерактивных вариантов ответов, выделения ладов на грифе и отображения/обновления очков пользователя на основе взаимодействия с игрой. Поскольку другие игры на сайте были созданы с использованием CoffeeScript, мы сначала установили React, а также перевели существующую панель навигации в JSX. Затем мы решили и создали различные игровые компоненты, используя Redux и Redux-Thunk для управления и хранения состояния.

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

Для проекта «Отчет о курсе» мы значительно улучшили скорость и время загрузки страниц на сайте, исправив проблемы с запросом N+1. Кроме того, мы обеспечили точность сайта (например, написание тестов контроллера, удаление повторяющихся результатов), одновременно узнавая больше о Ruby, Rails и RSpec. Мы скорректировали схему базы данных и создали совершенно новую страницу сайта, которая позволяет пользователям сразу увидеть учебные курсы, которые наиболее соответствуют их интересам, на основе заполненной формы, а не только по электронной почте с результатами. В настоящее время мы работаем над реализацией функции «бесконечной прокрутки» с использованием AJAX для дальнейшего сокращения времени загрузки страниц с большим объемом данных.

Что было самым сложным в работе над вашим проектом?

Самым сложным аспектом проектов была расшифровка большой базы кода Course Report со сложной схемой базы данных. Было здорово, что мы смогли работать вместе, как одна команда, чтобы сделать это. Мы также смогли воспользоваться знаниями предыдущей группы студентов Rithm, которые работали над проектом, а также разработчиков компании, которые написали кодовую базу. Наша команда потратила первые несколько дней на то, чтобы разобраться в коде, наметив структуру базы данных (буквально на доске). Эти первоначальные инвестиции окупились; более глубокое понимание кода позволило нам более эффективно исправлять и улучшать сайт, вместо того, чтобы делать удары в темноте.

Как разработчик, чему вы научились в результате работы над производственным кодом?

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

Вы действительно используете алгоритмические типы решения проблем, а также концепции, которые иногда могут показаться несколько эзотерическими, в реальном коде. Мы готовились к техническим собеседованиям в Rithm, выполняя рассчитанные на время упражнения по решению проблем, а также изучая множество концепций JavaScript и новые функции языка. Было интересно увидеть, как эти различные методы применимы и могут быть чрезвычайно полезными в реальном коде. Например, мы создали поиск объектов, чтобы исключить запросы к базе данных N+1 и, в свою очередь, ускорить загрузку сайта за счет использования более эффективной структуры данных.

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