Многие старшекурсники технических специальностей и начинающие IT специалисты справедливо задаются вопросом: «Где и как построить свою карьеру?» EPAM предлагает уникальные возможности для начала и развития карьеры в области IT. Сегодня мы рассказываем историю успеха старшего инженера-программиста (Senior Software Engineer) EPAM Kazakhstan Андрея Ковальского. Андрей - выпускник учебной лаборатории RD (Resource Development), рабочего пространства для эффективной подготовки и дальнейшего трудоустройства начинающих специалистов в компанию EPAM.

описание изображения

Андрей, расскажи пожалуйста о себе, до работы в EPAM ты занимался программированием?

По образованию я не айтишник. Я учился на кафедре автоматизации производственных процессов Карагандинского государственного технического университета (КарГТУ). Будучи студентом второго курса, я впервые услышал об EPAM и о возможности пройти обучение на Java-разработчика, но не заинтересовался, так как был сфокусирован на другом. После университета я полтора года работал в конструкторском отделе, где писал код на С для микропроцессоров, а также занимался сборкой экспериментальных образцов с паяльником и напильником в руках. Примерно в то время я встретил людей, чьи знакомые и друзья работали в EPAM – и тогда решил, что хочу попробовать свои силы в IT, и именно в компании такого уровня. Так, почти пять лет назад, я попал в EPAM, как студент внешней RD-лаборатории.

И ты выбрал Java-разработку? Почему именно эту платформу?

По большей части из-за её кроссплатформенности и возможности разработки под Android. К тому времени я уже успел полюбить Linux и хотел оставаться ближе к железу. Сам язык и объектно-ориентированная парадигма произвели на меня очень сильное впечатление. Мне хватило двух интенсивных недель подготовки, чтобы пройти интервью для поступления в RD-лабораторию.

Я так понимаю, двух недель хватило на техническую подготовку. Но в RD есть требование к английскому – тоже изучил в крайне сжатые сроки?

Нет, конечно (улыбается). Английский язык я учу с младшей школы, так что пришёл в компанию уже с хорошим уровнем. Ключевым оказался навык свободной речи. Этот навык я приобрёл с помощью лингафонных курсов, направленных на то, чтобы заставить тебя говорить, а не только слушать.

По ощущениям, поступление далось тебе не сложно. Сложно ли было изучать новые технологии?

В то время я работал и учился, а всё оставшееся время посвящал занятиям Java. Знания, приобретённые в университете, оказались бесценными. Именно в КарГТУ я получил основы булевой алгебры, опыт написания различных алгоритмов, общее понимание того, как всё устроено на самом низком уровне – на уровне железа. Вообще я считаю, что базовая подготовка очень важна. Трудно построить здание, если нет крепкого фундамента.

Однако, на самом деле, не особо важно, какое учебное заведение ты закончил, или не закончил. В принципе, можешь быть поваром или адвокатом. Идея в том, что если ты решил стать разработчиком программного обеспечения, то имеет смысл углубиться в основы Computer Science.

Так как я уже имел практический опыт написания программ на С, то Java Core дался мне относительно легко. Но когда начался Web, пришлось туго – для меня это было совершенно незнакомо. Мне было крайне сложно понять, что такое Application Server, потому что слово «сервер» для меня значило одно – физическое устройство с процессором, памятью и сетевым обвесом. Когда начался финальный проект стало ещё сложнее, требовалось в достаточно короткий срок сделать то, чего ты никогда раньше не то что не делал, но и видел только кусочками. Но у меня была достаточно сильная мотивация и чёткая цель. Плюс – всё это мне было очень интересно.

Я был готов тратить на проект всё своё свободное время, чтобы успеть закончить в срок и пройти дальше, во внутреннюю RD-лабораторию. Сильно помогал куратор, он тратил часы своего свободного времени, чтобы объяснить по Skype все тонкости и нюансы. Он так увлечённо объяснял, что я невольно заряжался и стремился сделать всё наилучшим образом.

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

В общей сложности один год. В августе я принял решение попробовать свои силы, в сентябре попал на внешний курс RD-лаборатории на базе КарГТУ. В марте прошёл во внутреннюю лабораторию в офисе компании. В июле уже проходил испытательный срок, попал на проект. И, наконец, в сентябре был принят в штат как Junior Software Engineer.

описание изображения

Помнишь свой первый проект? Расскажешь о нём немного?

Такое не забывается, первый опыт (улыбается). После внутренней лаборатории мне невероятно повезло с первым проектом и командой. Эта была очень большая, сложная, не молодая банковская система для одного из крупнейших банков СНГ.

Команда проекта собралась из очень опытных специалистов и состояла из нескольких команд поменьше, распределённых по территории Казахстана и России. В общей сложности, в команде было около 12 разработчиков, приблизительно столько же специалистов тестирования и аналитики, плюс проектный менеджмент.

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

Я занимался преимущественно front-end задачами, иногда получая возможность поковырять back-end. Тот проект дал мне очень многое - понимание того, как работают и ведут себя в разных ситуациях настоящие профессионалы; некоторые особенности коммуникаций с заказчиком; понимание того, насколько сложным бывает процесс установки приложения на «боевые» сервера, какие проблемы могут при этом возникнуть и как их решать. С точки зрения архитектуры, этот проект был просто энциклопедией различных решений - практически всё, что я знаю об архитектуре и дизайне, можно было найти в той системе. Но, конечно же, самое главное в любом проекте — это люди, команда, с которой ты работаешь. До сих пор рад, что с самого начала выпала возможность работать среди таких профессионалов.

