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

Самое важное для разработчика
Вообще я считаю себя плохим фронтенд-разработчиком, потому что уделяю недостаточно внимания своему развитию и обучению, а зря. Для себя я выделил несколько пунктов, зачем этим заниматься:
-
Быть в курсе актуальных технологий. Важно знать, что происходит вокруг той среды, в которой ты работаешь. Когда выйдет новый продукт, который можно будет использовать в твоей работе — ты не окажешься «за бортом».
-
Развивать критическое мышление. То, что новый продукт выходит и все о нем говорят, не означает, что он подходит тебе или твоей компании. Нужно уметь понимать и критически оценивать любые технологии.
-
Карьерный рост. Изучение технологий, подходов, развитие софт скиллов, — всё это будет влиять на скорость твоего роста внутри компании.
-
Быть востребованным на рынке. Если текущее место работы не нравится по любым причинам, то на рынке много компаний и много вакансий, где нужен разный стек. Но чем меньше ты знаешь, тем меньше у тебя выбора.
-
Социальный момент. Найти единомышленников или устанавливать связи проще, когда разговариваешь с людьми «на одном языке».
-
Кроме тебя никто не будет этим заниматься. Как бы жестоко это не звучало, но все пункты выше будут бесполезны, если ты не хочешь развиваться.
Моя проблема в том, что я недостаточно погружён в технологический стек вокруг фронтенд-разработки. Да, я слышал какие-то новые названия типа Svelte, Vite, bun, даже немного читал о них. Но при этом я не могу сказать, что хорошо в них разбираюсь и готов о них говорить или даже работать с ними. Можно описать это состояние картинкой (актуальна на момент выхода статьи):

