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

Во-первых, немного предыстории. Я учусь на последнем курсе Индийского технологического института в Джодхпуре. Я получаю степень бакалавра компьютерных наук и инженерии. Я начал программировать с первого года обучения. До этого я даже не знал, что такое программирование. Я начал с C ++.

Изначально мне было очень сложно понять элементарные вещи. Я начал изучать веб-разработку на PHP. Я получил некоторый практический опыт, создав несколько веб-сайтов для моего колледжа, чтобы изучить HTML, CSS и Bootstrap. Я участвовал в хакатонах. Это были ступеньки для меня в области разработки программного обеспечения, хотя они не были такими сложными и дисциплинированными. Поэтому, чтобы проверить свои навыки, я начал искать возможности для участия в программах с открытым исходным кодом и возможности стажировки в индустрии программного обеспечения.

TL; DR: Этот пост о моей летней стажировке в GO-JEK и о том, как меня в конечном итоге выбрали для работы с командой инженеров. Кроме того, в процессе работы я узнал, чему научился за короткий срок.

Большое испытание - получение выбора

GO-JEK посетил мой кампус для найма летних стажеров и на полный рабочий день в октябре 2017 года. Мы получили вопросы MCQ по различным темам: структура данных, алгоритмы, операционная система, архитектура компьютера, математика (вероятность) и способности.

Следующим был раунд кодирования. Но это отличалось от любых других традиционных раундов программирования, в которых я участвовал.

Это называлось парное программирование R метод. В этом раунде нам было дано 2/3 часа на разработку и написание кода для простой системы управления. Мы должны были объединиться с одним из членов команды по найму. В этом раунде кандидатов оценивали на основе их способности писать хороший код, их объяснения используемой логики и того, могут ли они адаптироваться к идеям / предложениям пары по логике. Например, почему вы передаете этот объект как значение, а не как ссылку, и наоборот. Идея заключалась в том, чтобы выбрать разработчиков, которые знают, что они делают и почему они это делают. При этом исключите людей, которые просто писали код и решали вопросы ради него.

Затем было техническое интервью. Я должен сказать, что это был мой самый большой опыт. Я немного нервничал, потому что это было мое первое интервью, но интервьюеры заставили меня почувствовать себя очень расслабленным. Они задавали мне вопросы о проектах, над которыми я работал. Все вопросы были сформулированы для анализа моего фундаментального понимания технологий и алгоритмов, которые я использовал. Поскольку я спроектировал и разработал веб-сайт для группы по трудоустройству студентов моего колледжа, некоторые вопросы касались дизайна этого веб-сайта и того, что можно сделать, чтобы его улучшить. Были вопросы по машинному обучению, обработке естественного языка (относящейся к проекту) и структурам данных. Все прошло хорошо. В итоге на летнюю стажировку было отобрано 3 кандидата, в том числе я. Уф. 😎

Сладкое лето 18-го года

Бангалор - это сбывшаяся мечта. Погода была безупречной. Пробки, ага, не будем туда добираться. На эти 2 месяца нам предоставили самое лучшее жилье. Я не ожидал таких замечательных условий для стажеров. Первый день работы в офисе, и нам дали совершенно новый Apple Mac-book Pro, чтобы мы могли писать код всего на пару месяцев!

Я был выбран в команду Data Engineering вместе с двумя другими из IIT, Ropar. В первую неделю нам удалось понять конвейер Data Engineering для GO-JEK. Подробнее об этом можно прочитать здесь. GO-JEK имеет отличную культуру в индустрии программного обеспечения. Вы можете обратиться к людям за помощью, различные команды обсуждают различные сложные проблемы (и способы их решения), культуру открытого офиса, бесплатную еду и т. Д., Что делает жизнь разработчика проще и лучше.

Наша (3 стажёра) первой целью было научиться писать хорошо читаемый код с помощью правильных тестов. Мы начали изучать Ruby, соглашения о коде, RSpec, TDD, Git, REST API и т. Д. Проверки кода были лучшей частью в конце дня. Мы регулярно получали отзывы от наших наставников и членов команды о нашей повседневной работе. Я действительно должен поблагодарить наших наставников за их уровень приверженности нам.

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

Как только мы начали писать лучший код, нам поручили настоящий проект стажировки. Это было основано на визуализации данных. Мы собирались разработать мобильное приложение для Android и iOS, которое будет отображать статистику по всем продуктам GO-JEK и внутренним сервисам. Это приложение собирались использовать разработчики, дизайнеры, отдел маркетинга, отдел продаж, операционный отдел, руководители GO-JEK и многие другие. Это был… супер сложный проект.

Нам нужно было многому научиться. Клиент и серверы должны были разрабатываться параллельно. Мы выбрали React-Native для клиентской стороны и Ruby on Rails для сервера. Идея была проста. Все данные доступны в конвейере данных, нам просто нужен сервер, который извлекает необходимые данные и предоставляет их клиентам, запрашивающим их. Одним из клиентов было приложение React-Native. Но это чрезмерное упрощение. Давайте посмотрим глубже.

Допустим, я являюсь пользователем этого приложения и хочу узнать, сколько бронирований было сделано сегодня и сколько завершено. Каждый раз, когда инициируется событие (например, создается бронирование), оно регистрируется на серверах Kafka в формате буфера протокола. Подробнее о том, как это делается в GO-JEK, можно прочитать здесь. Чтобы получить необработанные данные из kafka, существуют разные способы (http, log, приток и т. Д.), Называемые приемниками Firehose.

Для визуализации нам потребовались некоторые агрегаты, потому что необработанные данные не имеют особого смысла. Кинжалы используются только для этой цели. Проще говоря, Daggers может предоставить вам агрегированные данные по вашему выбору в вашем формате в любом приемнике, который вы хотите. Мы использовали приемник Influxdb. Чтобы использовать определенные формы данных, все, что вам нужно сделать, это создать Dagger, указать формат сообщения, окно агрегации, и в течение минуты вы сможете потреблять данные в реальном времени и использовать их где угодно. Более того, кинжалы создаются с помощью одного простого SQL-запроса. Нет ничего проще.

Трое из нас упорно трудились, чтобы написать лучший код с нашей стороны, чтобы разработать сервис с лучшими соглашениями. Мы меняли истории со стороны клиента и сервера после парного программирования. Регулярные стендапы, обзоры кода, демонстрации помогли нам придерживаться требований. Хотя мне было трудно тестировать методы жизненного цикла React-Native, я многому научился на этом. За последние пару недель мы развернули наш сервер на артефакте GO-JEK. Это дало нам возможность узнать о Docker и Kubernetes. Да, мы также изучили основы Dev-Ops.

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

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

GO-JEK дал мне возможность понять, как все может пойти плохо, если не делать это аккуратно и с хорошей практикой. Я осознал ценность этих ценностей всего за несколько месяцев. 😊

И… В конце концов, я думаю, людям нравилась моя работа. Откуда мне знать?

Меня выбрали на полную ставку.

🖖

Судя по моему недолгому опыту, я могу с уверенностью сказать, что GO-JEK - прекрасное место для работы. И команда ищет больше разработчиков. Зайдите на gojek.jobs и подайте заявку!