Как я работаю: Никита Галкин, Back-end разработчик в StatusToday

[В рубрике «Как я работаю» мы приглашаем гостя рассказать о своей работе, организации воркспейса, полезных инструментах и лайфхаках]

Никита Галкин начинал путь в IT с собственного бизнеса по написанию ботов для онлайн-игр. Затем какое-то время создавал сайты «под ключ». Переехав из Донецка в Киев в 2015 году, поработал на позиции Back-end разработчика и System Architect в нескольких аутсорсинговых компаниях, а весной этого года стал частью команды британского стартапа StatusToday.

Сейчас Никита удаленно работает в StatusToday и как консультант ведет несколько других проектов. Также его часто можно увидеть на различных конференциях и митапах в роли спикера.

О себе

Я закончил ДонНТУ по специальности «Экономическая кибернетика». Еще учась в вузе, устроился работать финансовым аналитиком в лизинговую компанию «Онис». Там мне стало интересно автоматизировать наши однотипные аналитические расчеты в Excel. Для этого использовал Visual Basic.

Увлечение автоматизацией распространилось и на мое хобби: я начал писать на ботов для онлайн-игр. Для меня это был этакий тамагочи на Perl, но кроме фана получилась прокачка персонажей и золото. Сначала только для себя, потом пошли заказы от друзей и знакомых. Во время расцвета моя бото-ферма состояла из 3-х мощных компьютеров, на которых бегало 100-150 ботов. Они взаимодействовали друг с другом через шину сообщений этаким аналогом RabbitMQ.

Чтобы было удобнее общаться с клиентами, я освоил 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 часов я также включаю самообразование, посещение конференций, подготовку собственных докладов. Кстати, если раньше на проработку одного выступления уходило около восьми часов, то теперь справляюсь за четыре.






Инструменты и продуктивность

Недавно я заказал себе стол с подъемным механизмом. Но программировать стоя оказалось неудобно: в таком положении не получается сосредоточиться. Зато очень удобно слушать и воспринимать информацию — поэтому я поднимаю столешницу во время созвонов. В те дни, когда работаю из дома, суммарно провожу стоя 2-3 часа. Заметил, что в таком режиме спина устает меньше.

Самое главное для продуктивности — это убрать все раздражители. Например, оповещания в почте, мессенджерах и соцсетях. Приступая к работе, я надеваю наушники с музыкой — и при этом в ноутбуке автоматически включается режим «Не беспокоить». Это помогает не отвлекаться, не терять состояние потока.

Еще одна находка для концентрации — изомоторные движения. Их описал доктор Хасай Алиев в своей методике «Ключ». Несложные движения руками помогают быстро переключиться из одного состояния на другое — например, от просмотра видео с котиками к рабочему настрою. Также эта методика позволяет выбрать скорость, с которой я хочу воспринимать информацию. К примеру, на фазе анализа нужно думать медленно, на фазе имплементации в код уже продуманного решения — наоборот, быстро.

Для ускорения работы использую сниппеты и горячие клавиши — и в IDE, и в таск-менеджерах с помощью приложения Dash. Применений очень много. К примеру, когда нужно освоить новую библиотеку, сниппеты позволяют запоминать API библиотеки и мозгу, и пальцам. Когда нужно провести анализ, комбинация символов разворачивает фреймворк из вопросов: what, where, when, why, how и т. д. — и не надо тратить время на лишний текст.

Очень люблю IDE от JetBrains. Во всех их инструментах круто сделан рефакторинг.

А вообще считаю, что технические инструменты или платформа должны подбираться под задачи, а не наоборот.

Книжки и самообразование

Последний год я устал от книг по Computer Science. Слишком много их было в 2015-2017 годах. К книгам я обращаюсь, чтобы освежить уже прочитанное, но чаще черпаю идеи из рассылок. Мои любимые:

Каждый месяц стараюсь проходить не менее одного курса на Coursera. Из последнего: специализация «Разработка интерфейсов: вёрстка и JavaScript» от Yandex — решил освежить в памяти Front-end разработку. На сентябрь взял курс по C++: хочу подтянуть фундамент, чтобы проще было понимать, что происходит внутри Node.js.

Если вы только начинаете проходить курсы на Coursera, я советую начать со специализации «Алгоритмы».

Еще я слушаю аудиокниги по софт-скилам и бизнесу. Больше всего цепляют книги, посвященные работе мозга — например, «Сила воли» Келли Макгонигал. Как правило, время на прослушивание книг уделяю во время пробежек или дороги в/из офиса. Всегда снимаю квартиру в 10-20 минутах ходьбы от работы: время — самый ценный ресурс, не стоит его тратить на стояние в пробках.

В прошлом году в качестве эксперимента попробовал читать книги на украинском. На другом языке и материал воспринимается по-другому, и это круто. Новая игра слов, новые идеи... Но всё же в плане профессионального роста книги на английском дают больше, поэтому эксперимент не стал постоянной практикой.





Ретроспектива и планы на будущее

Я бы посоветовал себе писать планы и вести дневник самоанализа. Это позволяет лучше понимать и причины провалов, и способы достижения результатов. Мы часто делаем что-то хорошо, но не можем это повторить. Повторяемость результата — это главная причина, почему Computer Science — такой сильный инструмент. В человеческой психологии повторяемость выражена слабо, но это можно нивелировать саморефлексией. По сути, ретроспективы в Scrum-ритуалах и созданы именно для этого.

Как воспользоваться этим советом? Составлять списки! К примеру, делать чек-листы действий, которые принесли хороший результат, — чтобы не забывать их повторять.

Что касается планов на будущее: сейчас я изучаю, как работает бизнес, особенно стартапы. У меня уже есть хорошая техническая экспертиза. Теперь хочу добавить к ней понимание бизнес-составляющей: что нужно делать, какие решения принимать в той или иной ситуации, чтобы компания успешно развивалась. Это позволит мне как минимум быть полезней своим коллегам. А может, со временем даже стать техническим сооснователем собственного стартапа.

Похожие статьи:
Привет всем, кто давно ждал осенних посиделок в офисе Cogniance. Напоминаем, Java Evenings — это сочетание докладов об актуальных технологиях,...
[В рубрике «Как я работаю» мы приглашаем гостя рассказать о своей работе, организации воркспейса, полезных инструментах...
Специалистов с ученой степенью в украинском IT не так много. Мы расспросили кандидатов наук, которые работают...
Цього року в Українському католицькому університеті (УКУ), що очолив рейтинг IT-вишів 2023 року від DOU, з’явиться...
Climbing Kilimanjaro is no easy task. It’s daunting but definitely worth it should you reach the summit. Before you can achieve this feat however, here are some things to lookout for before climbing...
Яндекс.Метрика