DABO CLAVES REGNI CAELORUM - дам ключи от царства небесного
Опять пошла очередная волна, что надо учиться. Постоянно стала попадаться реклама, да и авторы на некоторых Дзен каналах стали публиковать статьи на тему дополнительного образования, хайповых курсов и прочих размышлений об учебе. И мне также предложили принять участие в этой волне, чтобы вероятно поддержать стремление неопределившихся потратить свои сбережения на «себя любимых», через передачу тех самых сбережений в чужие кошельки и наполнения себя полученными взамен ЗНАНИЯМИ.
Ну что ж, надо – так надо.... 🙄
Итак, для чего же люди учатся? Прежде всего их заставляют, как ни странно, но для достаточно большого количества людей, это именно так. Сначала заставляют родители, потом друзья, близкие, окружающие. Потому что наиболее важной составляющей обучения является не просто получение знаний, а социализация – умение находить общий язык с другими людьми. В советские годы был стандарт среднего образования и любой окончивший школу человек понимал такого же человека со средним образованием, вне зависимости от того, учились они в одной школе или в разных концах страны. Далее процесс обучения специализировался за счет получения знаний по определенному направлению, профессии. И если человек хочет себя реализовать в определенной профессии, то ему потребуется освоить терминологию, как минимум, чтобы общаться с коллегами по профессии на понятном друг другу языке. Ведь обычно, когда программисты или медики начинают сыпать своими профессиональными терминами или жаргонизмами, то их мало кто понимает. Так происходит в большинстве профессий. Можно конечно освоить терминологию и смыслы в процессе работы, но продвинуться по карьерной лестнице или достичь высоких признаваемых результатов будет очень сложно, а иногда из-за особенностей законодательства к примеру, и невозможно. Вряд ли разрешат какому-то самоучке делать серьезные хирургические операции, даже если он будет демонстрировать виртуозное препарирование лягушки. Без подтвержденного дипломом образования в эту сферу доступ закрыт.
Но бывают ситуации, когда человек целенаправленно делает выбор в пользу обучения чему-либо. К примеру, он хочет расширить свой кругозор. Хотя по факту объяснения более прозаичные, человек хочет вырваться из ставшей обыденной жизни, внести струю чего-то нового. Встречал много людей, которые проходили языковые курсы китайского, испанского и других языков, при этом не собираясь их использовать, так, для общего развития, или потому что кто-то из друзей/родственников стал ходить на подобные курсы. Это тоже своего рода социализация, попытка провести время с другими людьми с условной пользой для себя.
А вот причина изучения информационных технологий в последнее время достаточно меркантильна, многие считают, что таким образом могут улучшить свое материальное положение, за счет получения профессии и работы с достаточно высоким уровнем дохода. Но это временное явление. Точно также в разные периоды последних десятилетий люди стремились быть таможенниками, предпринимателями/бизнесменами, экономистами, юристами и пр. – теми, где в текущем временном периоде можно было получать хороший доход, превышающий средний по экономике.
Но есть в ИТ еще одна особенность, высокая скорость изменений. Постоянно появляются новые технологии, новые инструменты (программы, сервисы и пр.), новые версии уже используемых инструментов, которые могут существенно отличаться от предыдущих. И когда человек уже работает в ИТ, то необходимо как минимум отслеживать происходящие изменения. Появление критических изменений для работы может потребовать дополнительного обучения, и многие работодатели поддерживают стремление своих работников получать дополнительные знания и даже готовы оплачивать внешние курсы, либо создают в своих структурах специальные тренинговые или обучающие центры. В этих ситуациях все понятно, обучение происходит по необходимости связанной с выполнением работы. Другое дело, когда человек самостоятельно расширяет круг своих познаний, скажем так, на перспективу, посчитав какую-то технологию или направление перспективными для себя. И тут главное не ошибиться, чтобы не получить невостребованный в будущем багаж, который еще и получен за определенную и немаленькую плату на каких-то курсах.
Сам я проводил эксперимент, чтобы понять, насколько востребованы мои текущие получаемые знания и куда их стоило бы расширить. Решил оценить перспективные и востребованные пути расширения своих знаний. Помониторил профильные вакансии, в которых присутствовали базовые технологии, которыми владею, но в этих вакансиях также выделены дополнительные технологии, которые являются существенными для кандидатов, и они в моем багаже опыта отсутствуют. Так как мой стек технологий состоит из PHP, JavaScript, MySQL, не говоря уже о HTML и CSS, это как-то само собой разумеющееся, и в вакансиях уже редко стали их упоминать, то меня интересовали прежде всего технологии расширяющие мои познания.
В некоторых вакансиях помимо PHP требовались знания других языков: Go, Python. Но это скорее попытка замены, а не расширение технологии (мое личное мнение, некоторые программисты могут видеть это по другому). Также помимо знания языка PHP требовалось знание фреймворков или CMS. Про CMS типа WordPress разговор особый, потому что некоторые мои клиенты на фрилансе просят убрать ее и сделать сайт более «удобным» в обслуживании и поддержке. Да и уязвимости в WordPress проявляются с завидной периодичностью, раньше раз в полгода-год, сейчас реже, но тем не менее надо за этим следить и реагировать. Другие CMS стали достаточно редкой историей и появляются не более чем в 2-3% профильных вакансий. Поэтому изучение CMS про запас отметаем, пока не появится конкретная работа или проект, где разбираться и изучать можно за хоть какую-то оплату.
Другое дело фреймворки, почти каждая первая/вторая вакансия в виде требования или пожелания кричит о необходимости знания современного фреймворка. На текущий момент «современными» обозначают Laravel, Symfony, Yii2, Bitrix. Можно конечно порассуждать о современности некоторых из них, целесообразности применения в конкретном проекте, но не это главное – если требование в вакансии есть, то формально HR будут подбирать кандидатов именно с опытом работы с фреймворком, а не без такового.
Сделав небольшой обзор для себя по этим фреймворкам (о некоторых я уже писал ранее, например здесь – Битрикс), я остановился на Laravel, т.к. приблизительно треть вакансий содержала упоминание о нем. Приступил к изучению теории, нашел информацию в Интернете, отсеял устаревшую и сложную для восприятия, некоторые ресурсы описывали уже не актуальные версии фреймворка, на момент моего изучения вышла 8-ая версия, которая существенно отличалась от предыдущих. Прикинув, что изучение может занять месяц-два, решил не откладывая в долгий ящик создать резюме с описаниям, что владею Laravel на уровне Junior. Буду ходить на собеседования, пойму практические требования, на которые стоит обратить внимание при более глубоком изучении. Глядишь и через пару месяцев что-то найду. Также была надежда, что раз в таком большом количестве вакансий этот фреймворк обозначен, то и предложения от работодателей будут приходить в пассивном режиме, без отправки, а только за счет размещения на работном сайте.
Что из этого получилось – на сайте объявлений (не работном) удалось зацепить ребят, которые планировали создать Интернет-магазин на Laravel, но после моей установки фреймворка на хостинг, они сослались на текущую проблему с финансами и пропали.
На работном же сайте, я фиксировал только редкие просмотры резюме 1-2 раза в месяц. Причем зачастую просматривали крупные кадровые агентства, которые собирают информацию на работных сайтах с определенной периодичность, вероятно для наполнения своей внутренней базы.
Через несколько недель изучения я для себя понял, что Laravel – это один из хайповых инструментов, которые втюхивают из коробки, настраивают в пределах описанного в мануалах, и за внедрение получают вполне конкретные и не малые деньги, а потом сливаются эти опытные внедренцы, либо ищут «осликов», которые будут потом тащить и дорабатывать то, что невозможно настроить из коробки.
К тому же, вывел для себя еще одну особенность этого фреймворка (возможно, что аналогично устроены и другие), в каждой последующей версии существенно меняются подходы и способы реализации доработок некоторого функционала. Поэтому невозможно изучить этот фреймворк впрок, в следующей версии схема обработки данных может быть существенно изменена, а предыдущая объявлена устаревшей или вообще закрыта. И просматривая текущие вакансии, я обнаруживаю теперь требование в знаниях конкретной версии Laravel, сейчас все чаще 9-10.
Получается, что простое, теоретическое изучение никак не поможет, требуется знание конкретного стека в конкретной компании. Предугадать какой стек в какой компании внедряется и где потребуется соответствующий специалист – это как рулетка, хорошо еще что не «русская рулетка» 😂😣😱🥴.
У меня также было одно собеседование, на котором руководитель программистов заявил, что для изучения Laravel он на полгода отключился от светской жизни. Просто закрылся у себя в квартире, и занимался изучением Laravel не отвлекаясь ни на что более. Можно пойти конечно и таким путем, но тут вопросы:
- Будет ли востребован именно Laravel у моего будущего работодателя?
- Может пойти к работодателю на стажировку на 2-3 месяца и освоить именно тот стек, который востребован конкретно на рабочем месте?
- Или продолжить играть в угадайку, проходя очередные платные курсы с надеждой, что после них меня точно примут на работу, ведь организаторы же пообещали трудоустройство на многие миллионы сотен тыщ денег? 🤑🧐
Выбор конечно у каждого персональный, как и судьба... 🤭
Для себя же вывел некоторую формулу для обучения:
Обучаться тому, что интересно здесь и сейчас, а не когда-то потом, может быть понадобится;
При возможности обучения бесплатно, за счет открытых ресурсов, всегда начинать с бесплатного обучения. Позволяет определиться, насколько эти знания приемлемы, необходимы, практичны в использовании;
Не верить напрямую тому, что обозначается на разных курсах и работных сайтах, протестировать ситуацию хоть каким-то возможным способом;
Минимизировать применение сложных и промежуточных инструментов, если аналогичного результата можно достичь с помощью простых языковых конструкций (в рамках используемых мной языков). Почему пришел к такому выводу? – это тема на целую статью, которую как-нибудь в будущем обязательно напишу. 🙋♂️
Если у кого-то возникнут сомнения по поводу качества моего мини-эксперимента с резюме Laravel, то добавлю, что аналогичный эксперимент проводил по резюме с Flutter, который изучал приблизительно в течении полугода. Результат был аналогичный, просмотров 1-2-3 в месяц. Вакансии вроде бы есть, но активности от работодателей не видно. Если бы эти вакансии были реальны, то наверное были бы и запросы, и просмотры, и хотя бы контакты с HR.
Также нашел как-то видеоблог одного начинающего программиста, который рассказывал, как он изучал этот самый Flutter и проходил собеседования. Результат оказался приблизительно таким же как и у меня, за исключением того, что он все же прошел пару дистанционных собеседований и безуспешно. Ему пришлось переквалифицироваться в блогера и расширять тематику своего канала.
Вопрос, куда и чему дообучаться мне, в таком случае? И не является ли гонка за компетенциями необходимыми какому-то абстрактному работодателю, дорогой без остановок? 🏃♂️🤦♂️😒