Можно ли стать junior-X’истом за год самообучения? Да. При соблюдении ряда условий. В формате короткого диалога развёрнуто не пояснить, потому все дискуссии сворачивают в болото, а тут получится.


Итак, условия…

В-нулевых, человек ясно понимает цель. А цель звучит так: через [условно] год обучения начать работать junior’ом – читать внимательно. Не стать программистом. Не миллиардером. Не специалистом, тапком шлёпающим сеньоров по лысинам. Цель – пробраться на офисный стул и просидеть там достаточно, чтобы понять, стоило ли того, получается ли. Ну и начать профильное резюме, конечно.

Во-первых, человеку должны быть доступны как техника, так и обучающие материалы. Очевидно, если вы сидите на берегу Енисея, интернета у вас нет, а туалетную бумагу раз в пять лет вертолёт МЧС закидывает, начинающим джавистом вам не быть. Очевидно? Очевидно.

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

В-третьих, усидчивость. Если посмотреть «объективно», программирование и разработка уже с процесса обучения штуки довольно скучные. Да, за ними стоят красивые интересные идеи. Но тот, кто хочет зарабатывать забиванием гвоздей, должен быть достаточно скворечником, чтобы мерно пересчитывать гвозди, раскладывать гвозди, промывать каждый гвоздь, каталогизировать гвозди, укладывать в коробочки гвозди и т.д. И всё это вёдрами. Изо дня в день.

А и всё. Цель. Техника. Время. Усидчивость.


Что человеку не требуется (хоть и будет плюсом)…

В-нулевых, какой-то особенный специальный мозг. Для поставленной цели не нужен такой. Возникает соблазн выделить это требование в обязательные при изучении черепов профессиональных программистов, но речь про junior’ов. После пары знакомых… м… даже не разработчиков… хочется сказать, что мозг для разработки вообще не нужен, но хочется думать, что эти субъекты стоят на краях распределения, а не являются нормой. Потому скажу цинично: да, мозг не мешает, но опыт показывает, что junior’ом может стать едва ли не каждый. Дальнейшая судьба – да, зависит от. Но на старт выходят очень, очень разные люди. Понимаю, звучит слабым мотиватором, а всё же мотиватор: не бойтесь, джуном может стать любое бревно.

Во-первых, профильное образование. Опять же, практика показывает, что для общей разработки оно не требуется. Человек вряд ли будет ракеты строить, но сядет клепать что-то скучное, примитивное, рутину какую-нибудь, будет перекладывать виртуальные яблоки из виртуального ящика на виртуальную витрину. Диплом МГУ для такого не нужен. Это не значит, что в следующие годы жизни человек не доучится до чего-то прикольного, но сейчас не до того.

Во-вторых, продвинутый курс computer science. Ну… Мегатонна сеньоров занята задачами, в которых не требуется помнить, чем FIFO отличается от LIFO. Гигатонна джуниоров занимается задачами проще и легче. Для того, чтобы войти в айти, CS не обязательна. Да, такие знания могут дать выбор шире, сделают полезнее в некоторых задачах, помогут старшим товарищам относиться к человеку серьёзнее. Но обязательными они всё же не являются.

В-третьих, наставник. В 2020 году материала для самообучения столько, что на сто жизней не хватит. У нас культ самообучения. Эпоха самообучения. Эра. Мы теперь [идущая на дно] цивилизация самообучения. Если человек не в силах даже нагуглить вводную статью, не может додуматься взять ключевые слова из курса какого-нибудь вуза, найти через пятых знакомых кого-то, кто за бутылку пива надиктует эти слова… ну, наверное, таким людям всё же полезно заняться чем-нибудь другим.

В-четвёртых, курсы, школы, стажировки. В массе своей это пустая трата времени и отжим бабла у доверчивого населения. В редких случаях (когда этим занимаются крупняки вроде Яндекса или Мейла) дело неплохое, но не очень практичное, если нет цели пойти именно в ШАД, а потом именно в Яндекс / Мейл, да ещё заниматься именно определённой специализацией. Мудрее за это же время научиться говнокодить (пардон) на Python или Java, так раньше масло на хлебе появится.


Много ли надо выучить и узнать? Не-а. Человек ведь не в специальные области на старте пойдёт. И ничего прям специального в домашнем самообучении не узнаешь (уже потому, что многое интересное требует доступа к оборудованию, ресурсам и прочему, отсутствующему в чулане). Соответственно, подготовка джависта, питониста, джавскриптиста, плюсиста, пэхаписта и остальных общих -истов укладывается в следующую схему…

