Автор в своем посте поднимает очень важный вопрос проблемы современных it курсов и образования в целом. Я сам, своего рода "вайтюн" с годовым стажем, поэтому мне есть что сказать в дополнение, с точки зрения того самого "чела с курсов". В статье будет много бэкграунда, субъективных рассуждений, моего личного опыта и опыта моих друзей, поэтому некоторые тезисы могут показаться вам излишне затянутыми или противоречивыми. В любом случае, мой опыт, возможно, будет полезен тем, кто принял решение сменить сферу деятельности и смотрит в сторону IT, не зная с чего начать. Я расскажу о своем бэкграунде, о выбранном пути обучения, покажу на своем примере, чему реально научиться за год относительно расслабленного самообразования и какова ваша ценность на рынке труда с учетом полученных знаний. Повествование будет без лишних купюр, я не буду скрывать ни деталей своего бекграунда, важных для повествования, ни каких то проблем, с которыми я столкнулся, чтобы у вас сложилась максимально адекватная картина, поэтому попрошу отнестись к повествованию с долей терпения и избежать личной критики, если это возможно. В заключении я попробую порассуждать на тему дальнейшего пути и подвести итоги "а нужно ли оно вообще?". Версии для лл не будет, но я постараюсь уложиться в формат 25 минут.
Бэкграунд или "Почему я решил стать разработчиком".
Окей, на данный момент мне 25 лет. На руках у меня диплом специалиста, выданный мне пол года назад Российской Академией Народного Хозяйства и Государственной Службы (РАНХиГС), по направлению "Таможенные платежи и валютный контроль". Можно долго спорить о ценности тех или иных дипломов, но в данном конкретном случае, охарактеризовать ее можно этим мемом:
В сознании обывателя не редко укореняются определенные предрассудки, касательно некоторых профессий. Вспомните все эти истории про сына маминой подруги, который "отучился на нефтянника". Те же предрассудки были и в моей 18-ти летней голове, когда я поступал на таможенное направление. "Учись на таможенника, говорили они, это престижная работа, говорили они!". Правда в том, что привлекательность той или иной профессии - субъективна. Она зависит от ваших ценностей, взглядов на жизнь и окружения, в котором вы выросли. Еще одна правда, заключается в том, что я выбрал эту специальность во многом потому, что среди вступительных экзаменов не было профильной математики. О том, что у меня с ней нет никаких проблем я узнал только на первом курсе, в школе же, мне на протяжении семи лет внушали, что "в математике я ничтожество". Это в первый раз подчеркивает тот факт, что для достижения любой цели (изучения любого материала), чаще всего, нам не достает лишь упорства.
"Но постой! Какие 18 лет?", спросит внимательный читатель "25 - 18 = 7. Ты учился семь лет?". Да, я потратил семь лет своей жизни на профессию, которой я не собираюсь ее посвещать. Хотя не все так однозначно, но об этом далее. Три года я "отмотал" на очном, после чего, по семейным обстоятельствам, пришлось перевестись на заочное отделение. Нюансы перехода и специфика заочки съели два дополнительных года.
С переходом на заочку, началась так называемая, "взрослая жизнь", я переехал от родителей и устроился на роботу в один из лучших мини-отелей Санкт-Петербурга на должность круглосуточного администратора. По началу, было весело - у меня появился постоянный источник дохода, съемная, но такая "своя" квартира на окраине Питера и достаточно свободного времени, чтобы тратить его на учебу и развлечения. Примерно в этот период моей жизни мое мировосприятие начало меняться. Кратко описать это врятли получится, а демагогии о взрослении тут не место, просто в какой то момент я спросил себя:
И оказалось, что я хотел того же, что и остальные. В первую очередь, заниматься действительно важными делами, приносящими удовольствие, а не продавать свое время на развес по графику 1\3 за 250 р.\час. Во вторых, просто быть счастливым. Не экономить на еде. Не бояться просрочить аренду за следующий месяц. Съездить уже, наконец за границу. (Серьезно, я живу в 40 минутах от этих ваших Европ уже более 19 лет и еще не разу там не побывал.) Купить своему бате плойку, чтобы он вечерами гонял со мной в каловдьютию. Наконец, сделать так, чтобы мама ушла на пенсию не за черту бедности, а на заслуженный отдых. Какие то фискальные желания получились, не находите? Ахах. Я уже упоминал о том, что ценности формируются окружением, в котором ты растешь.
Так продолжалось три года. К концу этого периода, мой лучший друг поступил на "эти ваши it курсы". Я первое время немного подшучивал над ним, ведь это был тот самый человек, который в десятом классе чуть не подрался со мной, пытаясь доказать, что "Беспроводной геймпад на то и беспроводной, что в компьютер ничего вставлять не нужно! Какой еще адаптер? Не понимаю почему оно не работает!". А ведь это именно я "писал" свою первую игру на GM в восьмом классе. Это я, в "додвухфакторную" эпоху воровал аккаунты одноклассников в контакте чрез подменную страницу (да, товарищ майор, в то время, я был глупым, но не подлежащим уголовной ответственности, мои извинения). Это я в соло довел нашу участницу до финала, написав макрос автоголосования на конкурсе красоты в своем городе, когда заметил, что конкуренты из другого университета накручивают голоса. Одним словом, я рос маленьким ламером в окружении компьютеров, и даже пытался что то делать, но никогда не относился к этому серьезно.
Шутки кончились, когда тот самый друг устроился разработчиком в крупную российскую корпорацию. Это не была случайность, везение или какие то связи. Это был результат его упорного труда, ибо он, имея за плечами лишь диплом о во, вайтюнские курсы, несколько месяцев ко и вагон упорства, смог прыгнуть выше головы и обойти больше тысячи участников на одной из it олимпиад. По результатам которой попал во внутреннюю программу подготовки и был отобран на позицию.
В тот период, мой диплом был уже на горизонте, оставалось около полугода до его защиты. Я уволился с работы и собирался возвращаться к родителям, чтобы в спокойной обстановке подготовиться к защите. Тогда мой друг и предложил мне попробовать разработку. Многие подобные истории, наверное, начались с того, что люди далекие от сферы, увидели рекламу в интернете, послушали блогера, подкаст или что то подобное и решили попытать удачу. Возможно, вы сейчас на этом этапе. Я же, в тот момент понял, что другой возможности изменить свою жизнь, у меня может не быть - живой пример успеха, в лице человека, с которым мы знакомы практически с пеленок, сидел прямо передо мной и говорил, что все получится, нужно лишь приложить изрядное количество упорства. Он прав, все получится.
Процесс обучения. О курсах. Что важно иметь в запасе. Без чего будет сложновато.
"Лиха беда - начало" или если вам угодно: "Начало - половина любого дела", цитатка из интернетика, приписываемая то одному то другому мыслителю. Лично я, приписываю ее Йоде из ЗВ, вроде он в каком то из эпизодов ее произнес.
Так и есть, самая хардкорная часть, это выбор того, как именно вы будете учиться. Тут есть масса вариантов - можно записаться на курсы в интернете, получить ДПО, в каком-нибудь вузе или взять все в свои руки и заняться самообразованием. Спойлер, я пошел по пути самурая самообразования, как это делали деды во все времена, но об этом позже. У каждого их этих способов есть преимущества и недостатки.
Курсы хороши тем, что на них присутствует преподавательский состав, который, по хорошему, будет отвечать на ваши вопросы, неинтересно вести лекции и давать\проверять домашку. Плохая новость в том, что не все курсы одинаково хороши. Какие то курсы, дают слишком общую информацию. Какие то - слишком сильно ведут за ручку. Другие - предлагают людям с улицы заниматься откровенной чепухой, мой фаворит на данный момент реклама: "Создай 9 нейросетей за 3 дня!". Я не представляю, чему вы научитесь за три дня (ничему). Если обобщать - опасайтесь курсов, которые сулят золотые горы за короткий срок. Триггер фразами для вас должны стать такие выражения как "Без опыта", "Без обазования", "За один\два\три месяца" и особенно "Гарантия трудоустройства". Вас, конечно, поводят за ручку какое-то время. Вы что-нибудь напишите на питоне\js, возможно, перепишите у ментора какогони-будь телеграм бота. На этом все. Фундаментальных знаний (или хотябы их подобия), вы не получите. Вы не сможете самостоятельно решить поставленную задачу. Неофит должен осознавать, что разработка это не про написание кода, это про образ мышления, про поиск решений. Это нельзя освоить "в кородкие сроки, с гарантией". Еще одна проблема курсов - хреновое менторство. Может так статься, что вашим "наставником" на курсе, окажусь я. Тоесть человек с опытом разработки около года. Почему? Потому что заработная плата преподавателя на курсах не конкурентна, относительно зп разработчика. Количество желающих "зарабатывать 400 тысяч в месяц, сидя на пляже на ГОА", растет с каждым днем, а преподавателей больше не становится. По этой причине, некоторые организации, набирают в преподавательский состав абсолютных рандомов или даже выпускников этих же курсов. На мой взгляд, существует обратная зависимость между размером онлайн школы и качетсвом преподавания в ней. Я не смогу прямо назвать онлайн школы, которые вам лучше обходить стороной, потому что есть риск, что моя телега\гитхаб подвергнется анальной травле, но намекну - это крупный образовательный конгламерат, состоящий из нескольких школ, рекламу которых, вы чаще всего видите в интернете.
Про ДПО мне сказать нечего, но логика подсказывает, что качество преподавания там должно быть на уровне, ибо вам преподают те же университетские препода. К слову, фундаментальные знания проще всего получать именно в таком формате. Условный вышмат, достаточно сложно изучать самостоятельно или нетрадиционными академическими методиками.
Самостоятельное обучение - то, что выбрал я. Важно понимать, что it индустрия постоянно развивается. Несмотря на то, что существуют програмы повышения квалификации, наемные менторы и прочие образовательные услуги для практикующих специалистов, деятельность разработчика сопряжена с постоянным, самостоятельным изучением нового материала. Тоесть профессионалы обучаются самостоятельно. Помимо этого, абсолютное большинство знаменитых разработчиков, о которых вы слышали, являются it энтузиастами, они просто любят кодить и учиться новым штукам. Абсолютно все достижения в этой сфере, были созданы глубоко мотивированными людьми, которые получали удовольствие от того, чем они занимаются. Поэтому так или иначе, вам придется заниматься самостоятельным обучением. Это очень крутой метод начала своего пути в разработку. Преимуществ масса - можно держать удобный темп, занимаясь в удобное время. Можно отвлечься на сторонний проект по интересной теме. Формируются необходимые навыки поиска информации. И еще куча всего. К недостаткам можно отнести зависимость качества обучения, от используемых источников информации, а так-же необходимость бороться с прокрастинацией.
Как уже не раз говорилось выше, для себя я выбрал именно последний вариант. Потому что, откровенно говоря, возможности отдать от 80 до 120 к, учитывая все вышеназванные риски курсов, у меня нет. Но это ведь не значит, что мы не можем проходить эти самые курсы самостоятельно, правда ведь? Правда. Я решил двигаться в сторону бэкенд разработки, возможно потому, что мне всегда нравились дискуссии на тему телекомуникаций, чего стоит забытый богом телетекст - "дальний родственник" интернета. А возможно потому, что мне не хотелось конкурировать с легионами выпускников курсов фронтенда. (Спойлер: позже оказалось, что и на бэкенде, среди джунов конкуренция значительная)
В первую очередь, мне был интересны бэкендерский стек технологий. В качестве первого языка, я, как и многие, выбрал Python. В качестве учебного пособия, которое направит меня по нужному вектору, я выбрал слитый курс Хекслета "Python разработчик 2020". И честное слово, если бы я заплатил за него деньги, я не пожалел бы ни рубля. Если ребята с Хекслета сейчас меня читают, пожалуйста не расстраивайтесь, в качестве оплаты я агитирую всех и каждого изучать пайтон именно у вас. Отвлекся. У некоторых крупных площадок, таких как Яндекс и Хекслет, есть бесплатные вводные курсы, на которых можно +\- познакомиться с подачей информации ну и в целом понять, интересно вам это или нет. После прохождения вводного курса, можно купить доступ к полному или поискать его "бесплатную" версию в интернете. Конкретно мой курс, был рассчитан на восемь месяцев, прошел я его за шесть. Помимо, непосредственно, языка, курс подтолкнул к изучению огромного количества тем: настройка окружения, контроль версий, базовые алгоритмы, сетевое взаимодействие, настройка серверов, бд и много чего еще.
Еще перед стартом, друг говорил, что "Сначала бужет очень хорошо получаться, поймаешь эйфорию от того, какой ты умный. Потом кривая сложности резко пойдет вверх. На этом этапе большинство забивает и отсеивается, но ты продолжай еба#ить". Так оно и произошло. Когда подача материала грамотная, основы ухватываешь очень быстро, но когда переходишь на чуть более advanced level, сталкиваешься с первыми серьезными затыками, где материалов курса уже не достаточно. Например, при изучении Python, таким местом для меня стали аккумуляторы. В такие моменты я советую переключиться на какой то другой источник информации - посмотреть видео на ютубе по теме, пошарить что-нибудь на хабре и т.д. Иными словами: "Продолжай еб#шить". Например сейчас я перешел на Golang и там, таким моментом для меня стали интерфейсы. Очевидно, что при самостоятельном изучении, нет ничего важнее упорства. Я мог бы раскрыть эту тему подробнее, но круче цитаты, сказанной в этой статье: https://habr.com/ru/company/domclick/blog/569062/ , я уже ничего не приведу:
Исключительные слова. Естественно, одного курса не достаточно не только для входа в профессию, но даже для освоения одного языка. Важна самостоятельная регулярная постоянная практика. В перерывах между проектами, я натаскиваю себя задачами на Codewars. LeetCode пока не пробовал, но знакомые говорят, что особых отличий нет. В любом случае, решение задачек на таких сервисах необходимо, для нарабатывания нужных навыков.
Говоря о важных скилах, которые потребуется притащить с собой из внеайтишного прошлого, можно отметить следующее:
Английский язык - те, кто говорят, что можно стать разработчиком, не зная английского, откровенно лгут. Я приведу несколько конкретных примеров, которые доказывают это и покажу подходы, которые придется применять, не зная английского. Во первых, синтаксис. Синтаксис большинства языков программирования, за исключением разве что...
на английском. Если английский на околонулевом уровне, синтаксис придется учить наизусть, как эти проклятые диалоги в школе. Второй пример - документация. Документация, есть суть, инструкции по использованию тех или иных конструкций языка\утилит и прочего. Не имея возможности читать документацию в оригинале, придется пользоваться ограниченным набором переведеных доков на русском или что то городить в переводчиках. В эту же копилку добавляем проблемы, которые будут возникать при написании программ. Большинство этих проблем уже решено, например, на stackoverflow. Разбираться в этом с переводчиками будет достаточно злобно, т.к. они не точно переводят техническую информацию.
Компьютерная грамотность - я думаю тут, комментарии излишни. Важно умение быстро разбираться в приложениях, ориентироваться в разных операционках. Для меня, например, стало сюрпризом то, насколько на самом деле удобно пользоваться командным интерфейсом linux в повседневной жизни.
Умение гуглить - как по мне, один из самых важных навыков. "Даже если ты чего то не знаешь, самое важное знать, как это узнать." Мои извинения за тафтологию. Навык стоит тренировать, только если вы в последние пару лет гуглили что то вроде: "Скачать бесплатно без смс и регистрации" =)
Точные науки- имхо, один из самых спорных вопросов, среди начинающих. На мой взгляд, для старта достаточно школьного курса 11-ти классов. В каких-то моментах возможны пробуксовки, если например, нет понимания, что такое матрицы или, к примеру, при работе с изображениями - могут возникать проблемы из области геометрии. Но опять же, сказанное касается только начального уровня, чем дальше в лес, тем толще теоремы. Со временем станет понятно, какие знания нужно подтянуть.
Результаты через 10 месяцев самостоятельного обучения.
Заголовок звучит слишком пафосно, не правда ли? Итак, прошло 10 месяцев с начала моего пути в разработку. Есть ли мне чем похвастаться? Ну, я попал в 5% лучших, на "отборочнике" контеста, проводимого Ozon Tech в сентябре. Участников было, что-то в районе 2к. Я считаю, это неплохой результат для рандома с улицы. Я никогда не забуду эту задачу про временные интервалы. Видимо, теперь я умею кодить на Python. Контест был достаточно злобным, но это тема для отдельной истории. Как выглядит мой текущий стек? Как то так:
Разумеется, тут перечислены не все скилы, но это именно те вещи, о которых я могу уверенно поддержать разговор с нанимателем. В ближайшее время планирую добавить сюда Golang и его веб фреймворки, как только потыкаю их палкой. Обязательно нужно поработать с каким-нибудь популярным веб сервером, по типу nginx. К слову, интересная штука - парадигмы программирования нескольких языков могут пересекаться, соответственно, если вы умеете уверенно решать задачи на одном языке, решать их на другом, будет уже проще. Написал пару проектов, за которые мне не стыдно, с одним из них можно даже познакомиться в одном из моих постов =) Да, я думаю, стоит избегать дженерик проектов, которые предлагают писать на курсах (все эти клоны телеграма и бложики), а заняться чем-то, что интересно именно вам. Пусть это будет система распознавания лиц с веб интерфейсом, или генератор имен драконов - не важно, главное, чтобы вам было это интересно. Без увлеченности пет проектом, работа над ним быстро превратится в рутину. Ах да, а еще я стал контрибьютором своей любимой игры "Cataclysm Dark Days Ahead". В список моих пулл реквестов входят такие важные багфиксы, как исправление бага с БДСМ костюмом, перемещение кастета профессии "босс мафии", в карман пиджака, а так-же еще не смердженый "mountable hatchet mod" для дробовиков. Отвлекся. "Ну а что там с трудоустройством? Звали ли тебя на собеседования?". Звали. Я решил несколько тестовых, некоторые из них даже проверили. И внезапно, было даже настоящее оффлайн собеседование в компании. Но в целом, о ситуации на рынке труда, с точки зрения джуна (меня), поговорим в следующем разделе.
Востребованы ли джуны?
Имхо, как джун, отвтетственно заявляю, что они востребованы на рынке. Из ~100откликов за 2.5 месяца, мне прислали тестовое около 5 раз. Дважды приглашали на собеседование. На одно я съездил. Звучит как шутка, не правда ли? Вот только я откликался на вакансии, немного выше моего уровня. Тоесть некоторые компании, реально готовы дать возможность проявить себя. Это здорово. А вот войтюны не нужны. Об этом тоже можно сделать вывод из приведенной мной статистики. Мой стек, на данный момент, +\- соответствует стеку любого трейни-выпускника курсов. На мой взгляд, компании намеренно завышают требования отбора из-за всплеска курсов, ибо никто не хочет брать на себя риск, нанимая вчерашних слесарей с таможенниками - даже если они неплохо владеют заявленными компетенциями, это всеравно риск, а риск=расходы. Иными словами, не ждите, что пройдя какой-то курс, или отзанимавшись самостоятельно на протяжении некоторго времени, ваша личка будет ломиться от предложений. Стоит рассчитывать на минимум годовое обучение.
Стоило ли это того?
Перейду к выводу, пока меня окончательно не окрестили душнилой =)
А он следующий: На момент публикации поста, входить в профессию действительно не просто. Easy mode - не существует. Нужно осознавать, что это длительный, даже многолетний процесс самостоятельного обучения. Количество ментальных (да и физических) усилий, которые необходимо приложить, примерно сопоставимо с прилежной учебе в вузе. Однако, это может приносить определенное удовольствие, если вам, так-же как и мне, нравится учиться. В качестве финального совета, хочется отметить важность менторства в процессе обучения. Найдите себе какого-нибудь более опытного товарища, который будет давать вам наставления. Да и в целом, с которым вы сможете обсудить свои успехи и неудачи в процессе. Для меня таким ментором стал мой друг. Я в неоплатном долгу перед ним. "Продолжайте еб#шить", пока однажды не сможете себе сказать:
P.S. Если остались вопросы, которые хотелось бы задать лично, мой телеграм есть в предыдущем посте.