Здравствуйте уважаемые читатели и участники Hexlet. Когда я познакомился с этим ресурсом, и начать свое обучение, я точно знал, что напишу в этот раздел и свою историю. Но не думал, что это будет так рано.
- Введение
- Багаж, с которым пришел на Hexlet
- Про обучение на Hexlet
- Небольшой опыт и мысли про работу
- Подарок на день рождения, и новогодний оффер.
- Пообщались вживую
- Новогодний оффер
- Что в итоге и пара советов
Введение
Меня зовут Александр, уже несколько дней мне 32 года, и да, я был знаком с IT ранее. В этом разделе я предлагаю вам ознакомиться с фундаментом, который был у меня до знакомства с Hexlet.
Итак, 11 классов школы, много курсов из детских компьютерных кружков, высшее образование по специальности «Прикладная информатика в информационной сфере».
Все мы в детстве хотим кем-то стать. Ну или, как минимум, нам говорят про то, что это желание было у всех окружающих нас людей. Я всегда знал что хочу быть хакером. Не особо понимал, что именно под этим подразумевается, но сильно фанател от одноименного фильма, и самой идеи повелевать компьютером.
По информатике всегда был круглым отличником, и с удовольствием впитывал дополнительные знания, которые мог найти - курсы и так далее (читайте выше). На этой же волне у меня не было мук выбора касательно высшего образования - любая IT-специальность. И вот через 6 лет я специалист.
Заканчивал обучение на вечернем отделении, что позволило мне к моменту получения диплома иметь некоторый реальный опыт работы.
И здесь я сильно дал маху, о чем жалею до сих пор.
Первая работа, как и несколько последующих, были связаны с системным администрированием и вычислительными сетями. На первое место попал благодаря родителям, на остальные - потому что уже имел опыт и специальность. В итоге через 2.5 года я средненький системный администратор с опытом проектирования и монтажа вычислительных сетей. Но полный ноль в программировании.
Ну как полный. На детских курсах я где-то успел пощупать C и Delphi, а в институте были жутко скучные лекции по Turbo Pascal. Логическое и алгоритмическое мышление было, но фундаментальных и полезных знаний не было. Здесь я сильно завидую своим коллегам по цеху, у которых в институте хорошо преподавали азы Computer Science и программирования. В моем учебном заведении этому было уделено крайне мало внимания.
В итоге в 22 года, устав от однообразия своей работы и ужасно маленькой зарплаты, я, как и многие из моего поколения, решил поверить в идею, что все реально, возможности нас окружают и весь мир у наших ног. Короче говоря, пошел заниматься предпринимательством.
Это был достаточно долгий и интересный путь. Но надо признаться, особо крупных и успешных проектов мне так и не удалось реализовать. Но я всегда частично или полностью был связан с IT. В основном это заключалось в создании и продвижении сайта(ов) для нового направления. Сайт по доставке еды, интернет магазин пиломатериалов, лендинг про продаже товаров из Китая, и десятки других. На этом этапе я достаточно неплохо овладеваю HTML/CSS, и всегда чувствую нехватку знаний по программированию и конкретным языкам.
Все это время я не оставлял попытки и по крупицам пытался что-то освоить. Знал, что в итоге я все таки стану разработчиком.
Багаж, с которым пришел на Hexlet
По технологиям уже было упомянуто выше. HTML/CSS, WordPress и большой опыт в SEO. Плюс парочка маленьких проектов, которые дали возможность учиться и не отвлекаться на работу.
Касательно ожиданий от учебы, и кем хотел бы стать. На старте мне сложно было понять, какие именно языки и технологии я хочу знать. Желание было стать крутым программистом, в общем смысле этого слова.
В запасе было достаточно большое количество идей, которые хотелось бы самостоятельно реализовать. Разного объема IT-стартапы. Именно реализовать самому - вот такой уровень я хотел. А как это делать, что использовать — понимания не было.
В начале этого года наткнулся в социальных сетях на одну маленькую школу по программированию. Человек с большим стажем в этой сфере для души учит людей программированию. С самых основ и до максимального результата, делая упор на академический подход. К слову сказать, с первого раза я не смог пройти к нему отбор, чем был сильно расстроен. В итоге он отправил меня на Hexlet, сказав, что это хорошие курсы, и сначала надо получить там базу.
Так я оказался здесь.
Про обучение на Hexlet
Нужно отметить, что в плане учебы я тот еще зад..от. Меня отправили сюда пройти курс по Python. Но когда я посмотрел и поближе познакомился с площадкой — решил, что останусь здесь надолго. Первым желанием было стать первым в местном рейтинге. А что для этого нужно? О да, пройти все с нуля и до максимума.
Так я начал с повторения HTML и CSS, сначала на Code Basics, а затем здесь, в профессии «Верстальщик». Успешно прошёл все курсы и выполнил первый проект.
Впечатления от этого этапа были двойственные. Я молодец и постоянный рефакторинг бесит )))
Но наверное так и нужно на этапе выполнения проектов — по десять раз перепроверять и исправлять, до каждой мелочи. На то они и проекты.
Следующий этап был мучительный. Я написал огромный пост о себе и о своих хотелках в поддержку Hexlet. Посыл был такой — я хочу дорасти до разработчика вот таких проектов, но как их делать, и что использовать — не знаю. Посоветуйте и направьте в нужную профессию. Так я начал качать JS фронт.
Несколько первых курсов прошел по подписке, а затем появилась классная акция — занятия с наставником по цене проекта. Я подумал, что выполнять в месяц по одному проекту вполне по силам, а значит по деньгам, наставничество просто будет идти в подарок.
Чтобы вы понимали, я рассчитывал пройти специальность за 4 месяца по цене 4 проектов. Немного переоценил — получилось за 6. И пока не выполнен 4 проект. Но все равно считаю достаточно быстро.
Что можно сказать про само обучение? На самом деле, здесь очень интересно. Я наконец-то начал понимать хотя бы в общих чертах, как проектировать архитектуру веб-приложения. И поверьте, это кардинально отличалось от того, чтобы было в моей голове до этого.
Как и ребята их тех историй успеха, которые я разумеется читал, я застревал на некоторых заданиях по несколько дней. И испытывал эмоциональный подъем, когда удавалось их решить.
К чему все это привело в итоге, будет в следующем разделе.
Читайте также: Как притвориться мидлом и устроиться на первую работу
Небольшой опыт и мысли про работу
Изначально я не планировал ходить на собеседования, переезжать в офис и так далее. Пока у меня была возможность и средства на существование, я хотел продолжать заниматься своими проектами и учиться. Было понимание, что для роста мне придется поработать в команде. Я видел себе это таким образом - что работа сама меня найдет.
Планировал накапливать опыт и портфолио, и плавно добавлять все это в резюме. Решил - если интересное предложение появится, буду думать. А пока учеба, проекты и так далее.
Кстати, для получения опыта даже успел поработать на фрилансе — планировал указывать свой профиль в графе «Опыт работы». Делал правки на сайтах, исправлял верстку, программировал калькуляторы. Даже получил немного денег ) Но если честно, русскоязычный фриланс — это дно. Оплата минимальная, заказчики странные и все в таком духе.
В начале декабря появилось свободное время, и я решил собрать всю накопленную информацию воедино, сформировав свое резюме. Опубликовал его на известном крупном ресурсе. Честно указал, что официально работал давно по смежной специальности. А последний год учусь веб-разработке.
Подарок на день рождения, и новогодний оффер.
Ради интереса, отослал пару откликов с готовым резюме. Думал в таком ключе — если ответят, попробую в качестве опыта пройти собеседование, что получше узнать, какие технологии и навыки требуют от специалистов. Чтобы скорректировать свое обучение.
Пришел ответ от компании, которая искала Junior JavaScript-разработчика, с предложением выполнить тестовое задание. Отличный вариант проверить, чему успел научиться.
Необходимо было создать SPA. С сервера нужно было получить массив пользователей, и вывести их определенные критерии в табличном виде. Реализовать форму поиска для фильтрации пользователей по имени. Сделать на чистом JS, реализовать декоратор debounce, все оформить и выложить на GitHub. На все про все давалось 2 недели.
После первого прочтения сразу решил — буду получать данные через XHR запрос, сохранять ответ в стейт. Затем выводить этот массив в виде таблицы. После этого, по условиям фильтра, менять итоговый массив и обновлять таблицу с пользователями.
Из всего задания я не знал, что такое декораторы. Поэтому решил сделать ставку на скорость. HR прислал мне задание днем — в этот же день, ближе к ночи отправил решение. Указал, что не знаком с декораторами, но раз времени на задание было много, попробую изучить эту тему, и прислать дополненный вариант.
Утром решил посмотреть, что такое декораторы. Оказалось, тема не самая сложная. Функции обертки, которые изменяют поведение исходной функции.
Наш декоратор нужен был для того, чтобы не выполнять перерисовку всей страницы, на каждый введенный символ в строку фильтрации. Логика простая — сделать небольшую паузу после веденного символа. Если не последует следующий символ, запустить перерисовку. В противном случае ждать следующий символ.
Если человек набирает строку, клавиши нажимаются быстро. После последнего веденного символа идет небольшая пауза. И поскольку дальше ввод не продолжается, страница перерисовывается. Такой механизм позволяет экономить ресурсы и не запускать лишние перерисовки.
Сказано — сделано. Переписал приложение с декоратором. Пока читал про него, натолкнулся на интересное решение — не перерисовывать всю таблицу каждый раз, а фильтровать через CSS стили. Идея в том, чтобы один раз сформировать и вывести таблицу с пользователями, а затем фильтровать ее и скрывать поля, которые не подходят через display: none;
В первой версии моего приложения массив с пользователями фильтровался и каждый раз очищался DOM, формировалась и выводилась новая HTML-таблица. Довольно затратная операция.
Во второй версии я добавил декоратор и фильтрацию с помощью стилей, сведя перерисовки страницы к минимуму. Эту версию и отправил в дополнение. В итоге за день выполнил тестовое.
На следующий день пришло приглашение на собеседование.
Если кому-то интересно, приложение лежит у меня на GitHub. Найти не составит труда. Надеюсь, тот факт, что репозиторий открыт для просмотра, не нарушит условия о неразглашении.
Читайте также: Как устроен функциональный диалект Лиспа Clojure и почему использующие его программисты восхищаются им
Пообщались вживую
Мы созвонились в Zoom. Был ряд технических вопросов: чем пользовался, с какими технологиями знаком. Вопросы по DOM, синтаксис и технические моменты JS. Быстро на все ответил — хватило знаний, которые почерпнул на курсах Hexlet.
Потом мы поговорили про компанию. Чем занимаются, какие задачи решают. Я интересовался про рабочий процесс, распределение задач и технологический стек.
Перед собеседованием у меня было стойкое ощущение, что меня пригласят на работу. Весь разговор занял 30 минут. После него мне почему-то показалось, что как-то быстро все прошло. Я подумал, что это будет означать отказ.
Новогодний оффер
К моему удивлению, через 2 часа мне прислали оффер. Я и первый раз понял, что означает это модное слово. Как упоминал ранее, последний раз я работал официально 10 лет назад. Все условия труда тогда обговаривались на словах и фиксировались в финальном договоре.
И когда я читал истории других людей, не совсем понимал значение термина "получить оффер".
Как оказалось, это оформленное предложение на фирменном бланке со всеми условиями труда. Оказывается, приятно получать оффер ))
Скажу честно, в резюме я указал сумму, изрядно превышающую среднюю зарплату по нашему региону. И, по ощущениям, излишне оптимистическую для Junior-программиста. К моему удивлению, мне предложили именно заявленный уровень. Плюс отпуск, курсы английского и 50% скидки на спортивные абонементы.
К такому новогоднему подарку я был не сразу готов, и взял пару дней на раздумья.
Что в итоге и пара советов
На самом деле, пришлось испытать изрядный стресс. Последний раз в офисе я был 10 лет назад. И не планировал туда возвращаться. Да, я понимал, что для роста придется работать, но эта перспектива была где-то за горизонтом. И надеялся на удалёнку. А тут через неделю выходить на работу, да еще и в офис. Вот тебе и планы.
Но в итоге я написал о своем положительном решении. Получил список документов для трудоустройства. Теперь осталось дождаться 11 января - с этого дня я буду полноценным инженером программистом ) Хорошо это или плохо, узнаю чуть позже.
Меня закрепили за проектом, где основной стек связан с React. Поэтому, пока все будут на новогодних каникулах, я буду с двойной энергией проходить этот курс здесь на Hexlet.
Что я могу посоветовать тем, кто уже учится или еще выбирает курсы. Здесь действительно круто.
На самом деле, мне есть с чем сравнивать — из всех онлайн курсов, которые я прошел, объективно Hexlet лидирует. Я не говорю что этой информации хватит. Что-то вам придется искать в другом месте: смотреть тематические видео на YouTube, читать книги и так далее. Но учебная инфраструктура, представленная здесь, будет отличным фундаментом, на котором и вокруг которого вы сможете сформировать свой учебный процесс и расти как начинающий специалист.
Пару слов хотел бы добавить лично от себя.
Всем людям, даже напрямую не связанным с IT, я всегда настоятельно рекомендую освоить слепой набор на клавиатуре. Я это сделал много лет назад, и даже боюсь представить, сколько часов сэкономил впоследствии. Цените свое и чужое время — если вы работаете за клавиатурой, навык слепой печати обязателен! Для истинных джедаев порекомендую рассмотреть эргономические клавиатуры. Все отзывы о них правда: неделю привыкаешь через слезы, затем думаешь, как раньше жил без нее. В итоге моя скорость возросла с 250-300, до 280-350 знаков в минуту на обеих раскладках.
Найдите возможность практиковаться. Я использовал фриланс и свои проекты. Знания, оторванные от практики, быстро забудутся и не зафиксируются у вас в голове. Один раз прочитали курс — у вас появится общее представление о технологии или инструменте. Что он существует, для чего-то используется. Когда сами попробуете его в работе два или три раза, у вас что-то останется на подкорке.
В идеале довести владение инструментом или технологией до автоматизма. Это будет не быстро. На первых порах можно ограничиться базовыми технологиями. Если мы говорим про веб-разработку, это HTML/CSS/Bootstrap/Webpack/Git/Photoshop. Я понимаю, что здесь очень много информации, но попробуйте хотя бы заложить фундамент. На автоматизме писать основные теги и стили, использовать сетку Bootstrap, настраивать базовую конфигурацию Webpack, фиксировать изменения, делать push и clone и Git, вырезать графику в Photoshop. По мере роста вы будете знакомиться с другими технологиями, которые будут у вас на проекте, и также научитесь оттачивать свои навыки в работе с ними.
Именно те знания и умения, которые вы используете не задумываясь, и являются вашим основным багажом.
А в Новом году я желаю всем нам доехать с ним до реализации своих мечтаний и желаний.
Спасибо, Hexlet, и с Новым годом!
P.S. С момента старта здесь и до оффера прошло 11 месяцев. Именно на учебу у меня ушло 7 месяцев — с августа по декабрь был перерыв по причине переезда.