Data Science fwdays — спікери зі Stanford, ДонорUA, Grammarly, Neuromation, Київ, 7 вересня

Как я работаю: Никита Галкин, 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-ритуалах и созданы именно для этого.

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

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

LinkedIn

30 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Спасибо, было интересно. Унес много ссылок с собой.

гарне інтерв’ю, дякую за цікавий матеріал

Привет, Никита. Ты сильно вырос за последнее время. Помню, я уже начал работать в профессии, а ты все еще делал ботов в Рагнарек. Я тогда подумал, что олимпиадник и гений математики Никита зря тратит свой талант. Правда тогда зарплата у меня был все еще меньше твоих ботов. Теперь ты вносишь больши вклад и пользу и тебе это нравится. Рад за тебя.

Привет, Олег. Спасибо. У каждого своя дорога. Написал тебе в личку в Facebook.

Типичный рабочий день
8:00. Просыпаюсь, готовлюсь к рабочему дню.

Три дня в неделю я работаю из дома, и два дня — из коворкинга в Creative Quarter, где интегрируюсь с коллегами, которые тоже живут в Киеве.

9:00. Приступаю к работе, первым делом проверяю метрики наших серверов. К примеру, сейчас у нас заканчивается место на GitLab — и этот вопрос надо решать. Также с утра отвечаю на сообщения от других разработчиков.

Затем, как правило, просматриваю новости, связанные с технологиями, — рассылки, новые статьи.

10:00. Пока коллеги из Лондона еще на активировались (у нас двухчасовая разница во времени), я посвящаю время программированию и работе с текущими задачами.

Если в этот день я не дома, а в CQ, то мы вместе с ребятами обсуждаем статусы и списки задач друг друга, высказываем свои мнения и предложения.

13:00. В обеденный перерыв выхожу в спортзал или на пробежку — это помогает размяться. Иначе от долгого сидения очень устает спина.

14:00. Как правило, вторая половина дня проходит в созвонах — и с ребятами из Лондона, и с коллегами из Киева.

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

18:30. Заканчиваю работу по StatusToday, но трачу еще несколько часов на самообразование, подготовку к выступлениям или работу с другими проектами. У меня есть ряд проектов, в которых я выступаю как консультант по техническим решениям с почасовой оплатой.
-------

То есть на кодинг до 3 часов в день. :) остальное блаблабла.
И это бэкэнд инженер.

Вот более короткая цитата:

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

(18:30-9:00-1)/3 < 3.
Я так понимаю вы там и швец и кравец и на дудегрец и бекенд разработчик.

Если я правильно вас понимаю, вы считаете что разработчик должен только писать код. Такая точка зрения имеет право на жизнь, особенно в Outsource. Мне она не близка, я считаю, что разработчик должен решать проблемы бизнеса с помощью кода. Поэтому код я пишу треть времени, а остальное время помогаю коллегами-разработчикам или выясняю детали проблемы, которую необходимо решить.

разработчик должен только писать код

С эти́м не согласен совсем.

разработчик должен решать проблемы бизнеса с помощью кода

С этим частично. Это работает более менее до определенной величины проекта. Чем больше проект тем меньше влияние кокретного разработчика и больше доля последнего в кодинге и.т.

Мое внимание обратило то, что вы по названию статьи идентифицируете себя как разработчик.
Хотя судя по ответу, а даном этапе проекта у вас успешно получается, баллансировать-агрегировать много функций, которые вы называете одрим словом — разработчик.

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

Лучше всех в колхозе работала лошадь. Но, тем не менее, председателем она так и не стала ©

Все зависит от колхоза. И от поры года.
У автора статьи — это работает и это прекрасно.

Просто если каждый колхозник будет и председателем и агрономом и комбайнером и лошадью, то колхоз миллионером не станет.

Рабинович, вы либо трусы наденьте либо крестик снимите.

Донбасс порожняк не гонит ;)

Не делай сегодня то, что можно оставить на завтра.

Странно: у человека лычка «Senior Software Programmer», а мыслит как джун.

Да и то джуны в правильных руках мыслят более трезво...

Дуже добре, дякую за численні поради.

Є два маленьких питання до Микити :

