EngX Code Review: начни писать код еще лучше и построй эффективный процесс код-ревью.

Виталий Шульга: «Люди отписываются от спама, а я на него подписываюсь».

Автор — Виталий Шульга, Talent Development Manager в EPAM.

Виталий Шульга, Talent Development Manager в EPAM

Детство: Паяльник, микросхемы, спичечный комод

— Я родился в беларусском городе Новополоцке. Увлекался чтением, хотел заниматься наукой и изобретать всякие интересные штуки — вот именно изобретательство меня манило. В космос, конечно, мечтал полететь — тогда эта мечта была в тренде! Меня всегда интересовали предметы, связанные с точными науками: физика, химия, география.

Главным занятием в детстве было что-нибудь спаять: сделать самоделки из радиоэлементов. У нас дома было несколько разных паяльников! А еще у меня были радиодетали. Много мелких радиодеталей — все разные. Чтобы их хранить, нужно было купить 3-4 блока спичек, из них склеить комод. Каждый блочок я подписывал: например, резисторы на 4 Ом — здесь, на 7 Ом — в соседнем. Причем ты не знаешь, какие из них — рабочие, какие — сгоревшие, но эти 30-40 коробков — твоя прелесть!

Photo of a cat with match boxes

Никогда не забуду чувство, с которым ты идешь по городу с полиэтиленовым пакетом, прожженным паяльником. Из этого пакета торчит и паяльник, и еще какие-то пассатижи, кусачки: ты с собой все это носишь и счастлив совершенно. У меня на левой руке, наверное, процентов 10 точек, которые не чувствуют боли вообще. Потому что ты если правша, то как паяешь? В левой руке держишь крупный советский транзистор, но паяльник соскальзывает, и ты правой левую прямо жалом прижигаешь. Ну в итоге получаются такие маленькие области, где ты в принципе не чувствуешь боли больше никогда. Ну или припой там капнет, канифолька… Главное событие того периода — когда кто-то выбросил телевизор на мусорку. Пацаны налетают, забирают кто что успел, трансформаторы и микросхемы извлекают. Не знаю, продавались ли в принципе тогда радиодетали, но у нас все равно не было денег их покупать. А в старом выброшенном телеке — все бесплатно.

Увлечение радиодеталями привело меня в радиотехнический на конструкторский факультет — это разработка радиоустройств, радиоэлектроники. Изучал, как создаются полупроводники и микросхемы, практику проходил веселую на «Интеграле» (крупнейший в Беларуси завод по производству интегральных микросхем — прим.).

Незабываемое: первые деньги

Первые деньги я заработал, подрабатывая грузчиком на стройке. Мне тогда было лет 14 — мы с друзьями-одногодками решили, что пора. За городом строились коттеджи, и мой кореш, который был старше на целых полгода, сказал: все, короче, я там пробил тему. Суть была такая: просто приезжаешь и ходишь по домам и спрашиваешь, нужны ли кому-то работники. Какой-то добряк согласился дать нам работу.

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

Image of a ten thousand ruble banknote

Позже я начал заниматься телефонами. Тогда новые телефоны покупали только очень богатые люди, а молодежь брала б/у. Я заметил в газете с объявлениями, что одна и та же модель может стоить по-разному: кто-то продает за $20, кто-то — за $30. Я одолжил у отца тогда $25, купил телефон, продал его за 30. Потом купил за $30, продал… Ну и завертелось. Я покупал телефоны, менял корпус, чистил, перепрошивал, приводил в порядок и загонял подороже.

Работа, карьерный рост, релокация

Где-то курсе на втором мне друзья подсказали, что IT-компании активно набирают студентов на работу и платят неплохие деньги.

Я прошел курсы EPAM и получил оффер: мне тогда было 20 лет. Совмещать дневную форму обучения и фултайм работу было тяжело — и не особо популярно, преподаватели это не приветствовали, — но как-то справился.

Года три я работал в автоматизированном тестировании на нескольких проектах.

В какой-то момент я стал онлайн-тренером по automation mentoring — тогда это было очень необычно. Я прочитал один блок, меня попросили сделать второй, третий. В итоге вышло так, что я читал уже половину менторской программы курса. И ребята, с которыми я работал, предложили мне взять чуть больше на себя полномочий и помочь с координацией. Тогда я еще работал в продакшне, но уже активно контрибьютал в корпоративные образовательные программы.

Начался очень кайфовый период — я много ездил в командировки, обучал людей, собеседовал.

В один прекрасный день мне предложили заниматься корпоративным обучением фултайм, но готовить не мидлов-синьоров, а джуниоров. Так я стал руководителем лаборатории test automation в Минске. Одним из новых направлений стал запуск онлайн-курсов — они пользовались большой популярностью.

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

