Я долго откладывал написание этой статьи. Фактически, работу я нашёл уже больше года назад, и всё это время подумывал о том, чтобы написать об этом сюда — ведь решающую роль в переменах в моей жизни сыграло именно обучение на Хекслете. Ну да — лучше поздно, чем никогда.
Приблизительно полтора года назад я начал проходить на Хекслете профессию PHP-программист. Хекслет я нашёл по ссылке с Хабра. В то время я перебрал довольно много вариантов — смотрел на разные курсы, оценивал учебную программу, подачу материала, стоимость. Среди русскоязычных сервисов Хекслет показался мне однозначно лучшим по сочетанию всех факторов.
В течение пяти месяцев я в довольно вялом темпе прошёл примерно 2/3 курсов — параллельно работал сисадмином, поэтому время для плотной учебы находилось далеко не всегда. Сложнее всего в самом начале было поменять мышление, заставить себя думать в парадигме программирования. Многие абстракции человеку со стороны, конечно, конкретно ломают мозг. Сейчас, когда меня в семье спрашивают, чем ты на работе занимаешься, я ничего не могу ответить. Понимаю, что если начну рассказывать, — для человека со стороны это будет звучать как лютая абракадабра. А когда научишься правильно думать, то выучить технологии уже совсем не сложно.
Уже на этом этапе я решил пробовать трудоустроиться. Не на что особо не надеясь, я разослал резюме в пяток компаний — и начал ждать. Ждать пришлось не долго, в течение трёх дней одна из компаний прислала тестовое задание, а в ещё одно место пригласили на собеседование. Понимая, что сделать в срок тестовое задание и подготовиться к собеседованию я не успею, выбрал один из вариантов — пойти на собеседование в Aheadworks. Как я знаю теперь — я не ошибся. Второму работодателю написал письмо с извинениями и пояснил, что в этот момент делать тестовое задание не могу.
Читайте и другие истории успеха: Как благодаря Хекслету я устроился в EPAM, стал сеньором и уехал в США.
Компания Aheadworks в основном пишет модули для Magento 2. Главный упор на собеседовании был сделан на понимание ООП. Спрашивали паттерны, задавали вопросы на понимание SQL. Примерно через две недели пришел оффер. На время испытательного срока меня посадили работать в саппорт, чтобы разобрался, что к чему, и как принято писать в компании. Тогда мне было 28 лет.
Работа саппорта заключалась в том, чтобы фиксить баги на клиентских сайтах (стор-специфичные 3-rd party conflict и т. д.), и иногда писать мелкие кастомизации. На первых порах было очень сложно: Magento — реально непростая система. Если кому интересно, что в ней сложного, можно почитать, к примеру, как там создается грид.
А дальше мне продлили испытательный срок. Первые недели на работе было очень тяжело — люди вокруг, конечно, приятные, доброжелательные и умные. А ты сидишь над своим заданием и понимаешь только то, что ничего не понимаешь. Тебе выдали документацию — 380 страниц на английском очень тяжёлого и специфического текста, где каждое третье слово приходится гуглить, и не редко запрос приводит на такой же текст, ещё страниц на 15-20. На вопросы коллеги отвечают, но ты, блин, ответы понять не можешь, смотришь вокруг и видишь, что здесь все в этом разобрались, а ты — нет. В общем, чувствуешь себя клиническим идиотом. Как вести себя в такой ситуации? Просто работать, без нытья, без истерик — пили код и все. Сколько можешь — разбирайся сам, читай, если застрял — обратись к старшим товарищам, они помогут и подскажут. И нужно сохранять спокойствие, если добросовестно работаешь, то результат будет. У меня через три недели работы в мозгу что-то хрустнуло, и я начал въезжать. Офигенное чувство, раньше сидел днями, и ничего не получалось. А тут одно написал — заработало, второе написал — тоже заработало! Я на эйфории тогда всю ночь просидел, оторваться не мог.
За время работы в саппорте мне пригодился опыт в администрировании серверов. Видимо это заметили, и когда в компании появилась вакансия DevOps-инженера, мне предложили попробовать.
Мне это зашло, работа оказалась очень интересная. До меня эти обязанности выполнял очень высоко-квалифицированный человек, который этим занимался как побочной работой, и система мне в наследство досталась большая, интересная, очень круто сделанная, но местами сыроватая — и не допиленная из-за нехватки времени. Доделывая такие вещи за профессионалом, волей неволей приходится работать в его парадигме и стиле написания кода, и скиллы качаются очень-очень быстро.
Итак, стек технологий, с которым я сейчас работаю: Python, bash-scripting, PHP/Magento, Docker, Traefik 2, nginx, Atlassian family (Jira, Bitbucket, Bitbucket pipelines, Bamboo), MFTF, digital ocean. Естественно, в этом списке ожидается Kubernetes, но к нашим задачам он не совсем подходит — есть в нём свои подводные камни. Из основных проектов (так как мы придерживаемся IaaC и юзаем CI/CD, хоть краешком, но я пощупал очень много проектов, так что буду указывать только те, с которыми я работаю постоянно): Pystacker(custom docker-compose manager on Python ——> Vue), Docker solution to use MFTF with docker-compose based Magento stores, решение для подготовки пэкаджей (от запуска тестирования до выгрузки в репозиторий через пайплайны), частные репозитории композера (dev, выдающий для установки клиентскому композеру ссылки на Bitbucket, и основной для клиентов).
А дальше, чтобы работать и правильно внедрять DevOps-практику, нужно тоже знать очень много технологий. В первую очередь, надо знать Linux на уровне уверенного написания bash-скриптов. Нужен какой-нибудь скриптовый язык — я лично выбрал Python, и, по-моему, для таких целей он наиболее удобен. Нужно понимать CI/CD и уметь пользоваться каким-нибудь из его инструментов — их сейчас много, и как выбрать подходящий — тема ох не простая, но если инфраструктуру строить не с нуля — то просто пользуешься тем, что у вас в компании принято. Еще нужно очень хорошо знать Docker, а это далеко не такая простая вещь, как многие думают. Нужно понимать принципы микросервисной архитектуры и методологию IaaC, нужны сильные знания сетевой инфраструктуры, хорошее знание как минимум nginx и apache, а очень желательно еще traefik, ну или другой какой load balancer. Кроме того, в командах важно умение построить систему безопасности, понимание продукта, который делают в компании, его архитектуры и структуры кода.
Ох, что-то я увлекся с перечислением технологий. В конце концов — этим постом я хотел сказать только одно — спасибо Хекслету.