Найти в Дзене
WB Tech

Программирование изнутри: интервью с разработчиком Wildberries Иваном Ловецким

Как войти в IT-сферу и с чего начинать обучение? Как правильно учиться? Какие задачи у программиста в высоконагруженном проекте? Иван Ловецкий, ведущий разработчик платежного шлюза в Wildberries, рассказал нам о том, что его вдохновляет и как он пришел к этой профессии.
Чем сейчас занимаешься? Я – ведущий разработчик платежного шлюза. Примерно 70-80% времени у меня занимает онбординг новых сотрудников, а остальные 20-30% – это ревью кода. Сейчас я больше ментор и эксперт, чем программист. Сколько лет ты занимаешься программированием? У меня два айтишных образования – это проектирование информационных систем и информационная безопасность. После учебы в ВУЗе я пошел в аспирантуру. Программирование в моей жизни уже очень давно, еще со школы. Даже когда я брал на себя руководящую роль и занимался управленческими вопросами, то всегда кодил. Чтобы поддерживать свой уровень, я все время занимался pet-проектами. Итого: уже больше 20 лет. Какой вуз ты окончил? ДВУПС — Дальневосточный государст
Иван Ловецкий на конференции Dump в Екатеринбурге
Иван Ловецкий на конференции Dump в Екатеринбурге

Как войти в IT-сферу и с чего начинать обучение? Как правильно учиться? Какие задачи у программиста в высоконагруженном проекте? Иван Ловецкий, ведущий разработчик платежного шлюза в Wildberries, рассказал нам о том, что его вдохновляет и как он пришел к этой профессии.

Чем сейчас занимаешься?

Я – ведущий разработчик платежного шлюза. Примерно 70-80% времени у меня занимает онбординг новых сотрудников, а остальные 20-30% – это ревью кода. Сейчас я больше ментор и эксперт, чем программист.

Сколько лет ты занимаешься программированием?

У меня два айтишных образования – это проектирование информационных систем и информационная безопасность. После учебы в ВУЗе я пошел в аспирантуру. Программирование в моей жизни уже очень давно, еще со школы. Даже когда я брал на себя руководящую роль и занимался управленческими вопросами, то всегда кодил. Чтобы поддерживать свой уровень, я все время занимался pet-проектами. Итого: уже больше 20 лет.

Какой вуз ты окончил?

ДВУПС — Дальневосточный государственный университет путей сообщения.

С каких языков ты начинал?

Интерес появился еще в детстве. Я учился в физико-математическом классе, решал олимпиадные задачки. В школе самым первым языком был Basic, а в институте добавились Pascal, Assembler, C, Delphi (стандартный набор, в принципе).

Чего тебе не хватало в самом начале пути? Что бы ты сейчас изменил, если бы вернулся в начало?

Я бы сразу приступал к практике, к «боевым задачам». Есть такой подход, когда ты сначала погружаешься в теорию, а потом уже применяешь свои знания. Можно и наоборот: начать с «могу» и делать какие-то базовые вещи, и потом уже на стержень опыта нанизывать теоретические знания, необходимые для решения задачи.

Кстати, в школе Wildberries именно на этом и построено обучение. Здесь нет теории! Тебе просто дают задание, и ты ищешь информацию сам. Такой подход называется «обучение через действия». Нет смысла зубрить теорию, если не понимаешь, как это работает. Как говорил мой профессор, «чем больше я знаю, тем больше я не знаю». Если нам будет казаться, что мы очень много знаем, то без практики это будет просто иллюзией.

Сколько лет необходимо в среднем учиться, чтобы стать программистом?

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

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

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

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

Во время чтения лучше сразу что-то конспектировать. Если тебе не хватает практики, задачу можно придумать самостоятельно, например, сделать соцсеть. Мне кажется, что проще начать с книги, а потом уже приступить к практике. Но если очень сильно хочется, начать можно и с задач.

-2

Можешь ли ты посоветовать какие-то книги для тех, кто только начинает свой путь?

Разумеется, выбор книг зависит от того, в какой области ты работаешь. По языку Go могу порекомендовать три неплохие книги:

  • «Go для профи», Михалис Цукалос. Эта книга мне очень нравится. Она достаточно объемная, и с нее можно легко начать изучать язык
  • «Программирование на Go», Марк Саммерфильд. Эта книга подойдет, если хочешь сразу писать код. В ней мало теории и больше практики, а основной принцип — взять знания и сразу их применять. Своей дочери я рекомендовал именно эту книгу
  • «Язык программирования Go», Брайан Керниган. Здесь ты найдешь много полезной теории

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

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

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

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