Потом мне предложили построить образовательные программы для джуниоров в Грузии. Пока я ехал, за мной закрепили еще Узбекистан, Казахстан, Армению, Кыргызстан.

Но в это же время нейросети начали о себе заявлять, и стало понятно, что нам нужен Researching Development — отдел, который будет заниматься разработкой экспериментальных вещей, смотреть, что происходит в cutting edge технологиях, проверять гипотезы.

И где-то полгода назад я передал регион с подготовкой джуниоров в добрые руки и ушел заниматься AI, R&D и инновационными технологиями.

Сейчас моя основная задача — прототипирование экспериментальных методов обучения: как корпоративного, так и более массового.

Как оставаться в тренде

Когда я стал следить за новостями в IT более углубленно, пожалуй, главным источником для меня был Reddit. Открыл я его для себя достаточно поздно, года 4, может 5 назад.

Reddit — тема! Чем больше ты читаешь, тем больше видишь интересных каналов, сабреддитов так называемых. Некоторые люди, которые разрабатывают топовые технологии, они туда же и делают анонсы. Пожалуй, это один из крупнейших источников информации.

Есть определенная разница между русскоязычным и англоязычным инфополями. Я достаточно долго варился в русскоязычной среде. Мемы, которые мне скидывают друзья в телеграм, — это мемы, которые я видел неделю, две, месяц назад на реддите. Просто их кто-то скопировал, перевел — и вот в рунете новый мем.

Я подписан на кастомные рассылки, и их очень много. Люди обычно отписываются от спама, а я наоборот — подписываюсь. Я подписан на много рассылок — по экономике, AI… Не могу сказать, что все их я читаю, но я по крайней мере прочитываю заголовки.

А если это появляется в новостях обычных, значит, уже месяц-два прошли с момента первых звоночков. Про тот же ChatGPT в новостях написали спустя лишь несколько месяцев, как он вышел, когда им уже успели попользоваться, дать первые отзывы. А время ценно, нужно новые вещи примерять на наш бизнес. Поэтому у меня сейчас 99% исследования — это англоязычный сегмент. Пара каналов на русском только — и то, скорее это философские рассуждения людей, которые мне интересны.

Vitaly Shulga

Хобби

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

A photo of Vitali Shulha in black and white

Я постоянно читаю, много. Каждый день в течение уже лет 15 — только если я в лесу не ночую в палатке, то точно читаю минимум полчаса в день, очень люблю фантастику научную.

Был период, когда я играл на гитаре. Давно, правда, не практиковал, но хочу вернуться к этому.

Увлекаюсь фотографией, обожаю снимать на зеркалку: хорошо понимаю процесс с технической точки зрения, даже если ракурс может страдать. Компы еще люблю! Недавно собрал себе новый комп с душой. А еще снимаю дроном разные виды Грузии, выкладываю любительские видео на YouTube. Тоже давно не обновлял эту историю, но, пожалуй, пора.

О курсах

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

Та же automation mentoring программа, о которой я говорил выше, — она нужна для чего? Чтобы из «неавтоматизаторов» — тестировщиков, которые не используют инструменты автоматизации, — сделать автоматизаторов. В какой-то момент мы поняли, что подготовка джуниора и подготовка мидла-синьора, если человек переходит из одной профессии в другую, — будет примерно одинаковой, то есть список инструментов, которые нужно знать и тем, и другим, плюс-минус одинаковый. Глубина погружения может быть разной, да, но с большего там одно и то же. Поэтому мы начали те модули, которые у нас были по инструментам, фреймворкам и технологиям, переписать. И когда мы это переписывали, я понял, что люди не смотрят вебинары двухчасовые. Никто не будет смотреть их, если, конечно, их не снял Майкл Бэй или какой-то уважаемый человек.

Version Control with Git

И мы решили делать короткие ролики. Нам пришлось переработать механизм подачи полностью. Начали с базы, с самого простого — это Git. Для чего он нужен? Когда ты работаешь с кодом, тебе этот код нужно где-то хранить. Git — это система для хранения текстовых файлов: кода или других. С него все начинается, поэтому его мы сделали первым.

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

Software development methodologies

Курс Software development methodologies появился из необходимости объяснить основные методологии разработки ПО для junior и middle специалистов.

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

