Сергей Куликов фронтенд-разработчик

Верстаю и разрабатываю сайты на Drupal. Живу и работаю в Днепропетровске.

Первый год во фронтенде. Итоги

На подходе Новый год — самое время для анализа накопленных за двенадцать месяцев опыта, достижений и набитых шишек. Для такого случая я решил выделить в последние дни декабря несколько часов свободного времени и навести порядок в своих записях. Благо, срочных проектов нет, всё необходимое выполнено и оплачено заказчиками. Можно спокойно пить кофе, просматривать историю коммитов на гитхабе, делать выводы и строить планы.

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

В тот момент я располагал следующим багажом:

  • основы HTML и CSS — ранее сделал пару простых сайтов на NG CMS, код писал во встроенном редакторе шаблонов,
  • базовые навыки табличной и блочной вёрстки — в основном, на основании руководств с htmlbook.ru,
  • основы PHP — синтаксис и минимальный опыт: дописывал плагин фильтра новостей для той же NG CMS,
  • основы SQL — написание простых запросов и основные операции с таблицами, работа в phpMyAdmin,
  • Denwer для локальной разработки — использовался только на старте, затем всё правилось на продакшне,
  • многократный копипаст HTML-кода, прибивание футера к низу страницы и прочие прелести жизни.

В общем, я был новичком, каких множество — но по крайней мере знал, чего хочу, и имел базовые навыки программирования, пусть и на паскале. Кроме того, я всегда любил учиться самостоятельно и умел организовать этот процесс. С самого начала я стал вести конспект в программе myBase Desktop, где структурировал самую важную новую информацию. Там же записывал общие планы и прогресс — краткие тезисы о том, что изучил за месяц.

Январь был посвящен закладыванию основ. Прочитал книгу “Вёрстка веб-страниц” Влада Мержевича, чтобы освежить в памяти знания CSS. Также начал читать “PHP5 в подлиннике” и просмотрел несколько первых видеоуроков специалиста (PHP уровень 1) — благодаря им перешёл с денвера на OpenServer. Затем переключился на изучение Bootstrap 3 по видеоурокам WebMagisters, в качестве практики сделал на бутстрапе свой шаблон для NG CMS.

В феврале я получил первую подработку и возможность учиться под руководством ментора — Николая из веб-студии Para-Diz. Первое задание — страничка и форма с кнопкой, простой AJAX-запрос и инсерт в базу. Пришлось освоить азы Drupal 6, jQuery и Git, познакомиться с Trello и перейти с Notepad++ на Sublime. Дело шло медленно, но наставник проявлял понимание и терпение, за что я ему искренне благодарен. К концу месяца я получил и первый скромный заработок.

Март принёс знакомство с Drupal 7 и несколько новых проектов, один из которых делался с нуля. Запомнившиеся задачи — доработки калькулятора стоимости гаражных ворот, интернационализация модуля для Drupal, обработка данных в JSON. Познакомился с основами парсинга и phpQuery (порт jQuery на PHP). Наставник по-прежнему многое объяснял, учил принципам DRY, аккуратному коду и отслеживанию затраченного времени в Grindstone.

В апреле я продолжил осваивать JavaScript по книге Флэнагана, закрепляя знания на практике — особенно пригодились регулярные выражения. Работал над реализацией фильтров на странице поиска товаров на taobaocn.com.ua — добавил в парсер новые методы, в том числе с использованием API Google Translate. Еще подвернулась подработка по интеграции вёрстки сайта sunnygreenhill.ru в NG CMS, где я применил пару новых для себя решений на Twig.

Май ознаменовался первым выводом денег с webmoney, а также первым знакомством с Sass и вложенными селекторами. Для работы с Sass и Compass по совету ментора поставил Cygwin, после чего долго ломал голову над ошибкой “Loaded to different address”. Ещё разобрался с медиазапросами, ковыряя одну сумбурную чужую вёрстку — в итоге тот проект сорвался, что в конечном счёте и к лучшему: я не успел увязнуть в нём надолго.

