Всем привет! Меня зовут Илья, я фронтенд-разработчик в Авито. В этой статье я хочу поднять важную тему для каждого современного разработчика — обучение. В разработке я 6 лет, из которых 5 в Авито. За это время я попробовал много разных способов своего обучения, которыми поделюсь в этой «ретроспективной» статье.

Самое важное для разработчика

Вообще я считаю себя плохим фронтенд-разработчиком, потому что уделяю недостаточно внимания своему развитию и обучению, а зря. Для себя я выделил несколько пунктов, зачем этим заниматься:

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

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

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

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

  • Социальный момент. Найти единомышленников или устанавливать связи проще, когда разговариваешь с людьми «на одном языке».

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

Моя проблема в том, что я недостаточно погружён в технологический стек вокруг фронтенд-разработки. Да, я слышал какие-то новые названия типа Svelte, Vite, bun, даже немного читал о них. Но при этом я не могу сказать, что хорошо в них разбираюсь и готов о них говорить или даже работать с ними. Можно описать это состояние картинкой (актуальна на момент выхода статьи):

Чтобы перестать быть в такой ситуации, я перепробовал много подходов к тому, как эффективно выстроить своё обучение. Далее — о том, что именно я делал, какие у этого были плюсы и минусы и какой подход я выбрал лично для себя.

Университет

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

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

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

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

Главный минус университета, который вижу лично я — «академичность» знаний. Приходится посещать много предметов: часть из них — полезные и интересные, а другая часть выглядит странно и неуместно. Но время тратить надо и на то, и на то. Аналогично с материалом: он не всегда актуальный, вне зависимости от полезности предмета. Конечно, это даёт много знаний, но они не всегда нужные или сильно устаревшие. Поэтому одного университета мало для развития.

Внешние курсы

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

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

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

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

Статьи, подкасты, конференции

На мой взгляд, это самый доступный и известный способ получения знаний. Многие читают статьи на Хабре, слушают подкасты, ходят на конференции или смотрят выступления в записи. Но и здесь есть «подводные камни».

Как и в случае с внешними курсами, тут главное — не потеряться в обилии информации. Ресурсов и материалов много, поэтому «фильтровать» надо тщательно.

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

Развитие через рабочие задачи и ИПР

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

В Авито у инженеров есть свой Индивидуальный план развития — ИПР. Каждый инженер должен составлять его со своим менеджером и следовать по нему. Это нужно, чтобы развиваться внутри компании — промо до следующего уровня; и просто развивать себя — получать больше опыта. Эти пункты не всегда удаётся совместить, поэтому они разделены. 

Например, есть линейка уровней инженеров в Авито. Допустим, инженер хочет перейти с Е3 уровня до Е4. Для этого ему надо закрыть навыки, связанные с ответственностью за результат. Он может взять себе сервис и следить за ним, разобраться в нём, фиксить его проблемы. Поможет ли это перейти инженеру на новый уровень — да. Поможет ли в изучении чего-то нового — не факт. Этот навык больше процессный, чем экспертный, и может не возникнуть поводов изучить что-то новое в техническом плане. Поэтому эти два пункта я разделил.

В Авито есть правило, согласно которому ИПР составляется по принципу «70-20-10». В расшифровке это выглядит так:

  • 70% — развитие через рабочие задачи;

  • 20% — опыт других коллег;

  • 10% — курсы, ресурсы, книги.

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

Плюс в том, что это формализованная история: есть определённые вещи, которым надо научиться, они зафиксированы, к ним можно обратиться в любой момент.

Из минусов — самостоятельность. Ни один ИПР не сработает, если он навязан сверху, поэтому в его формировании обязательно должен участвовать сам инженер. Менеджер только помогает его провалидировать так, чтобы от него была польза. Например, выкинуть ненужные пункты или обратить внимание на отсутствие чего-то важного. И если на уровне E2–E3 ещё может быть неосознанность и менеджер будет явно участвовать в составлении плана, то чем дальше, тем большая осознанность в формировании ИПР должна появляться у самого инженера.

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

Собеседования

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

В Авито четыре технических собеседования, каждое из которых по-своему помогает в обучении: 

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

  2. Программирование, или по-простому — алгоритмы. Помогает понимать их сложность, базовые структуры, решение задач оптимальным способом.

  3. Платформа — погружение во фронтенд, бэкенд, мобильную разработку, — в зависимости от вакансии. Помогает знать особенности работы не только кода, но и инфраструктуры рядом: сеть, браузер.

  4. Проектирование — архитектура. Помогает расширять кругозор, чтобы понимать, как сделать и спроектировать систему.

Проектирование — мой фаворит в вопросе обучения. Потому что нужно понимать, какие особенности должны быть у системы — функциональные и нефункциональные требования; и знать, как именно их реализовать — фреймворк, метод общения. Недавно вышла статья о том, как у нас в Авито проходит такое собеседование.

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

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

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