В чем особенность методологий? Это система, которая грамотно, правильно описана создателями и авторами в неких каноничных трудах. В курсе я привожу пример каноничной книги по экстремальному программированию Кента Бека. Прекрасная книга, в которой объясняется, как все должно работать в идеале. В реальности на проектах работает чуть-чуть по-другому. Не кардинально, но вот отличается немного. Я не встречал за свою карьеру ни одного проекта, который исповедует каноничную методологию, которая as designed была описана в книгах. У людей часто возникает небольшой диссонанс, когда они приходят на проект, видят одно, а в книгах или статьях написано по-другому. Или они приходят на проект, видят, как на практике происходит, и считают, что так должно быть везде и что так и была создана методология TDD (Test-Driven Development) BDD (Behavior-Driven Developmen), Scrum, Kanban, что угодно. Но это тоже не так.

При создании курса я руководствовался даже не столько своим опытом, сколько оригинальными источниками того, как была продумана вся философия той или иной методологии. Рассказываю об основных концептах, исходя их заложенной в них оригинальной мысли автора. Это будет полезно и джуниору, который не имеет никакого опыта (тем, кто ни с методологиями не знаком, ни на проектах не работал реальных), так и людям, которые уже на проектах поработали, понимают, как может происходить на практике, но им интересно узнать, какие есть альтернативные способы “приготовления” такого же продукта, но немножко по-другому. И я очень коротко, без сильного погружения в детали, пробегаюсь по самым популярным в IT направлениям — это Waterfall, Agile, Scrum, Kanban, а также добавил еще экстремальное программирование, test driven development и behaviour driven development.

Так и получился этот маленький короткий курс, он всего 1.5 часа длится, пройти можно буквально за вечер и преисполниться.

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

Maven Build Tool

Курс Maven Build Tool был создан с целью помочь новичкам в программировании на Java собирать свои тестовые проекты с помощью некоторого инструмента сборки, или build tool. Наш выбор пал на Maven, поскольку он был самым популярным и очень простым в использовании. Задача курса состояла в том, чтобы за полчаса рассказать людям о базовых принципах: о том, как создавать проект, подключать необходимые зависимости и готовить проект к публикации на Git или GitHub, либо присоединиться к уже готовому проекту.

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

Мы как бы предложили им использовать Maven, аккуратно положить его в Git, чтобы все было красиво и гладко с их проектами.

Continuous Integration with Jenkins

Курс "Continius Integration with Jenkins" ориентирован на тех, кто недавно начал изучать программирование. Jenkins может быть либо первым, либо последним этапом процесса создания проекта, в зависимости от подхода разработчика. В разработке применяется понятие "build pipeline" — цепочка действий от внесения изменений в код до релиза новой версии продукта. Она бывает двух видов: "continuos integration" или "continuos delivery".

Continuos integration — это когда с каждым изменением в коде все тестирование, пересборку и интеграцию компонентов надо делать заново. "Continuos delivery" отличается только тем, что в конце этой цепочки происходит также автоматическое развертывание продукта на прод.

Jenkins — один из самых популярных и простых инструментов для continuos integration. Курс охватывает основы использования Jenkins, включая его установку и настройку. Он углубленно знакомит с данным инструментом и подходит для тех, кто только начинает сталкиваться с потребностью в continuos integration.

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

Курсы автора:

Язык

Следующим к публикации готовится курс Computer Science basics (ru). Изначально я все свои курсы пишу на русском. Во-первых, мне так легче выражать мысли. Во-вторых, можно пошутить — пошутить на английском сложнее. И еще — когда ты изучаешь какую-то новую штуку, тем более фундаментальную, лучше, когда это будет на родном языке. Ты можешь читать man pages на английском, но это не фундаментальные вещи. Когда тебе нужно понять базовые вещи, при прочих равных… Это как с книгами. Я пробовал читать Кинга на английском. Блин, тяжело! Да, слова понятны, но когда я читаю хороший качественный перевод, это небо и земля, я получаю наслаждение. Это не страдания, не челлендж, а я просто получаю удовольствие от профессионального перевода. А если сложная вещь, я читаю еще примечания переводчика: почему вот этот персонаж назван так, почему это так переведено — так там огромная работа проведена! А сам я так не переведу.

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

Конечно, компании выгоднее делать все на английском. У нас 50 офисов, и английский понимают все. Но мне выгодно делать на русском, потом переводить на английский, потому что более качественный продукт получится на старте, плюс будет определенная аудитория, которой легче это будет все воспринять.

Я был в разных странах и встречал людей, которые смотрели мои курсы, в Узбекистане, Казахстане, Армении: они все смотрели курс на русском. Меня там даже в магазинах узнавали! Я не думаю, что им бы так же зашло, если бы они смотрели на английском.

Материалы по теме
Следи за новостями на любимых платформах