Обязательно ли программисту иметь профильное образование? Нужно ли для этого учиться именно в вузе?

Я скажу словами своего преподавателя, профессора Веры Никитичны Кучмы. Она говорила, что программирование — это уровень техникума. Есть разработчики, а есть программисты. Одни пишут код, другие строят системы. Чтобы стать проектировщиком и заниматься разработкой информационных систем, нужно иметь вышку.

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

Я считаю, что вышку нужно получать осмысленно. Человек должен понимать, для чего ему это надо. А это осознание придет только
с практическим опытом. И тогда он подумает: «у меня есть некоторые пробелы в знаниях, поэтому я пойду учиться!» Моя дочь сначала пойдет
в колледж и поймет, нужно ей это или нет. Если нужно, то она будет потом поступать в вуз. Но никак не наоборот.

Давай поговорим о твоей работе. Какие у тебя сейчас задачи? Как проходит твой типичный рабочий день?

Мой типичный рабочий день в основном состоит из созвонов. Мне звонят и спрашивают, как решить те или иные задачи. Мы обсуждаем все это вместе, я подсказываю и делаю code review. Иногда я сам пишу код
и фикшу баги в своих проектах. Бывает, что коллеги звонят чем-то поделиться. И это очень важно: на работе необходимо выстраивать доверительные отношения.

Ты работаешь из офиса или удаленно?

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

И где тебе больше нравится работать?

Конечно в офисе! Идеальный вариант — чтобы дом был рядом с работой и чтобы все работали оффлайн. Это будет наиболее эффективно, потому что на удаленке очень много времени тратится на коммуникацию.
В офисе все происходит намного быстрее: ты можешь подойти
к человеку и что-то у него спросить, и тебе не придется ждать, пока он освободится.

Что для тебя самое приятное в профессии?

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

Есть ли какие-то негативные стороны?

Программист работает 24/7, потому что работает головой. Ты можешь закончить свой рабочий день, но твой ум продолжает решать задачи. У нас есть официальная работа до определенного часа, но, как правило все закрывают свои задачи позже этого времени. Разработчики постоянно в процессе, и им это нравится. Никто никого не заставляет работать сверхурочно, но важно соблюдать баланс.

Что еще особенно важно для программиста?

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

У тебя обязательно должны быть навыки выстраивания коммуникации, потому что ты работаешь вместе с другими людьми. Работа над проектом – это 100% командная работа. Если ты очень замкнут, с тобой не захотят иметь дела.

Какие курсы ты можешь посоветовать?

Я периодически смотрю лекции по проектированию и архитектуре. Мне очень нравятся курсы Олега Бунина, организатора профессиональных конференций Highload для разработчиков. Его лекции можно посмотреть в открытом доступе. Еще рекомендую курс по Go от Mail.ru на платформе Coursera.

Как ты считаешь, программирование – это больше про творчество или про рутину?

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

В каком направлении сейчас движется IT-сфера?

Все упрощается. В институте мы писали код, который казался нам очень сложным, но необходимым. Сейчас разработчикам это не нужно. Они могут писать годами код и не понимать, как он работает «под капотом». Разработка становится легче, порог входа значительно снижается,
но при этом требования к конечному коду увеличиваются. Сразу скажу,
что фронтенд тяжелее, чем бэкенд. Там все очень быстро меняется, появляются новые фреймворки. На бэкенде все более стабильно.

Есть такой стереотип, что войти в IT можно только в молодом возрасте. Это правда?

Я абсолютно не согласен. Мой друг всю жизнь был строителем. До 35 лет он сооружал мосты, а потом стал айтишником. Он вошел в сферу всего
за год.

Иногда на форумах разработчиков и в телеграм-каналах можно заметить некоторый снобизм среди опытных программистов, которые иногда агрессивно отвечают на вопросы начинающих. Откуда это берется и что с этим делать?

Это зависит не от профессии, а от самого человека. Любую профессию можно возвысить, а можно опошлить. Если ты так относишься к людям, то ты либо неуверен в себе, либо ты забыл, каким ты был до этого.

Чем бы ты занимался, если бы не работал программистом?

Я бы был ученым-математиком. Наверное, я им еще и стану, когда мне станет скучно)

Есть ли у тебя какие-либо хобби помимо работы?

Мне нравятся мотоциклы и спорт, особенно – бокс. У меня трое детей
и я люблю проводить время с семьей. Еще в ближайшее время хочу завести собаку.

-3