Июнь я посвятил работе над сайтом vet-news.ru на NG CMS. Получилось не слишком изящно (я ещё не использовал Sass). Заказчик остался очень доволен, но сайт в итоге отдал на откуп грабберу — печальное вышло зрелище. Так что в моём портфолио этого проекта нет, как и более ранних поделок: предпочитаю не выставлять всё подряд. Также сверстал лендинг для нового проекта barsky.furniture, вёрстку встроил в тему Drupal, созданную на основе фреймворка Omega.

В июле продолжил работать над этим же проектом: сверстал страницу каталога, адаптировал модуль Drupal Commerce для покупки товара в один клик. Много учился: прошел базовые курсы htmlacademy, познакомился с Grunt и Gulp, методологиями БЭМ, SMACSS и MCSS. Разобрался с установкой Ruby под Windows и попрощался с Cygwin. И, наконец, начал делать персональный сайт на NG CMS, используя деплой по FTP c помощью Git.

В августе в основном работал с Drupal Commerce: написал небольшой модуль для покупки товара без регистрации, дорабатывал модуль экспорта товаров в формат YML. В свободное время начал разрабатывать шаблон для новых проектов skystart, где кроме Sass и Compass использовал Grunt и Bower. Также разобрался в синтаксисе markdown, узнал об адаптивных единицах измерения vw и vh, приёмах адаптивной вёрстки таблиц.

Продуктивным выдался сентябрь. Наставник по веб-студии дал мне допуск к выкладке обновлений на рабочий хост, поручил настроить memcached. Затем я пзанимался оптимизацией загрузки страниц сайта средствами Drupal, используя для измерений GTmetrix. Кроме того, сделал для barsky.furniture вёрстку главной страницы и меню навигации, а также шаблон коллекции товаров и страницу Dongwei на его основе.

Первую неделю октября я провёл в отпуске. Но и за оставшиеся три успел хорошо потрудиться. Помимо ещё одного лендинга и разнообразных мелких правок, много времени я посвятил изучению Jekyll и созданию данного сайта, ставшего моим любимым детищем. Попутно отказался от Grunt в пользу Gulp. Практиковался в JavaScript, выполняя упражнения JS assessment, также решал задачи на Codewars.

В ноябре сверстал два новых лендинга и работал над ещё одним новым проектом wallpapyrus.ru — мой первый полноценный самостоятельный проект на Drupal 7. Основные фичи: автоопределение цвета картинок с помощью либы ColorExtractor, поиск по цвету, обрезка и скачивание обоев (пригодились знания jQuery и AJAX), адаптивная вёрстка с базовой поддержкой IE8. В свободное время читал You Don’t Know JS и начал смотреть Скринкаст по Node.js.

Наконец, декабрь — и ещё два новых проекта: главная страница сайта компании Евротехника, а также плагин гостевой книги для сайта apple-restore.su с авторизацией через соцсети (использовал либу Hybridauth). Кроме того, успешно выполнил тестовое задание, прошёл интервью и получил оффер на позицию Trainee Frontend developer. Впрочем, решил его не принимать, поскольку достоин большего. Что и докажу в следующем году.

Пока же, в последние дни уходящего года, я изучил скринкаст по Webpack и начал разбираться с React. Эта модная технология была на примете уже давненько, и вот наконец приступил к туториалу. Задача на ближайшие месяцы — создать первое рабочее приложение на React, впоследствии прикрутить бэкенд на Node.js с Express и MongoDB. Ну, а глобальная цель на следующий год — прорыв в карьере и выход на профессиональный уровень.

В наступающий год вхожу с оптимизмом, готовностью к новым интересным проектам и сложным задачам. Надеюсь, через год мне снова будет о чём написать в блог. Мир фронтенда развивается стремительно быстро, приходится бежать, чтобы оставаться на месте. The sky is the limit. Именно это мне и нравится.

Хорошего нового года всем нам.