Есть ещё один кандидат на самообразование с теми же плюсами и минусами. Это чтение лекций какой-то группе людей. Во время магистратуры мне пришлось семестр читать студентам лекции по Java (да, именно по Java, которая используется на бэкенде). У меня был небольшой опыт программирования на ней. Поэтому за день до лекции я садился за составление материала, параллельно изучал то, что буду рассказывать и готовился к потенциальным вопросам от студентов. Я боялся, что «сяду в лужу», если не смогу на них ответить, поэтому старался досконально изучить всё по теме, чтобы показать, как с этим работать. Это было даже более нервно, чем вести собеседование, но зато очень сильно прокачало мои знания по Java. Некоторые вещи я до сих пор помню, хотя не писал на ней с момента прихода в Авито.

Совместное обсуждение

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

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

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

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

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

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

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

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

Выводы

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

  2. Если вы думаете, что «всё знаете» и новому вас уже не научить, то попробуйте другие активности: провести собеседование, подготовиться к лекции или докладу. Так вы откроете для себя области, о которых даже не задумывались, но которые западают и их необходимо подтянуть.

  3. Понимаете, что чего-то не знаете; осознаёте, как именно этому научиться, но не хватает мотивации, отсутствует мотивация «к»? Попробуйте сами себе придумать ограничения — мотивацию «от»: те же лекции или дайджест-встречи. Вариант может показаться спорным, так как мотивация «от» в какой-то момент может перестать работать. Но здесь важное — начать, выработать привычку заниматься, чтобы потом начала работать мотивация «к».

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

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

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

Предыдущая статья: Микрофронтенды в SSR: опыт Авито

Комментарии (11)


  1. Jourloy
    13.12.2023 10:50

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

    Так как над проектом никто не стоит и никто не ставит никакие рамки, то есть возможность поресерчить и внедрить более новую/лучшую технологию или библиотеку. Я бы в целом отнес такие пет-проекты к неким песочницам, где можно тестить как и что работает


    1. IlyaNikk Автор
      13.12.2023 10:50

      Присоединюсь к комментарию. Действительно хороший вариант. Сам не особо практикую именно в таком виде, так как хорошей идеи для пет-проекта пока не появилось, а делать еще один условный TO-DO лист не очень хочется) Чаще просто "в вакууме" смотрю на технологию и пробую ее использовать, но у этого есть свои минусы с тем, что в реальном проекте технология показывает себя совершенно по-другому


      1. nin-jin
        13.12.2023 10:50

        Если сложно придумать свою идею, то тут можно найти что-нибудь интересное: https://idea.hyoo.ru/#!=projects


    1. AntonSurikov
      13.12.2023 10:50

      Да, согласен с вами. По-хорошему, у каждого фронтендера что-то такого плана должно быть для прокачки скилов


    1. xHeAVeNx
      13.12.2023 10:50

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


  1. Scorpy490
    13.12.2023 10:50

    Получается в Авито обычные собеседования методично используются для повышения уровня IT-персонала. Т.е. набрасываются всякие объявления "требуется фронтэндер", а на самом деле требуются бесплатные кандидаты для тренировки действующих сотрудников? Учитывая, что подход описан как системный, и собеседования всех мастей должны стоять на потоке.

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

    Может такой метод действительно эффективный, но он совсем недружественный к соискателям и даже нарушает КЗоТ. И хвалиться тут нечем.


    1. IlyaNikk Автор
      13.12.2023 10:50

      Можете, пожалуйста, уточнить, какие именно фразы натолкнули вас на мысль, что в Авито создаются "левые вакансии" для тренировок действующих сотрудников?

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


      1. Scorpy490
        13.12.2023 10:50

        Можете, пожалуйста, уточнить, какие именно фразы натолкнули вас на мысль, что в Авито создаются "левые вакансии" для тренировок действующих сотрудников?

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

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

        И что считается "не левой вакансией". Если она есть в штатном расписании, и на время вакансии кто-то из штата получает доплату или надбавку за выполнение этой работы. И если этого нет, то вакансия "левая". Так бы проверяла трудовая инспекция.

        А если просто повесить объявление "требуется крутой асс", вдруг кто придет и может быть тогда его примут, даже не на вакансию, а на чье-то место. Такая "вакансия" может висеть годами, на ней могут "тренировать" весь персонал. И это неэтично по отношению к соискателю.


        1. IlyaNikk Автор
          13.12.2023 10:50

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

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


  1. Zigurt
    13.12.2023 10:50

    Как обычному фронтендеру стать по-настоящему нолайфером


  1. Scorpy490
    13.12.2023 10:50

    какая именно фраза натолкнула вас на то, что собеседования в Авито проходят только для прокачки навыков

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

    Плюсы для профессионального роста в таких собеседованиях без необходимости - сомнительные. А минусы для сотрудника, у которого нет потребности принимать кого-то на работу - значительные. Это и дискомфорт от общения с людьми, которые ищут работу (и пока безуспешно), проецировать на себя их проблемы, сравнивать навыки со своими. И это стресс, где-то чувство вины, и минусов много. И непонятно для чего это все условному фронтэндеру, и какой в этом "профессиональный рост".

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

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

    Но скажите, тогда, пожалуйста, по вашему мнению, зачем это компании?

    Здесь как раз все просто. Такие методы с собеседованием будут держать персонал в тонусе, где-то в страхе. Сотруднику дают возможность пообщаться с теми, кто "приходит с улицы", примерить ситуацию на себя, сравнить, прикинуть соискателя на свое место. Амбиций и хотелок сразу должно поубавиться, лояльность и гибкость повысится. Для компании это очень удобный инструмент.