Как я работаю: Никита Галкин, Back-end разработчик в StatusToday
[В рубрике «Как я работаю» мы приглашаем гостя рассказать о своей работе, организации воркспейса, полезных инструментах и лайфхаках]
Никита Галкин начинал путь в IT с собственного бизнеса по написанию ботов для онлайн-игр. Затем какое-то время создавал сайты «под ключ». Переехав из Донецка в Киев в 2015 году, поработал на позиции Back-end разработчика и System Architect в нескольких аутсорсинговых компаниях, а весной этого года стал частью команды британского стартапа StatusToday.
Сейчас Никита удаленно работает в StatusToday и как консультант ведет несколько других проектов. Также его часто можно увидеть на различных конференциях и митапах в роли спикера.
О себе
Я закончил ДонНТУ по специальности «Экономическая кибернетика». Еще учась в вузе, устроился работать финансовым аналитиком в лизинговую компанию «Онис». Там мне стало интересно автоматизировать наши однотипные аналитические расчеты в Excel. Для этого использовал Visual Basic.
Увлечение автоматизацией распространилось и на мое хобби: я начал писать на ботов для онлайн-игр. Для меня это был этакий тамагочи на Perl, но кроме фана получилась прокачка персонажей и золото. Сначала только для себя, потом пошли заказы от друзей и знакомых. Во время расцвета моя бото-ферма состояла из
Чтобы было удобнее общаться с клиентами, я освоил PHP и WordPress и сделал себе сайт, на котором в автоматическом режиме шла доставка оплаченного товара. Затем увидел спрос и на эту услугу — и как фрилансер стал разрабатывать сайты «под ключ». Работал с JavaScript, Lavarel, Node.js.
Сначала боты, а потом сайты давали хороший доход, при этом у меня оставалось много свободного времени на саморазвитие, девушек и мафию. В конце 2010 года — спустя три года после окончания института — мне захотелось чего-то серьезного: я пошел в академическую науку. Главный выученный урок: «Все сложное — это состыкованное с друг другом простое. Поэтому делай просто и одинаково. А сложным оно станет само». А еще я написал диссертацию о налогообложении в электронной коммерции, но не защитил ее — в 2014 в Донецк пришла война.
В начале 2015 года я покинул Донецк и переехал в Киев. Оставаться в Украине не планировал — думал, что уеду в Черногорию или какую-то другую недорогую страну с теплым климатом и там продолжу заниматься фрилансом. Прежде чем двигаться дальше, мне нужно было снять деньги, которые откладывал вторую половину 2014 года, занимаясь фрилансом в Донецке. Тогда можно было снимать не более $100 в день, и мне пришлось задержаться в Киеве на пару месяцев.
Находясь в академической среде, я упустил, насколько в Украине вырос рынок IT — что это не только сайтики на WordPress. В это время я активно посещал разные конференции и митапы. Я начал сомневаться, а так ли мне нужна эта Черногория. Стал просматривать вакансии на DOU, на одну из них откликнулся, просто из интереса. Собеседование, тестовое, офер — и я остался в Киеве.
Я принял офер от продуктовой компании Smart Cloud Solution. Меня заинтересовала предметная область их разработок: они делали веб-платформу для формирования и отправки налоговых отчетов — аналог Taxer. Благодаря аспирантуре я легко понимал продукт. Он был написан на PHP с использованием старой версии CodeIgniter. Нам нужно было переписать его на Laravel. Кроме того я занимался автоматизацией работы с Google-аналитикой для внутренней CRM.
Затем я решил развиваться дальше и прошел интернатуру в GlobalLogic. Они набрали Senior-разработчиков, которые хотели поменять текущий стэк на Node.js, и обучали их под потребности проекта. И все мои следующие работы уже были связаны именно с этим стеком.
Следующими моими компаниями стали Techery, Ciklum, Ezetech и GlobalLogic.
В Techery делал Back-end как прокси для мобильного приложения. В Ciklum получил интересный опыт работы в мультистековой команде: часть разработчиков писали на Node.js, а остальные — на Java.
В Ezetech я занимал позицию System Architect и фактически выполнял обязанности СТО. В GlobalLogic работал на проекте QSC, связанном с аудиопроцессингом. Там у нас была микросервисная архитектура. Node.js использовали на embedded-устройстве, с помощью него отправляли данные в облако.
Почему стартап интереснее, чем аутсорсинг
С весны этого года я работаю удаленно — как контрактор в британском стартапе StatusToday. Сотрудничать с конечным заказчиком без посредников намного интереснее и эффективнее, чем работать в аутсорсинге. Во-первых, так я имею прямое влияние на продукт. Во-вторых, нет заминок из-за коммуникации с менеджерами, все задачи идут напрямую от СТО.
В аутсорсинге зачастую чувствуешь себя слугой двух господ, когда надо быть лояльным и по отношению к заказчику, который нацелен на результат в своем бизнесе, и к своей компании, у которой могут быть свои цели — например, продажа человеко-часов. Из-за этого происходит размытие ответственности.
Чаще всего у разработчика в аутсорсинговой команде нет мотивации делать что-либо, что стоит за рамками задания в таск-трекере. К примеру, на митинге никогда не услышишь такой отчет: «Ребята, у нас тормозила база данных. Я добавил недостающие индексы — и больше не тормозит». В аутсорсинге результат твоей работы никак не влияет на твою самооценку и зарплату. Тогда как в стартапе все-таки уделяют больше внимания качеству продукта и разработки.
За 13 лет работы в IT я пришел к пониманию, что опыт — это не столько знание технологий, сколько умение решать задачи бизнеса. Понять, что хочет заказчик — это сложнее, чем составить запрос в базе данных и выдать его через Rest :)
Роль и обязанности
Наш продукт, StatusToday, позволяет владельцам бизнеса в удобной форме отслеживать различные метрики и статистику по работе сотрудников — к примеру, кто перегружен задачами, а кто, наоборот, простаивает, как быстро специалист отвечает на входящие письма и т. д. Первичные данные берутся из Gmail, Microsoft Office 365 или из информации, предоставленной заказчиком. В планах также интеграция с Jira, Slack и прочими подобными платформами.
Я занимаюсь непосредственно Back-end разработкой. Наш СТО рассказывает о проблемах, которые есть у бизнеса, а моя задача — предложить варианты, как мы можем это реализовать.
Есть много задач, связанных с R&D, — к примеру подобрать технологический стек для реализации GraphQL. Для этого надо проанализировать разные инструменты, выявить их проблемные места, оценить, как эти технологии будут развивать в будущем.
Еще одна зона моей ответственности — уточнение требований. Бизнес, как правило, ставит задачи, связанные с функциональными требованиями к продукту — например, добавить кнопочку, которая позволит включать или выключать диктофон. За этим стоит ряд нефункциональных требований, которые нужно составить и уточнить — например, каким должно быть качество звука записи, нужно ли делать шумоподавления и т. д.
Также я уделяю внимание автоматизации процессов. Мне кажется, каждый Back-end разработчик должен быть знаком с практиками DevOps. В продукте сделать задачу — это не просто закоммитить код в репозиторий, а убедиться, что все корректно работает на всех окружениях, вплоть до продакшена.
На непосредственное написание кода у меня уходит около трети всего рабочего времени. Остальное — написание документации и спецификаций, созвоны, интеграция с коллегами.
Типичный рабочий день
8:00. Просыпаюсь, готовлюсь к рабочему дню.
Три дня в неделю я работаю из дома, и два дня — из коворкинга в Creative Quarter, где интегрируюсь с коллегами, которые тоже живут в Киеве.
9:00. Приступаю к работе, первым делом проверяю метрики наших серверов. К примеру, сейчас у нас заканчивается место на GitLab — и этот вопрос надо решать. Также с утра отвечаю на сообщения от других разработчиков.
Затем, как правило, просматриваю новости, связанные с технологиями, — рассылки, новые статьи.
10:00. Пока коллеги из Лондона еще на активировались (у нас двухчасовая разница во времени), я посвящаю время программированию и работе с текущими задачами.
Если в этот день я не дома, а в CQ, то мы вместе с ребятами обсуждаем статусы и списки задач друг друга, высказываем свои мнения и предложения.
13:00. В обеденный перерыв выхожу в спортзал или на пробежку — это помогает размяться. Иначе от долгого сидения очень устает спина.
14:00. Как правило, вторая половина дня проходит в созвонах — и с ребятами из Лондона, и с коллегами из Киева.
Раз в неделю мы проводим митинг, в котором участвуют не только разработчики, а и ребята из отделов продаж и маркетинга. Это помогает понять, что происходит с продуктом.
18:30. Заканчиваю работу по StatusToday, но трачу еще несколько часов на самообразование, подготовку к выступлениям или работу с другими проектами. У меня есть ряд проектов, в которых я выступаю как консультант по техническим решениям с почасовой оплатой.
В общей сложности посвящаю работе 60 часов в неделю. Если меньше — начинаешь либо скучать, либо просто тратить свободное время не продуктивно. В эти 60 часов я также включаю самообразование, посещение конференций, подготовку собственных докладов. Кстати, если раньше на проработку одного выступления уходило около восьми часов, то теперь справляюсь за четыре.
Инструменты и продуктивность
Недавно я заказал себе стол с подъемным механизмом. Но программировать стоя оказалось неудобно: в таком положении не получается сосредоточиться. Зато очень удобно слушать и воспринимать информацию — поэтому я поднимаю столешницу во время созвонов. В те дни, когда работаю из дома, суммарно провожу стоя
Самое главное для продуктивности — это убрать все раздражители. Например, оповещания в почте, мессенджерах и соцсетях. Приступая к работе, я надеваю наушники с музыкой — и при этом в ноутбуке автоматически включается режим «Не беспокоить». Это помогает не отвлекаться, не терять состояние потока.
Еще одна находка для концентрации — изомоторные движения. Их описал доктор Хасай Алиев в своей методике «Ключ». Несложные движения руками помогают быстро переключиться из одного состояния на другое — например, от просмотра видео с котиками к рабочему настрою. Также эта методика позволяет выбрать скорость, с которой я хочу воспринимать информацию. К примеру, на фазе анализа нужно думать медленно, на фазе имплементации в код уже продуманного решения — наоборот, быстро.
Для ускорения работы использую сниппеты и горячие клавиши — и в IDE, и в таск-менеджерах с помощью приложения Dash. Применений очень много. К примеру, когда нужно освоить новую библиотеку, сниппеты позволяют запоминать API библиотеки и мозгу, и пальцам. Когда нужно провести анализ, комбинация символов разворачивает фреймворк из вопросов: what, where, when, why, how и т. д. — и не надо тратить время на лишний текст.
Очень люблю IDE от JetBrains. Во всех их инструментах круто сделан рефакторинг.
А вообще считаю, что технические инструменты или платформа должны подбираться под задачи, а не наоборот.
Книжки и самообразование
Последний год я устал от книг по Computer Science. Слишком много их было в
- JavaScript Weekly;
- Weekly Digest от stackshare.io;
- The Microservice Weekly;
- Рассылка от James Clear.
Каждый месяц стараюсь проходить не менее одного курса на Coursera. Из последнего: специализация «Разработка интерфейсов: вёрстка и JavaScript» от Yandex — решил освежить в памяти Front-end разработку. На сентябрь взял курс по C++: хочу подтянуть фундамент, чтобы проще было понимать, что происходит внутри Node.js.
Если вы только начинаете проходить курсы на Coursera, я советую начать со специализации «Алгоритмы».
Еще я слушаю аудиокниги по софт-скилам и бизнесу. Больше всего цепляют книги, посвященные работе мозга — например, «Сила воли» Келли Макгонигал. Как правило, время на прослушивание книг уделяю во время пробежек или дороги в/из офиса. Всегда снимаю квартиру в
В прошлом году в качестве эксперимента попробовал читать книги на украинском. На другом языке и материал воспринимается по-другому, и это круто. Новая игра слов, новые идеи... Но всё же в плане профессионального роста книги на английском дают больше, поэтому эксперимент не стал постоянной практикой.
Ретроспектива и планы на будущее
Я бы посоветовал себе писать планы и вести дневник самоанализа. Это позволяет лучше понимать и причины провалов, и способы достижения результатов. Мы часто делаем что-то хорошо, но не можем это повторить. Повторяемость результата — это главная причина, почему Computer Science — такой сильный инструмент. В человеческой психологии повторяемость выражена слабо, но это можно нивелировать саморефлексией. По сути, ретроспективы в Scrum-ритуалах и созданы именно для этого.
Как воспользоваться этим советом? Составлять списки! К примеру, делать чек-листы действий, которые принесли хороший результат, — чтобы не забывать их повторять.
Что касается планов на будущее: сейчас я изучаю, как работает бизнес, особенно стартапы. У меня уже есть хорошая техническая экспертиза. Теперь хочу добавить к ней понимание бизнес-составляющей: что нужно делать, какие решения принимать в той или иной ситуации, чтобы компания успешно развивалась. Это позволит мне как минимум быть полезней своим коллегам. А может, со временем даже стать техническим сооснователем собственного стартапа.