Непрерывное обучение даже в праздничные выходные.

Итак, недавно (к счастью) мне представился шанс посетить штаб-квартиру GO-JEK, чтобы присоединиться к мероприятию под названием GO-JEK Upscale. И около 5 месяцев назад мне (тоже, к счастью) представился шанс принять участие в очень похожем мероприятии под названием Software Engineering Academy. Здесь я хочу поделиться своим опытом по обоим из них, с моей очень личной (и не очень технической) точки зрения. Возможно, этот пост будет больше посвящен Upscale, потому что последний был несколько месяцев назад, и я забыл подробности этого события. Наслаждаться!

Что это?

Короче говоря, оба они являются учебными лагерями по разработке программного обеспечения от GO-JEK. Отличия в том, что Software Engineering Academy (назовем ее SEA) была инициирована Compfest; IT-мероприятие, проводимое Fasilkom UI; а Upscale был оригиналом самого GO-JEK. У SEA более длительный период - 3 выходных подряд - в то время как Upscale, к сожалению, длился всего 2 дня. Вы можете увидеть больше здесь https://sites.google.com/go-jek.com/upscale/home.

Когда я сказал «учебный лагерь по разработке программного обеспечения», что, поскольку они не учат тому, что делают обычные программы учебного лагеря - веб-разработки, интерфейс, создание приложений для Android и т. Д., - вместо этого GO-JEK преподает нам некоторые из лучших практик, самые простые пока еще забытые знания о программной инженерии. Назову некоторые из них:

  • Объектно-ориентированное программирование (ООП)
  • Разработка через тестирование (TDD)
  • Гибкая разработка
  • Чистый код, рефакторинг
  • и т.п.

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

Жесткая сессия TDD

Это самая интересная часть. В первый день Upscale нас научили TDD на мас Икбал Фараби. Весь сеанс кода был одновременно веселым и пугающим. Почему? потому что нам пришлось заниматься парным программированием с человеком, которого мы никогда раньше не знали, с языком, который мы очень редко используем (Ruby), и с чрезвычайно строгим этикетом. Если мы нарушаем хотя бы одно правила этикета, нам приходилось rm -rf наш код и начинать все сначала с нуля. Вот этикет:

  • Отступы и интервалы между конструкциями кода (классами / методами / спецификациями) должны быть согласованными.
  • Используйте только пробелы (без табуляции) для отступов
  • Следуйте принятым соглашениям об именах для Ruby
  • Следуйте принятой структуре файлов имен и каталогов для Ruby
  • Использовать пространства имен
  • Никакие комментарии / неиспользованный код никогда не должны регистрироваться
  • Используйте .gitignore
  • Убедитесь, что существует README.md, который включает:
    Описание проблемы
    Настройка среды разработки
    Инструкции по сборке
    Инструкции по выполнению
  • TDD (это должно четко отображаться в журнале фиксации)

Важная вещь, которую мас Икбал сказал нам, что мы никогда не должны любить наш код, посредством rm -rf нашей базы кода, если мы допустили единственную ошибку. Цель состоит в том, чтобы быть объективным в нашей собственной ошибке и не чувствовать себя атакованными конструктивными отзывами нашего партнера / другого инженера.

GO-JEK Продукт 360

Другая интересная часть состоит в том, что мы познакомились со всем процессом управления продуктом GO-JEK мас Адитья и МБак Рената. Он охватывает все разделы, связанные с созданием и анализом продукта GO-JEK, такие как проектирование, обработка данных, операции, бизнес и даже маркетинг. У нас появился новый взгляд на то, что такое строительный продукт, помимо инженерной точки зрения. Одна из сессий заключалась в том, чтобы проанализировать возможные проблемы, возникающие в приложении GO-JEK, в частности, в суб-продукте GO-RIDE / GO-CAR, и попытаться проанализировать возможные решения для их устранения. Это было действительно сложно, потому что каждый из нас должен был найти разные проблемы. В конце сессии мы все выбрали две самые интересные задачи и разделились на две команды. Каждая команда должна создать продукт, решающий проблему, и представить его всей аудитории.

«Настоящая» инженерная часть

Это только на Compfest SEA, а не в Upscale. В SEA, помимо изучения TDD, чистого кода и управления продуктами, мы также узнали о «сложной» инженерной части, такой как DevOps, API, микросервисы, CI / CD и даже Docker. Все эти материалы должны быть закончены за 6 дней. Представлять себе! Мы проводим много сеансов кодирования с мас Гири Кункоро, Раймонд Ралиби, Энди Пангеран, Опан Мустопа и так далее (извините, если я забыл некоторые имена: /). Самым сложным для меня была часть Docker, потому что я просто никогда не использовал ее до SEA. Я часто слышал это как модное слово, но никогда не знал, зачем мне его использовать, до SEA.

Также в SEA мы (как группа) должны реализовать все знания, создав продукт, который решает проблему, которую мы (возможно) обнаружили в реальной жизни. Идея моей группы заключалась в том, чтобы сделать GO-HELP, приложение, которое может одним касанием вызывать полицию, пожарных и т. Д. Мы обнаружили, что многие люди не знают, куда им позвонить в экстренных случаях, поэтому мы создаем приложение, которое решает проблему одним касанием. Было увлекательно изучать новые технологии, создавая настоящий продукт.

Заключение

Огромная благодарность команде GO-ACADEMY за организацию этих потрясающих мероприятий. А также команде COMPFEST X, которая сотрудничает с GO-ACADEMY, чтобы инициировать SEA. Я никогда не жалею, что провожу выходные в штаб-квартире GO-JEK, мучительно кодируя до ночи, но это того стоило. Было действительно интересно изучить передовой опыт разработки программного обеспечения прямо из его источника. Если вы когда-нибудь обнаружите, что GO-JEK снова откроет такую ​​академию в будущем, обязательно подайте заявку, потому что возможности (вероятно) никогда не появляются дважды.

Спасибо за прочтение!