Чтобы перестать быть в такой ситуации, я перепробовал много подходов к тому, как эффективно выстроить своё обучение. Далее — о том, что именно я делал, какие у этого были плюсы и минусы и какой подход я выбрал лично для себя.
Университет
Это первое, с чем все сталкиваются во время обучения. Я не буду рассуждать о необходимости высшего образования — статья всё-таки не про это. Но отмечу пару моментов, которые выделил для себя.
Дисциплина. Одно из качеств, которое мне привил университет и которое помогает по жизни. Во время учёбы есть шанс отчисления, и чтобы этого не случилось, надо выполнять все поставленные задачи, даже если они не очень нравятся. Придётся находить в себе силы, чтобы в конечном итоге дойти до логического результата — в данном случае это диплом. А теперь мне несложно работать и учиться, если что-то давит на меня — например, сроки проекта.
Я понял, чем хочу заниматься. Я учусь в аспирантуре, а перед этим закончил бакалавриат и магистратуру. При этом все три направления у меня разные: в начале я стал инженером-технологом по проектированию электронной аппаратуры, затем получил степень магистра в проектирование сетевых систем, сейчас получаю степень в системах машинного обучения. Я каждый раз менял направление на то, которое было ближе к тому, чем хотел заниматься и в чем развиваться. Когда я захотел развиваться в направлении фронтенда, я сменил вектор развития с аппаратуры на прикладное сетевое взаимодействие, чтобы лучше понимать, как работает Интернет. Сейчас я понял, что машинное обучение в будущем поможет упростить мою работу. Я хочу связать ML и фронтенд.
Если ты уже понимаешь, чем именно хочешь заниматься по жизни, и при этом планируешь продолжать получать высшее образование, — не стесняйся менять направление на то, которое тебе поможет в будущем. Это может быть сложно, но зато потратишь время с большей пользой, чем если останешься там, где тебе не интересно.
Главный минус университета, который вижу лично я — «академичность» знаний. Приходится посещать много предметов: часть из них — полезные и интересные, а другая часть выглядит странно и неуместно. Но время тратить надо и на то, и на то. Аналогично с материалом: он не всегда актуальный, вне зависимости от полезности предмета. Конечно, это даёт много знаний, но они не всегда нужные или сильно устаревшие. Поэтому одного университета мало для развития.
Внешние курсы
Из-за проблем с неактуальностью знаний многим не нравится учиться в университете. Вместо этого они предпочитают различные курсы. Отчасти и я не стал исключением. В своё время я прошёл двухгодичные курсы веб-разработки. Там рассказывали про все аспекты, начиная от самой разработки и заканчивая тестированием и проектным менеджментом. Плюс таких курсов — актуальные знания и их ориентация на рынок. Здесь будут учить только тому, что сейчас действительно востребовано.
Такие курсы часто делают большие компании, такие как Авито, Яндекс, ВК, HeadHunter и другие. Их цель — подготовить ребят к тому, что может пригодиться в работе непосредственно у них. Поэтому ещё один плюс — это возможность более простого трудоустройства.
Из минусов выделю обилие таких курсов. В последнее время часто появляется реклама, в которой обещают за полгода обучить всем премудростям веб-разработки и даже трудоустроить. Cвоим друзьям я советовал проходить курсы именно от крупных компаний. Как выбрать какие-то другие — не подскажу, потому что в этом у меня почти нет опыта. Но посоветую обращать внимание на организатора и спикеров, чтобы попасть к компетентным людям.
Важно: курсы не заменяют университет, у них совершенно разные цели. Университет — это высшее образование, он преследует свою направленность по ходу обучения. Курсы — это дополнение, которое поможет в будущем. В идеале советую пройти и то, и другое. По моему опыту — лишним точно не будет.
Статьи, подкасты, конференции
На мой взгляд, это самый доступный и известный способ получения знаний. Многие читают статьи на Хабре, слушают подкасты, ходят на конференции или смотрят выступления в записи. Но и здесь есть «подводные камни».
Как и в случае с внешними курсами, тут главное — не потеряться в обилии информации. Ресурсов и материалов много, поэтому «фильтровать» надо тщательно.
Каждый сам находит мотивацию этим заниматься. За то, что ты не прочитаешь сегодня статью, тебя никто не накажет, поэтому иногда бывает сложно найти мотивацию и время. В эту ловушку попал и я. Задач на работе много, университет тоже отбирает часть времени, поэтому ещё и что-то читать бывает тяжело и лень. Но я понимаю важность самообразования, поэтому нашёл способы, чтобы решить эту проблему.
Развитие через рабочие задачи и ИПР
Типичная ситуация на работе: тебе ставят задачу, а ты без понятия, как её сделать. Тут можно пойти двумя путями. Первый — быстро глянуть что-то похожее, решить задачу и пойти делать фичи дальше, а про эту задачу просто забыть. Второй — начать глубоко копаться в Интернете, что-то читать и изучать по теме. В итоге задача тоже решена, но при этом изучено столько материала, что сложно его просто так забыть. Это не самый очевидный, но хороший способ самообразования.
В Авито у инженеров есть свой Индивидуальный план развития — ИПР. Каждый инженер должен составлять его со своим менеджером и следовать по нему. Это нужно, чтобы развиваться внутри компании — промо до следующего уровня; и просто развивать себя — получать больше опыта. Эти пункты не всегда удаётся совместить, поэтому они разделены.
Например, есть линейка уровней инженеров в Авито. Допустим, инженер хочет перейти с Е3 уровня до Е4. Для этого ему надо закрыть навыки, связанные с ответственностью за результат. Он может взять себе сервис и следить за ним, разобраться в нём, фиксить его проблемы. Поможет ли это перейти инженеру на новый уровень — да. Поможет ли в изучении чего-то нового — не факт. Этот навык больше процессный, чем экспертный, и может не возникнуть поводов изучить что-то новое в техническом плане. Поэтому эти два пункта я разделил.
В Авито есть правило, согласно которому ИПР составляется по принципу «70-20-10». В расшифровке это выглядит так:
-
70% — развитие через рабочие задачи;
-
20% — опыт других коллег;
-
10% — курсы, ресурсы, книги.
Основной упор сделан на то, что человек обучается через решение рабочих задач. Такие знания — самые близкие к рабочим процессам, а значит, самые полезные. Но обучение через другие источники тоже важно, хотя и в чуть меньшей форме.
Плюс в том, что это формализованная история: есть определённые вещи, которым надо научиться, они зафиксированы, к ним можно обратиться в любой момент.
Из минусов — самостоятельность. Ни один ИПР не сработает, если он навязан сверху, поэтому в его формировании обязательно должен участвовать сам инженер. Менеджер только помогает его провалидировать так, чтобы от него была польза. Например, выкинуть ненужные пункты или обратить внимание на отсутствие чего-то важного. И если на уровне E2–E3 ещё может быть неосознанность и менеджер будет явно участвовать в составлении плана, то чем дальше, тем большая осознанность в формировании ИПР должна появляться у самого инженера.
У меня так же есть ИПР, в котором зафиксированы основные вещи, над которыми я работаю. Мне нравится такой подход. Компания настолько сильно заинтересована в развитии своих инженеров, что попробовала проработать процесс развития и помочь с ним. Но ИПР — это больше про рабочие задачи, а мне хочется развиваться и технически. Поэтому я продолжил искать способ удовлетворить своё желание изучать что-то новое.
Собеседования
Ещё один неочевидный способ обучения. Инженеры во всех компаниях с определённого уровня учатся проводить собеседования в качестве интервьюера. Интервью проводят по шаблону с вопросами, которые надо задать. Интервьюеру важно хорошо разбираться в вопросах, чтобы понять, правильно ответил кандидат или нет. Если после первого интервью понятно, что есть западающие темы, то это повод, чтобы их закрыть.
В Авито четыре технических собеседования, каждое из которых по-своему помогает в обучении:
-
Скрининг — входное получасовое собеседование. Помогает отлично узнать основы, так как за очень короткое время нужно понять, что именно не знает кандидат и готовы ли мы его пустить дальше.
-
Программирование, или по-простому — алгоритмы. Помогает понимать их сложность, базовые структуры, решение задач оптимальным способом.
-
Платформа — погружение во фронтенд, бэкенд, мобильную разработку, — в зависимости от вакансии. Помогает знать особенности работы не только кода, но и инфраструктуры рядом: сеть, браузер.
-
Проектирование — архитектура. Помогает расширять кругозор, чтобы понимать, как сделать и спроектировать систему.
Проектирование — мой фаворит в вопросе обучения. Потому что нужно понимать, какие особенности должны быть у системы — функциональные и нефункциональные требования; и знать, как именно их реализовать — фреймворк, метод общения. Недавно вышла статья о том, как у нас в Авито проходит такое собеседование.
Лично я участвую в трёх секциях. На самом деле во всех четырёх, но E5 и выше не зовут на скрининги, потому что они занимают много времени. После первых собеседований я понял, что о некоторых вещах я не готов общаться с кандидатами, и их нужно почитать и изучить. Особенно сильно на меня произвела впечатление секция проектирования. Там стало понятно, что я в принципе не смог бы её хорошо пройти.
Из плюсов отмечу то, что есть конкретный список вопросов для проведения секций. Эксперты помогут и подскажут, как правильно себя вести, что отвечать кандидатам, что должны ответить они, — своего рода контроль, когда ставишь себя на место кандидата.
Из минусов — социальное взаимодействие. Есть легенда, что IT-специалисты — несоциальные и необщительные люди. Не все, но такие действительно есть, и им может быть сложно вести секции собеседований. Особенно с учётом того, что когда-то им придётся делать это одним. Кроме этого, в момент собеседования ты представляешь компанию, поэтому нужно вести себя соответствующе.
Есть ещё один кандидат на самообразование с теми же плюсами и минусами. Это чтение лекций какой-то группе людей. Во время магистратуры мне пришлось семестр читать студентам лекции по Java (да, именно по Java, которая используется на бэкенде). У меня был небольшой опыт программирования на ней. Поэтому за день до лекции я садился за составление материала, параллельно изучал то, что буду рассказывать и готовился к потенциальным вопросам от студентов. Я боялся, что «сяду в лужу», если не смогу на них ответить, поэтому старался досконально изучить всё по теме, чтобы показать, как с этим работать. Это было даже более нервно, чем вести собеседование, но зато очень сильно прокачало мои знания по Java. Некоторые вещи я до сих пор помню, хотя не писал на ней с момента прихода в Авито.
Совместное обсуждение
На мой взгляд, это самое интересное. Все способы выше хороши по-своему, но сейчас они для меня работают неэффективно. Университет и рабочие задачи есть, но этого мало. Статьи я читаю, но редко. Собеседованиям я обучаюсь, но они нерегулярные, потому что всё ограничено количеством вакансий и пулом тех, кто их может вести. Лекции давно не читал. Иногда пишу статьи, но они больше ретроспективные, поэтому обучаться на них не получается. Поэтому я начал думать, как мне добиться своей цели.
Главное, что я понял: в компании есть люди, которые лучше меня разбираются в технологиях и готовы о них с кем-то разговаривать. Я решил, что будет хорошо собрать сообщество фронтенд-разработчиков внутри компании, чтобы общаться на темы, связанные с фронтендом. А мысль о том, что «в обсуждении рождается истина» только сильнее подкрепила мою веру.
В результате я организовал внутри Авито «Фронтенд-дайджест встречи», чтобы обсуждать разные темы, от «какой фреймворк лучше», до «как правильно написать компонентный тест». Изначально я решил обкатать идею на небольшой группе фронтов внутри нашего юнита. Мы проводили небольшие доклады-пятиминутки о различных подходах, библиотеки, фреймворки. Разработчики делились инструментами, о которых они знали, но могли не знать другие. Но к этим встречам надо было готовиться, а это отнимало время, которое можно тратить на фичи. Так мы жили полгода.
Потом я попробовал увеличить аудиторию и расширить встречу на всех фротендеров компании. Внутри юнита мы все знали друг друга и были готовы активно общаться друг с другом, но на всех этот трюк не сработал. Кому-то не хотелось готовиться, кто-то стеснялся общаться, поэтому такой формат не зашёл.
Я решил попробовать формат холивара, когда основная суть встречи — это поспорить на определённую тему и сделать выводы. Активных участников стало больше, но без фиксации результатов всё быстро забывалось. Поэтому сейчас у нас есть отдельная доска в Miro — в ней мы фиксируем все основные мысли, к которым пришли в ходе обсуждения.
К плюсам этого подхода я бы отнёс то, что за время обсуждения появляется много интересных и полезных мыслей. Некоторые из которых оказываются новыми для всех участников и в итоге каждый уйдёт с чем-то полезным для себя. Участников много, все активно накидывают инструменты, которые подходят для выполнения разных задач, — мы их фиксируем и возвращаемся к ним позже. Так я узнал о большом количестве новых библиотек.
Минус в том, что к такой встрече надо готовиться, и в первую очередь мне — как ведущему. Тем более из-за того, что я взял на себя роль фасилитатора и ведущего, мне не всегда удаётся поучаствовать в обсуждении. Одно из правил хорошего фасилитатора — быть несколько вне дискуссии и просто следить за тем, как она идёт. Это нужно, чтобы давать слово другим, а не только говорить самому.
И всё равно я считаю, что встречи полезны для меня и выполняют задачу, которую я перед ними ставил. А обратная связь от ребят, которые говорят, что им нравится, вдохновляет меня и дальше их вести.
Выводы
-
Если появляются обязательные вещи, процессы, мероприятия, — попробуйте извлечь из них максимум. Можно просто их сделать и забыть, но раз уж тратите на них время — тратьте его с пользой.
-
Если вы думаете, что «всё знаете» и новому вас уже не научить, то попробуйте другие активности: провести собеседование, подготовиться к лекции или докладу. Так вы откроете для себя области, о которых даже не задумывались, но которые западают и их необходимо подтянуть.
-
Понимаете, что чего-то не знаете; осознаёте, как именно этому научиться, но не хватает мотивации, отсутствует мотивация «к»? Попробуйте сами себе придумать ограничения — мотивацию «от»: те же лекции или дайджест-встречи. Вариант может показаться спорным, так как мотивация «от» в какой-то момент может перестать работать. Но здесь важное — начать, выработать привычку заниматься, чтобы потом начала работать мотивация «к».
-
Если ни один из способов не приносит вам эффективности, пробуйте экспериментировать. Вы обязательно найдёте то, что больше всего вам подходит. Самое главное — не останавливаться и не опускать руки.
Вот такая получилась статья. В ней почти нет технических деталей, но я надеюсь, что на своем примере мне удалось показать, что самообразовываться можно разными способами. Главное — желание.
Какие способы вы нашли эффективными для себя? Делитесь ими в комментариях — возможно, именно ваш вариант обучения поможет кому-то в будущем.
Предыдущая статья: Микрофронтенды в SSR: опыт Авито
ссылка на оригинал статьи https://habr.com/ru/articles/774696/
Добавить комментарий