Во-первых, блок самых основ программирования. Современные книги для детей и подростков рулят. Можно брать что-то вроде [Camille McCue. Coding For Kids For Dummies. For Dummies, 2019] или [Bryson Payne. Teach Your Kids to Code. No Starch Press, 2015]. Время: месяц-другой.

Во-вторых, блок базового умения выбранного языка. Берётся что-нибудь из серий «Head First», «For Dummies», «Sams Teach Yourself» и т.п. (или такого же уровня), ну и читается с проработкой. Прям вот годных среди них мало, но тут полезно начать. Освоить утилиты, потыкать IDE, узнать кучу новых слов, попробовать руками код, написать с десяток приветмиров, ну и всё такое. Время: пара месяцев.

В-третьих, блок практики первого проекта. Берётся с потолка идея какого-нибудь приложения, да и пишется. Несколько дикий период, т.к. в основном человек будет натыкаться на постоянное незнание и неумение: базы данных, сетевые протоколы, основы архитектуры, нюансы GUI, многопоточность, i18n, безопасность, тестирование, раскатка и обновление, тра-та-та. Человек либо сдаётся (туда и дорога, ибо даже не цветочки), либо понимает, что надо учиться дальше, но уже шире. Человек собирает начало мозаики – представление о том, что разработка состоит не только из набора кода программы. Время: месяц-другой.

В-четвёртых, блок основ разработки. Проходятся онлайн-курсы, смотрятся ролики на YouTube, читаются статьи и StackOverflow. Потихоньку переписывается и дописывается проект. Самый трудный блок, как мне кажется, т.к. здесь уже начинаются профессиональные знания и безграничное море тем, для каждой из которых можно собрать отдельную библиотеку. Именно в этот период не помешает опытный боец, задача которого отсеять лишнее, вовремя остановить (чтобы не углубляться в ненужное junior’у), направить на важное (очень часто джуны про тестирование вообще ничего не знают). Но можно справиться и без него. Время: пара месяцев.

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

В-шестых, блок доучивания. Разведка покажет, чего человеку не хватает именно в краткосрочной перспективе. Где-то требуются основы баз данных, где-то хотят основы алгоритмов, где-то плюсом умение менять стили в WordPress. К этому моменту человек что-то уже знает и понимает, провёл беглый анализ местного рынка, посоветовался со знакомыми разработчиками (если есть), может сузить цель. Также в этот период хорошо бы повторить и закрепить пройденное ранее. Время: месяц-другой.

В-седьмых, блок стрельбы. Человек ходит по собеседованиям, стажировкам, демонстрирует энтузиазм (нет, джуниора с кислым лицом и «ну я не знаю, хочу ли я стать программистом…» мало кто жаждет видеть за соседним столом), по вечерам рыдает в стакан. Время: месяц.

Время итого: от 8 до 12 месяцев в зависимости от.


Реально? Реально. Нужно ли быть гением? Нет, не нужно. Гарантирует ли эта схема работу? Нет, конечно. Но шансы велики.

Ещё пару лет назад я смеялся над вакансиями «Ведущий разработчик, опыт работы от 2-х лет, зарплата от 250 000 до 300 000 руб. до вычета налогов», а сейчас не смеюсь – стало нормой (и вакансия реальная). Ведущий. От 2-х лет. Зарплата директора завода. Думаете, одна такая? Нет, не одна.

То, что должно утешать и обнадёживать потенциальных джуниоров: массовое программирование давно превратилось в разработку, в установку и смазывание раствором готовых блоков кода. С этим после должной тренировки справляется каждый второй. И этому каждому второму вовсе не обязательно становиться middle, не говоря уж про senior. Junior без головы получает 50К..70К рублей, junior с головой получает 100К..140К (пример). Для сотен тысяч людей это уже неплохая финансовая мечта.


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

Знаю случай, когда уволили вроде бы нормального чувака, но не могущего выразить мысль без мата (TWIMC: нет, не история из лифта). Знаю случай многолетнего неповышения того, кто не умел мыться. Множество случаев, когда на собеседовании были странные люди. Себе они такими не казались, но… Порою достаточно десяток раз перебить собеседующего, чтобы он отказался от мысли продолжать общение. Для вас такое поведение норма (умница, молодец, освободил кому-то более достойному рабочее место), а вот ему нет. И как-то пофиг, что вы зазубрили какой-нибудь API, т.к. на таком уровне знания людей много, проще поискать другого начинающего, но умеющего себя вести, например.

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

Дерзайте. Не догоните, так согреетесь.