Зачем вообще эта статья, для кого и что дает читателю
Для тех, кто не хочет читать много,
краткий ответ
Для тех, кто только думает о смене профессии или уже в пути.
Моя статья дает мотивации.
Моя статья дает мотивации.
После написания статей о bike (раз, два) меня много спрашивали о том, как я попал в IT.
Мне и самому были очень интересны подобные статьи, когда я учился. Хорошо помню, как они придавали мне мотивации двигаться дальше.
Именно эти причины побудили меня написать данную статью.
Всего лишь год назад я работал в совершенно другой сфере, никак с IT не связанной и лишь мечтал о работе программистом.
И вот сейчас я уже практически middle в компании — резиденте Сколково.
А начиналось все еще немного раньше, примерно в феврале 2018…. Даже, пожалуй, еще раньше, летом 2017.
Об авторе
Но прежде, чем продолжить, хочу кратенько рассказать о себе.
Мне 32 года, есть двое мелких (2 и 4 года) и жена в декрете!
В прошлой жизни я 8 лет работал в продажах, моя работа никогда не была связана с компьютером (кроме базовых штук вроде excel и outlook).
Год назад я еще бегал и даже 2 раза пробежал марафон.
Работал на обычной работе, не хорошей и не плохой.
И в декабре 2018 года я окончательно решил сменить профессию на ту, которая мне нравится — профессию программиста.
Почему программирование?
Тут появляется вопрос — а как именно я узнал, что мне нравится программирование, если никогда этим не занимался?
У меня и самого нет ответа, это скорее цепь случайностей, чем какое -то “со школы нравился комп и ковыряться в нем” и все такое.
На самом деле меня никогда не тянуло “внутрь компьютера”, в нем мне нравилось только играть в игры. Settlers2, Starcraft, Diablo2, Heroes3… ммм… И еще постоянно замечал за собой неодолимую тягу к excel, к упорядочиванию и к математике.
Осень. Coach
Итак, лето 2017 года, я продажник, зависаю на форуме трилайфа (пытался в триатлон), где нахожу парня — начинающего coach, который готов провести coach-сессию за опыт и отзыв. Почему нет? И вот мы на coach-сессии выясняем ответ на мой вопрос. На один вопрос. Кем я хочу быть? Это очень важный вопрос и счастливчик тот, кто нашел на него ответ.
В итоге с помощью правильных вопросов прихожу к выводу — программистом.
И… успешно забиваю на это почти на целый год.
Случайность? Зерно посеяно.
Зима. Наставник
В феврале 2018 я случайно знакомлюсь с Сашей — моим наставником, вспоминаю все свои потаенные профессиональные желания и иду учиться. Анализирую куда пойти и решаю: на фронтенд (а что такое фронтенд?). Почему? Да я и сам не знаю, мне показалось, тут интересно (это оказалось правдой)!
В итоге по его совету начинаю изучать js по всем известному русскоязычному сайту — learn.javascript.
Материала там уйма, но материал суховат. На рекурсии мой пыл окончательно угасает и занятия забрасываются. Кто-то сможет здесь учиться, но я только сейчас добираюсь сюда снова для более широкого и местами глубокого охвата.
Случайность? Земля полита.
О дружбе
Тут надо сделать небольшое лирическое отступление.
У меня есть друг — Ваня. Мы с ним познакомились в организованной мной с еще одним приятелем любительской хоккейной команде. Потом как-то сблизились на — наверное — похожих взглядах на некоторые аспекты жизни и совместной постоянной дороге на работу.
Потом я ушел из хоккея и начал заниматься бегом, а он все смеялся надо мной. Над тем, как я купил пульсометр и все время замерял пульс. Но в итоге он — поглядев на меня — пришел в бег (и даже купил пульсометр). Далее мы вместе пробежали полумарафон, потом и марафон.
Во время подготовки к этим забегам естественным образом меняется жизненный ритм и вообще жизненная позиция. Если курил — бросаешь. Если пил — тоже. Если ел дрянь — тоже бросаешь. Плюс постоянные тренировки и цель — учат тебя не только размышлять, теоритезировать и планировать планы, но идти к ним и достигать их, включая преодоления препятствий.
В общем, мы с ним вместе прошли весь этот цикл перерождения тела и духа, притом он ушел даже дальше меня.
Случайность? Земля удобрена.
Весна.Курсы!
И вот наступает конец осени 2018 года.
Примерно в ноябре-декабре Ваня рассказал мне про курсы. Даже не курсы, а Курсы — Hexlet! Он и сам дозрел до смены профессии с экономической на айти и стал заниматься. Понравилось, поделился со мной. Курсы сыграли важнейшую роль в моем становлении как инженера, а не эникейщика. Поэтому написав о них здесь, на Хабре, хочу отдать им — и конкретно Кириллу — дань уважения и поблагодарить.
Итак, декабрь, я стартую свое обучение на курсах.
Очень нравится, материал доступный, но в то же время сложный.
Приходится много думать самому и искать решение проблем самостоятельно, что, забегая вперед, скажу, мне очень пригодилось уже на работе.
Случайность? Первые ростки.
Бывало трудно
Учусь не отступать перед сложностями. Тут уже есть некий опыт при подготовке к марафону, который помогает.
Учусь продолжать даже в сложные моменты.
А они бывали. Критическими были 2 точки. Первая на 3 проекте, когда я полностью переписывал проект 2 раза с нуля. Стирал все и начинал заново. Руки опустились очень низко, но силы продолжить нашлись (спасибо тебе, бег!). Это примерно как на 37 км марафона поймать стену, но не перейти на шаг. Кирилла я тогда возненавидел. Но потом отпустило.
И второй момент, когда для того, чтобы идти дальше, мне пришлось вернуться на 2 курса назад, повторить эти 2 курса и повторить еще один более старый. Данная операция заняла у меня 2 недели. И все для того, чтобы решить одну задачу, которую никак не мог решить.
Февраль 2019. Я — как продажник — пытаюсь хакнуть систему и перескочить в программисты на развитых софт и не очень пока хард скиллах. Не получается, но получаю первый опыт собеседований.
Продолжаю усиленно грызть гранит науки. Усиленно, это по 2-3 часа каждый рабочий день и больше в выхи. Это помимо основной работы и семейно — отцовских обязанностей.
На каждый проект (длится неделю) трачу по 40 часов и более за эту неделю.
Наступает апрель. Курсы по js пройдены, впереди react и последний проект.
Опять волна собеседований, опять отказы, но уже хотя бы понимаю, что мне говорят и могу отвечать.
Не унываю, тем более, что мой дружбан — хоккеист — марафонец в апреле устраивается работать в отличную компанию! В тот период безумно радуюсь за него и это сильно мотивирует продолжать, хотя не скажу, что как-то был демотивирован. Мне явно нравилось то, чем занимаюсь и хотелось выучить все-все по теме, до чего дотянутся руки (сейчас это жжение только усилилось!)
Май. Прохожу последние курсы и неожиданно быстро и легко пишу последний проект, курсы окончены. Я более-менее секу в js react (фактически хороший фундамент и неплохо шарю).
Лето! Собеседования.
Активизируюсь в плане собеседований.
Тут стоит сделать еще одно лирическое отступление.
Я продажник с большим опытом, у меня есть опыт общения с людьми, я не боюсь звонить незнакомому человеку и что-то у него узнавать. Я боюсь выступать перед людьми, но одновременно это мне нравится.
Случайность? Грядка прополота.
О подходе
Мой опыт говорит о том, что всем нравится индивидуальный подход.
Поэтому я беру поиски компании в свои руки.
Делаю выборку компаний, которые мне нравятся. Боюсь, но включаю сюда и те компании, в которые — судя по требованиям — не прохожу.
Пишу в каждую сопроводительное письмо, где расписываю — судя по требованиям —
Чем я могу быть им полезен, а что я пока не знаю, но выучу и узнаю.
В итоге мне дают пару тестовых заданий и пару приглашений на собеседования.
Собеседования в целом проходят очень позитивно, это уже технические собеседования. Беседуем на равных с техническими специалистами компаний (не в плане знаний, а в плане общечеловеческих взаимоотношений). Мне дают обратную связь, рекомендуют что-то подтянуть.
Ремарка будущим джунам
Я знаю, как интересно почитать будущим junior о составе собеседования, но и сказать-то особо нечего. Люди в основном смотрят на общую адекватность + как-то пытаются оценить потенциал. По крайней мере адекватные люди. К тем, кто пытается как-то иначе — и работать идти не стоит. Именно так я решил и заранее “запрограммировал” себя на то, что достоин хорошего места. А раз так, то нет никакого смысла идти лишь бы куда, лишь бы взяли.
Это помогло мне вести диалог с работодателем на равных, тем самым давая понять, что как они выбирают меня, так и я выбираю их. Это важно — снять лишние барьеры в голове. Что касается технических моментов, то учите базовые вещи (рекурсия, замыкания, лексическое окружение и так далее), язык и гуглите о прохождении собеседований. Ответственно подойдите к этому.
Прохождение собеседований — это такой же навык и его можно отработать! Так же хочу отметить, что запрограммировать себя в голове царем без реальных на то оснований — затея бесполезная и опасная.
Тестовые задания
Из интересного — в ВТБ мне дали тестовое задание. Нужно на карте отрисовать 100 маркеров в рандомных местах. Хорошо, если взаимодействовать с сервером и отлично, если на суше.
Задание пришлось мне по вкусу, в итоге сделал 2 репозитория на гите. В первом просто запрашивал у сторонних апи нужные данные, а на втором прикрутил свой сервер и простенькое “кэширование” результатов.
Я спросил себя: как определить сушу, чем она характерна? Тем, что, например, все города на суше! Значит мне нужно ставить маркеры на рандомных городах. Еще приятель подкинул мысль, что вся суша выше нуля, но это мне показалось сложнее в реализации.
В итоге карта у меня гугл, города я запрашивал во вконтакте (для этого сначала приходилось запрашивать страны), потом города уходили на геокодирование в яндекс, откуда возвращались координаты.
Координаты складывались в массив на сервере. Когда на мое приложение (задеплоено на Хероку, может стартовать 30 секунд из-за особенностей этого бесплатного хостинга) заходил новый юзер, добавлялись новые координаты (вк-вк-яндекс-моя карта гугла).
Когда количество координат достигает определенного количества, при заходе каждого нового юзера уходит только 1 запрос, который добавляет только еще одну пачку координат. Правда бд тут нет и когда сервер Хероку засыпает (полчаса без посещений), а потом просыпается, то все сначала. Потом прикрутил и карту яндекса и сделал простенький переключатель в фирменных цветах.
Столкнулся с проблемой cors, решил ее через сервис, который позволяет это обходить, но сильно ограничивает количество запросов.
В общем нравилось мне это.
Правда к стыду данного сотрудника ВТБ стоит отметить, что он куда-то совершенно слился и не дал мне обратной связи.
Вот первый вариант — без сервера.
А вот второй вариант — с сервером.
После долгого простоя стартуют 30 с.
Работа!
Итак, конец мая. Компания из Сколково. Их требования явно выше моих компетенций. Боюсь, но все же кидаю резюме, очень хотел сюда устроится.
Они отвечают, дают несложное тестовое: cделать простенькую страничку с пагинацией, фильтром и простеньким сервером. Есть небольшое количество данных, необходимо реализовать работу странички, взаимодействие с сервером по стандартам REST и все такое.
Верстки особо не требуется, скорее понимание REST, что такое json, клиент-серверное взаимодействие и логика на js.
В общем делаю, отправляю. Им нравится, зовут на собес.
Прихожу, беседуем с Катей из HR, моим будущим тимлидом Сашей и старшим коллегой Сергеем. В основном уже не технические вопросы, скорее как раз на адекватность и мои амбиции. Они смотрят, я ли тот человек, кто решил их тестовое.
Уезжаю от них в гнетущем настроении. Мне явно понравилось, но по требованиям явно не дотягиваю.
Приезжаю домой, иду в магазин и там меня настигает звонок с оффером! От них, от тех, куда я так хотел попасть! Они согласовали мои условия!
Ощущения — не передать словами!
На работе
Стоит отметить, что взяв меня — зеленого джуна — компания, конечно, рисковала.
Но в итоге за 3 месяца испытательного срока я сумел проявить себя, проявить инициативу и стать самостоятельным работникам.
Сам себя не похвалишь - никто не похвалит!
По собственной инициативе приезжаю на работу на час-полтора раньше (3-4 дня из 5).
В это время никого нет и я спокойно учусь.
За первые недели 2 после настройки окружения освоил angularjs и активно влился в проект.
Далее сразу по собственной инициативе привнес js es6 и выше в наш проект (раньше не было babel и коллеги не могли использовать новый синтаксис).
По собственной инициативе настроил сборку на webpack и довел ее до последней версии. Ранее у нас просто bat файл собирал.
По собственной инициативе полностью переделал интеграцию нашего проекта с другим нашим подпроектом. На нашем сайте используется карта — это тоже подпроект. И раньше она загружалась каждый раз по новой при переходе на другую страницу (а это более 4 мб!). Я сделал единую карту на весь проект и это только 1 загрузка! Ну и по мелочи добавил.
Добавил на проект куки, потом заменил на свежеизученный localStorage.
Так же по собственной инициативе написал программу, аналог webpack-dev-server, о чем тут есть уже 2 статьи и планируется еще как минимум одна.
В это время никого нет и я спокойно учусь.
За первые недели 2 после настройки окружения освоил angularjs и активно влился в проект.
Далее сразу по собственной инициативе привнес js es6 и выше в наш проект (раньше не было babel и коллеги не могли использовать новый синтаксис).
По собственной инициативе настроил сборку на webpack и довел ее до последней версии. Ранее у нас просто bat файл собирал.
По собственной инициативе полностью переделал интеграцию нашего проекта с другим нашим подпроектом. На нашем сайте используется карта — это тоже подпроект. И раньше она загружалась каждый раз по новой при переходе на другую страницу (а это более 4 мб!). Я сделал единую карту на весь проект и это только 1 загрузка! Ну и по мелочи добавил.
Добавил на проект куки, потом заменил на свежеизученный localStorage.
Так же по собственной инициативе написал программу, аналог webpack-dev-server, о чем тут есть уже 2 статьи и планируется еще как минимум одна.
В срок или быстрее выполнял текущие задачи, а все остальное (кроме карты) делал в свое свободное время, т.к. Мне просто НРАВИТСЯ это! Мне хочется делать наш проект удобнее и лучше!
И я просто кайфую от этого! Так же учился расставлять приоритеты по текущим задачам.
В итоге проходит 3,5 месяца, опять проявляю инициативу и получаю повышение!
Не знаю, junior ли я еще? Наверное уже нет.
Дерево растет!
Заключение
Итак, получается вот такая цепь случайностей.
Много лет работаю в продажах, где учусь не бояться взаимодействовать с окружающими людьми и проявлять инициативу.
Создаю хоккейную команду, где познакомлюсь с приятелем, который потом осуществляет решающий импульс в сторону моего изучения программирования (волшебный пендель).
Начинаю бегать, чтобы сбросить вес, а в итоге учусь составлять и выполнять план, сложности воспринимать как часть плана и преодолевать их, учусь «надо» превращать в действие.
Встречаю coach, с которым прихожу к выводу о работе программистом — первый импульс.
Встречаю наставника, который оказал второй импульс.
(Хронологически волшебный пендель в этом месте).
В заключении хочу сказать, что мне очень нравится работа, нравится ощущения от “командной игры”, нравится коллектив (у нас реально отличные ребята и тимлид). Сразу после устройства на работу я составил себе план саморазвития, разбил его по месяцам. Постоянно самообучаюсь и самосовершенствуюсь. У меня довольно много пробелов в знаниях, но я их вычисляю и устраняю! Чем больше устраняю, тем больше появляется новых.
Также хочу отметить, что даже на самом скучном легаси на angularjs (хотя у нас качественно написано) можно найти очень интересные задачи и постоянно развиваться.
Все дело в том, как посмотреть!
Благодарности
Я считаю, что благодарностей много не бывает и вообще надо почаще их выражать близким людям!
Хочу поблагодарить 3 людей, без которых не было бы моей победы.
Моя жена, Галя. Я знаю, как тебе было тяжело последнее время, я ощущаю твою поддержку. Без тебя бы ничего этого не было. Все это для тебя!
Мой друг, Ваня. Как прекрасно, когда в зрелом возрасте обретаешь то, чего совершенно не ждешь и не особенно-то веришь, что можешь обрести! И обретаешь это не эгоистично, а даже в некоторой степени альтруистично! Уверен, мы с тобой способны очень на многое!
Мой наставник, Саша. Хоть мы ни разу не виделись и у тебя чересчур резкие взгляды, но ты сильная личность и оказал очень большое влияние на меня как программиста, за что я безмерно тебе благодарен. Я бы не смог добиться того, чего добился, если бы не наши разговоры и твое наставничество.
Послесловие
Пытливый читатель может заметить, что еще за чертовщина с временами года в повествовании? Автор, куда ты смотришь?
Для усиления эффекта статьи мне хотелось пройти цикл смен времен года как метафору зарождения новой жизни.
Вот такая получается еще одна история.