Можешь рассказать о своём самом интересном проекте?

Я не могу сравнивать проекты, каждый из них уникален. Самое главное, на каждом из них у меня была замечательная команда. Например, моим вторым проектом стала система автоматизации процессов грузоперевозок европейского заказчика. Тогда я впервые познакомился с гибкими методологиями на практике. Система разрабатывалась силами небольшой scrum-команды из нескольких разработчиков и одного Product Owner. Особенным этот проект делало то, что на тот момент он уже несколько лет весьма успешно развивался без единого тестировщика и аналитика! При этом качество продукта было очень высоким и наличие дефектов было минимальным. Чтобы добиться такого результата, команде пришлось выстроить достаточно серьёзные процессы разработки. Они включали в себя написание автоматизированных тестов, использование таких процессов экстремального программирования, как Continuous Integration, Code review, Pair Programming. Я впервые познакомился с разработкой кода через тесты. Мы даже писали автоматизированные UI тесты, чем обычно занимаются отдельные инженеры автоматизации, и успели внедрить Behaviour Driven Development. К тому же, мы периодически успешно продавали новые идеи заказчику. В то время я развивался с огромной скоростью, впитывая в себя всё больше лучших практик разработки, и чувствовал себя настоящим Software Craftsman (улыбается).

Всё общение с заказчиком велось на английском языке - как минимум, раз в день по полчаса с нашим техническим лидом со стороны заказчика и три раза по часу в конце каждого двухнедельного спринта. Кроме того, у заказчика было правило, - два раза в год встречаться лицом к лицу. Раз в год представители заказчика приезжали в Караганду, и раз в год команды ездили к заказчику. За два с половиной года, я два раза побывал в Европе. Иногда, наши ребята даже умудрялись на выходные побывать в соседних европейских странах. Но мне командировки нравятся прежде всего тем, что можно пообщаться с заказчиком вживую.

Со многими из них у нас завязались дружеские отношения. Они все с разных концов мира: Италии, Испании, Франции, Румынии, Бельгии, Индии и т.д. С ними всегда есть о чём поговорить. И что, самое важное, они знают все аутентичные национальные рестораны своего города (смеётся). К тому же, каждая командировка — это испытание своего английского, нужно разговаривать на английском языке весь день и на миллион разных тем. В первые дни я сильно уставал от общения, со временем стало легче. Отличная практика.

описание изображения

Андрей, со временем и приобретением новых навыков ты вырос до Senior Software Engineer. В чём заключается твоя работа сегодня?

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

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

IT – очень динамичная индустрия. Как, по-твоему, можно эффективно развиваться в ней и не отставать от прогресса?

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

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

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

А год назад мы с моим коллегой, Ануаром Нурмакановым, организовали в Караганде официальную Java User Group. JUG – это открытое сообщество разработчиков.

На JUG митапах могут выступать как EPAMers, так и специалисты из других компаний, как карагандинцы, так и гости города. Главный критерий — это наличие интересной и актуальной темы, желательно связанной с Java, но мы всегда рады гостям, исповедующим другие платформы. Митапы проходят раз в три месяца. На каждом обычно выступают два-три человека. В ноябре прошлого года мы вместе с EPAM и другими нашими партнерами организовали IT-конференцию под названием «IT Субботник». Слушали выступления на темы, связанные с тестированием, гибкими методологиями, front-end разработкой, а также техническую историю одного из местных стартапов. У нас в планах проводить эту конференцию ежегодно. Планов много, мы только в начале пути.

К слову, о начале пути, в завершение нашей беседы можешь дать советы тем, кто сейчас только собирается начать свою IT-карьеру?

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

  • Первое – читать, как можно больше профессиональной литературы. Литература даёт основу и знания, накопленные профессиональным сообществом. На мой взгляд, нет лучшего образования, чем правильная литература и практика. Сейчас я жалею, что читал недостаточно много в начале своей карьеры. К тому же, именно литература даёт возможность не только понимать технологии и процессы, но и грамотно их обсуждать.

  • Второе – учиться не только на собственном опыте, но и на опыте своих коллег. Интересоваться мнением более продвинутых коллег, задавать им больше вопросов, принимать во внимание их опыт, удачный и, что более важно, неудачный. Смотреть какие качества присущи самым сильным профессионалам, как и в каких ситуациях они себя ведут и какие решения принимают.

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

  • Четвёртое – не распыляться. Нужно прилагать усилия в правильном направлении. В основном, твоя карьера строится на проекте, особенно на старте, поэтому будет рациональнее изучить досконально технологии, которыми ты непосредственно занимаешься, нежели изучать что-то интересное, но мало относящееся к делу.

  • И последнее – грамотно управлять приоритетами и своим временем. В нашей работе множество обязанностей, и очень много дорог, куда можно свернуть. Чтобы обо всём помнить, делать вовремя и не сворачивать с нужного курса, нужно прикладывать дополнительные усилия, вырабатывать в себе дисциплину. Для достижения этой цели можно использовать различные техники и инструменты. Я успел попробовать такие, как Pomodoro Technique, Mind Mapping, Джедайская Техника Пустого Инбокса от Максима Дорофеева, кое-что из лекций Радислава Гандапаса, Trello.

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