1) Чи можете порадити якісь конкретні матеріали, для ознайомлення з методикою «Ключ», щоб компактно та ефективно ?
2) Яки у Вас технічні плани на майбутнє ? Вдосконалення у напрямку Node.js ?

Дякую.

1) Чи можете порадити якісь конкретні матеріали, для ознайомлення з методикою «Ключ», щоб компактно та ефективно ?

Ключевая идея методики — у нас есть промежуточное состояние сознания. В нем есть свобода выбора состояние, в которое мы хотим перейти. Этакий аналог нейтральной передачи автомобиля. Изомоторные движения позволяют входит в это нейтральное состояние.

В свое время я знакомился с этой методикой по вот этой ссылке www.koob.ru/aliev Тренингов не проходил, хотя слышал что они дают больший результат. Буду рад вашему отзыву.

2) Яки у Вас технічні плани на майбутнє ? Вдосконалення у напрямку Node.js ?

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

В начале года планировал пройти сертификации от Cloud провайдеров (AWS, Google Cloud, Azure), но отзывы коллег и мой опыт показывают, что это не влияет при трудоустройстве.

В любом случае навык/знания, которые не используются ежедневно забываются. Поэтому учеба ради учебы бессмысленна.

не вичитаний текст ніпрощо

о, знакомые люди :) да и интервью полезное, спасибо!

попробуйте Хром расширение для тренировки скорочтения — chrome.google.com/...​gfjnknjblddfibbdnocffdoii

О что-то новенькое. Посмотрю.

Подскажите, пожалуйста, какие именно аудио книги вы слушаете по по софт-скилам и бизнесу? И ресурсы, откуда вы их берете?

Я слушаю книги из моего read-list. Возможно, когда нибудь руки дойдут оформить его так же как это сделал Мигуцкий, но пока это просто проект в things. В мой список книга чаще всего попадает во время конференций или нетворкинга. Я люблю спрашивать мнение людей о книгах.
В этом списке не обязательно новые книги, хорошую книгу стоит перечитать переслушать снова спустя 2-3 года.

Покопался в заметках. Вот список по софт-скилам, который может вас заинтересовать:

  1. Henry Mintzberg, Managinghttps://www.amazon.com/Managing-Henry-Mintzberg/dp/1605098744
  2. James C. Collins, любая книга en.wikipedia.org/wiki/James_C._Collins
  3. Ицхак Адизес, любая книга
  4. Clay Christensen www.amazon.com/...​-Successful/dp/1422196577
  5. www.amazon.com/...​ison-Wesley/dp/0321637704
  6. Стивен Кови, The Seven Habits of Highly Effective People
  7. Management 3.0: Leading Agile Developers, Developing Agile Leaders. Jurgen Appelo
  8. Макс Батырев — "45 татуировок менеджера«www.mann-ivanov-ferber.ru/books/paperbook/tattoos
  9. www.amazon.com/...​ther-Others/dp/1591845327
  10. www.amazon.com/...​nchard-Ph-D/dp/074350917X
  11. Архипенков: «Управление программными проектами»
  12. Джефф Сазерленд: «Scrum. Революционный метод управления проектами»
  13. Том Де Марко: «Deadline»
  14. PMBoK Дэниел Пинк: «Драйв»
  15. Том Де Марко: «Вальсируя с медведями»
  16. «Управление проектами для чайников» coollib.com/b/279290/read
  17. Глеб Архангельский, Тайм-драйв www.mann-ivanov-ferber.ru/books/mif/005
  18. www.amazon.com/...​ing-Out-Box/dp/1576759776
  19. www.amazon.com/...​orth-George/dp/1119082943
  20. Никогда не ешьте в одиночку и другие правила нетворкинга (К.Ферацци)
  21. Мотивация на 100%, Светлана Иванова
  22. Договориться можно обо всем, Гэвин Кеннеди
  23. Помогите им вырасти или смотрите, как они уходят. Беверли Кей и Джулия Джулиони
  24. Обнимите своих клиентов, Джек Митчелл
  25. Я слышу вас насквозь, Марк Гоулстон.

Толковое интервью, спасибо !

Подписаться на комментарии