«Когда был разработчиком, программировал до трех часов в день». Александр Соловьев, СТО в Kasta — почему перешел c Python на Clojure, не пишет код по вечерам и критикует свитчеров
Александр Соловьев начинал свою работу в ІТ как дежурный сисадмин. Теперь он работает на позиции СТО и Head of Product в «Касте», одном из самых крупных интернет-магазинов одежды в Украине.
Александр рассказал DOU о своем обучении в КПИ, работе в разных проектах, о переезде и возвращении из Нидерландов, а также о плюсах и минусах работы в роли СТО.
👉🏼Подписывайтесь на наш YouTube и не пропускайте новые выпуски
«Мне хотелось больше „экшена“, который можно делать руками». О том, как в «Касте» появилась должность Head of Product
Четыре года подряд я работал в «Касте» на должности СТО. В какой-то момент понял, что устал от менеджмента людей, выгорел. Мне хотелось больше «экшена», который можно делать руками, меньше встреч и прочих обязанностей, связанных с управлением.
Я пришел к Андрею Логвину, нашему СЕО, с месседжем Goodbye. Андрей немного расстроился, да и мне самому не очень хотелось уходить из компании, хотелось уйти из менеджмента. Несколько месяцев мы думали, что делать, и решили, что я мог бы работать в роли Head of Product.
В то время я все равно выполнял какую-то часть работы, связанную с продуктовым менеджментом, хотя продакты не были у меня в дирекции. Должность Head of Product была просто как лейба, легитимизация этой роли.
На должность СТО мы взяли другого человека, Лешу Солнцева, он сотрудничал с нами до августа 2020 года. Когда он пришел, не стал менять технологии или заниматься чем-то подобным, он занялся пипл-менеджментом. Именно той работой, которая меня напрягала. Должен сказать, что в тот год, когда у нас работал Леша, я отдохнул и вырос как менеджер. Когда ты делаешь паузу, в какой-то момент в голове что-то складывается, изменяется. Леша помог мне взглянуть под новым углом на то, что такое менеджмент, и пережить переходной период.
Когда начался карантин, в компании наступили финансовые трудности, и часть специалистов пришлось сократить. Одежда — это не предмет первой необходимости (пока она у тебя есть), а мы в основном продаем ее. Одежда составляет
Когда я перешел на должность Head of Product, скинул с себя много обязанностей. После того как мне «полегчало», начал писать новую аналитику для компании.
Сейчас я совмещаю обе роли — СТО и Head of Product. Думаю, что СТО — это тот человек, который должен разобраться, куда компания пойдет дальше. Если СТО потеряет связь с технологиями, то не сможет понять, куда идти.
В дирекции СТО (это у нас называется «дирекция R&D») сейчас работает
«Код, который они писали в 9 вечера, был плохим». О графике работы
Ежедневно в 8:59 у меня стендап с топ-менеджментом. Сейчас я в офис не езжу, поэтому такое время меня устраивает. В последний год перед локдауном, когда я ездил в офис, выходил из дома в 7 утра, завтракал уже не дома и до стендапа успевал еще час поработать. Уезжал из офиса в 17:00, чтобы успеть в спортзал. Теперь я завтракаю после первого стендапа: к этому времени как раз просыпаются дети.
В 9:45 — созвон с лидами. Раньше он был в 11:00, это был стендап сайта. Когда я только пришел в «Касту», сотрудники приходили поздно: кто-то к часу дня, кто-то к двум и работали до ночи. Я старался уговорить их прийти хотя бы к 11:00, потому что код, который они писали в 9 вечера, был плохим. Бывает, конечно, что я сам делаю что-то по вечерам, пишу свои проекты. Но только в тех случаях, когда в 9 вечера чувствую себя человеком. Если работать в таком режиме каждый день, ты уже не совсем человек.
Два стендапа, о которых я рассказал, у меня каждый день. Кроме того, раз в две недели в пятницу у нас приоритизации разных проектов. Каждую неделю в четверг в 10 утра у меня Weekly Business Review: это обзор с топ-менеджментом предыдущей недели, и раз в месяц — Monthly. Также есть постоянные 1:1 встречи с отдельными людьми — с продактом сайта и дата-сайентистом — с ними мы обсуждаем направление работы. У этих специалистов нет четких спринтов, как у разработчиков, поэтому работаем в режиме индивидуальных встреч.
Многое в моем графике зависит от ситуации в компании. Бывают безумные недели, когда много встреч — это выматывает. Но бывают и спокойные недели.
После обеда стабильных митингов у меня вообще нет. На это время «залетают» встречи, когда что-то происходит не так, разваливается. В таком случае мы встречаемся с людьми, обсуждаем проблему, разбираемся, что делать дальше, куда двигаться. Если все спокойно, после обеда у меня есть свободное время. Я обдумываю, что было бы компании полезным, чем я мог бы заниматься.
Поточных тасков на мне не бывает. В 2017 году они еще были: где-то я проскакивал в спринте. Сейчас в этом нет смысла.
«Минус моей работы — большое количество content switching». О том, что мешает и помогает фокусироваться на задачах
Я всегда быстро включался в работу и переключался между задачами. Это было хорошо заметно, когда мы с друзьями приходили в компьютерный клуб пошпилить в «Кваку»: первые пять минут я обязательно выигрывал. Потом все разогревались, и становилось труднее. Так у меня происходило всегда, в любой игре.
Но сейчас в работе у меня такое количество content switching (переключения внимания), что мне с этим уже не всегда легко. Это минус моей работы. Бывает, что какие-то митинги я переношу, когда чувствую, что устал и мое участие не будет эффективным.
Конечно, есть встречи, от которых трудно отказаться: с инвесторами, СЕО и еще несколькими людьми, которые приходят и говорят, что проблема срочная, все разваливается (если эти люди говорят, что все разваливается, значит ситуация действительно плохая). Тогда нужно собраться и что-то решать, в экстренных ситуациях появляется адреналин.
Я не могу быть продуктивным восемь часов подряд, поэтому между встречами у меня есть перерывы.
Когда я работал разработчиком, то программировал максимум три часа в день. Если суперинтересная задача и нет препятствий —
На первой своей работе разработчиком в 2007 году я сидел рядом с другим человеком. Он был очень сфокусированным и писал код восемь часов в день. Когда ни глянешь — у него на экране код. А я большую часть времени проводил на Reddit. Но перформанс, выхлоп по задачам, у нас был примерно одинаковым. Я работаю быстро, но за счет этого и энергию трачу быстрее.
Думаю, что работа в режиме постоянного переключения меня испортила. Теперь мне трудно фокусироваться. Если бы сейчас я устроился разработчиком, пришлось бы потратить какое-то время на восстановление этого скила. У меня на компе в файлике hosts на 127.0.0.1 забиты Reddit, Hacker News, Lobsters и YouTube, чтобы они не открывались, когда я наберу их в браузере. Бывает, что я открываю что-то быстрее, чем успеваю подумать об этом. Хуже того, я начал замечать, что в какой-то момент нахожусь посреди сессии редактирования этого файлика. Мне надо делать усилия над собой, чтобы не влететь в эту петлю потребления контента.
Я пытался юзать Pomodoro. Но этот метод очень жесткий, и в процессе меня часто прерывают. На компьютере у меня отключены все всплывающие окна — нет никаких слаков и телеграм-каналов. А телефон я обычно кладу экраном вниз, чтобы ничего не «выпрыгивало» на меня и не отвлекало.
«Я не верю в горизонтальные компании». О бюрократии и о том, как могут быть выстроены процессы в компании
Я считаю, что в компании должно быть ровно столько бюрократии, чтобы люди понимали, что происходит. Когда забюрократизирован каждый чих, работать уныло. А унылая работа приводит к выгоранию и страданиям. Я попадал в ситуации, когда бюрократии было в три раза больше, чем мне нужно. И уже за месяц я разочаровывался. Но к выгоранию приводит не только унылость. Непонимание, зачем ты что-то делаешь, тоже к нему приводит.
Бюрократия — это формализация того, что происходит в компании. Например, стендап — это тоже бюрократия. Нужен ли митинг, зависит от состояния компании. Сейчас в «Касте» стендап служит скорее средством социализации: вся разработка у нас на удаленке, мы встречаемся редко. Теперь пытаемся видеться раз в две недели, проводить приоритизацию в офисе. И зовем на нее всю команду. Раньше в этом участвовал только лид, продакт и заказчики. Правда, такие встречи немного трудно сейчас организовывать, потому что команда расползлась географически, не все сотрудники живут в Киеве.
Я не очень верю в горизонтальные компании, потому что чем выше ты в food chain, тем лучше у тебя вид на то, что происходит. Например, в компанию пришел джуниор-разработчик. У него мало опыта, но вообще он очень умный человек. У него много свободного времени, так как джуниору дают немного задач. Он их решает, а все остальное время поглощает информацию: в компании прозрачная коммуникация, и он изучает все, что там происходит. В принципе джуниоры в начале карьеры так и должны работать. В итоге человек хорошо понимает все, что происходит в компании.
Он идет и пишет СЕО: «Смотри, мы можем тут все поменять». Получится ли у этого джуниора сделать все процессы безупречными? Думаю, что нет, это утопия. У человека недостаточно жизненного опыта в целом, чтобы понимать, что может получиться в результате каких-то действий.
«Когда не получается настроить BIND, DNS-сервер, в общаге есть много людей, которые могут помочь, ответить на твои вопросы». Про обучение в КПИ
Я работал админом, Python-разработчиком, фронтенд-разработчиком, потом СТО. Но это не был осознанный целенаправленный путь. Даже в КПИ я поступил почти случайно.
Я жил в Кривом Роге, учился в Жовтневом лицее. Это была одна из лучших на тот момент школ: первые три места областной олимпиады по физике были в нашем классе. Я занял третье место, два моих одноклассника — второе и первое. Был договор с ДГУ (Днепропетровским государственным университетом) о том, что еще в марте мы сдадим тесты и нас зачислят в вуз. Так и произошло: мы поехали в Днепр, сдали тесты, прошли. В мае даже заплатили за общагу там (кто-то посоветовал, что, если заплатить сейчас, можно поселиться в хорошую комнату).
Но вдруг одна моя одноклассница сказала, что можно попробовать поступить в КПИ. Я подумал: почему бы и нет. Мой папа тоже загорелся этой идеей, и мы поехали в Киев изучать вопрос. В то время еще не было ЗНО, нужно было сдавать вступительные экзамены. Но тогда, в 2002 году, уже можно было поступать не в один, а в три вуза.
Я сдал экзамены в КПИ, набрал 18,5 балла. Проходным был 21 балл. Но я особо не расстроился по этому поводу: решил, что буду с ребятами в ДГУ, как и планировал. Это тоже нормально. И уехал домой.
Через месяц мне позвонил какой-то человек из КПИ, спросил, куда я поступил, и предложил перевестись из ДГУ в КПИ. Я согласился, забрал документы и отвез их в КПИ. Учился на ФИВТ (факультете информатики и вычислительной техники), на кафедре ТК (технической кибернетики).
Сам политех, учеба в нем мне не нравились. Нравилась жизнь в общаге. Там была большая концентрация людей, которые жаждут знаний. Но пары мы пропускали, там не было знаний.
Когда не получается настроить BIND, DNS-сервер, в общаге есть много людей, которые могут помочь, ответить на твои вопросы. В соседней комнате жил парень, который работал админом в NBI, в другой комнате — админ Digital Generation. То есть концентрация знаний и людей в общаге была очень большая.
«Я работал админом сутки через двое». О первом опыте работы
На втором курсе я пошел работать. Из-за этого чуть не вылетел из КПИ. Я работал админом в «Колоколе» (дата-центре ColoCall — ред.) сутки через двое. На работе можно было спать, если тебя никто не наберет. Звонили в основном в тех случаях, когда сдох сервер и нужно было пойти в гермозону (ту часть, где стоят сервера), посмотреть, что происходит. Худший кейс — это когда что-то случалось в гермозоне на Леонтовича и надо было ночью с Тургеневской идти туда пешком. Я ходил так дважды.
Но я уволился, потому что эта работа не совмещалась с учебой и мои родители взбунтовались по этому поводу.
После бакалавриата пошел работать снова, тоже админом. А дома по вечерам разбирался с WordPress, потом с Django. Как раз появился блог Вани Сагалаева на русском языке про Django: я читал его, тусовался на форуме.
Потом я стал разработчиком. Интересно было разбираться в этом, и оказалось, что разработчикам платят больше.
Полтора года я разрабатывал на Django в Softheme. Потом мне стало скучно. Я уволился и пошел делать свой стартап, GitHub для Mercurial. В то время GitHub еще был в бета-версии, у меня аккаунт там от апреля 2008 года. В конце июля этого же года, когда я допиливал свой проект, наводил красоту и думал, что через месяц-другой отправлю в релиз, Джаспер Ноер зарелизил Bitbucket. У меня опустились руки. Зря, потому что за следующие два года он ничего нового не сделал.
Вообще, доводить дело до конца нужно уметь. Это сложно, потому что вначале делать проект интересно, а потом его нужно «додавливать». Думаю, что с возрастом у меня стало лучше с этим.
«В какой-то момент я осознал, что погода — это важно». О жизни в Нидерландах
У меня был блог на движке, который я сам написал на Django. Движок назывался Byteflow, вокруг него собралось комьюнити. В пике развития у нас на канале тусовалось
Потом один знакомый, с которым я работал, уехал в Нидерланды, в Гронинген. Он предложил мне тоже туда переехать. Я поискал в Гронингене картинг, оказалось, что есть. Ну и я подумал: «Окей, наверное, там нормально». И уехал.
Из Нидерландов в Украину я возвращался уже осознанно. Жизнь в этой стране мне не понравилась. В какой-то момент я осознал, что погода — это важно. Зимой там было меньше 10 дней, когда солнце хоть раз выглядывало. У меня день рождения 25 августа: в этот день там был град и температура +5°C. Еще меня напрягало соотношение доходов и расходов. Хотелось хоть что-то откладывать, не проедать всю зарплату. В итоге я решил уехать в Украину и начать все сначала.
После приезда в Украину я работал в прикольном проекте для малайзийской компании: мы делали замену Google-сервисам для Android. Я занимался веб-частью. Основатель проекта — француз, но жил он в Малайзии. Он хотел продать этот проект малайзийскому правительству, поэтому нужно было сделать хороший веб-интерфейс, чтобы все было красиво и на большом экране. У меня есть некоторые ощущения, что частично этот проект был новой идеей и частично — распилом денег. Реализовать его до конца не получилось, в какой-то момент проект просто закончился.
«Раньше я считал, что, если на работе тебя что-то достало, скажи Goodbye и найди себе новые зеленые места. Но не всегда в новом проекте было лучше». О карьерных ошибках
Часто я переходил на новую работу, когда на предыдущем месте становилось скучно. Свежи в воспоминаниях ситуации, когда проект ищет деньги, тебе платят кучу бабла, а ты сидишь, фиксишь формочки, двигаешь кнопочки и думаешь: «Зачем вам нужен человек за столько денег, который фиксит формочки?». Я понимал, что моя работа здесь уже сделана, и переходил в другой проект.
Думаю, это было неправильно. По-хорошему нужно было идти к руководству и говорить, что мне нужны другие задачи, возможно, более сложные или часть менеджмента. Сейчас я вижу, что менеджер не всегда может понять, когда человеку уже становится трудно и скучно.
Я не уверен, что у меня все получается, но сейчас я очень стараюсь делать так, чтобы люди понимали, зачем они выполняют свою работу. Из-за этого мы стали звать на приоритизацию всю команду, и я прошу продактов, чтобы они объясняли людям, откуда ноги растут у каждой задачи. Это помогает сотрудникам не выгорать. Бывают очень длинные задачи, тем не менее они заканчиваются.
Когда на тебе огромный пул задач и ты не знаешь их конечной цели, в какой-то момент понимаешь, что ты на
Сейчас у меня с коммуникацией гораздо лучше. Раньше я считал, что, если на работе тебя что-то достало, скажи Goodbye и найди себе новые зеленые места. Но не всегда в новом проекте было лучше.
Я пытаюсь в «Касте» построить такую среду, в которой людям будет интересно, будет ощущение того, что это проект нормального масштаба и каждый вклад ценен. У нас каждый сотрудник оказывает большое влияние на то, что происходит в компании. Когда, например, на бэкенде работает трое людей, каждый из них тянет на себе здоровенную ответственность. У нас хорошая команда, и, кажется, никто не ушел из нее, потому что мы мудаки. Но полностью быть уверенным ни в чем нельзя.
Когда в
В
Сейчас найти хорошего разработчика еще труднее. Будет ли со временем легче? Нет. Думаю, с этим нужно смириться.
«Пришел Black Friday, и сайт упал, без шансов на восстановление». О том, почему переписали сайт с Python на Clojure
В технологиях я гонюсь не за новизной, а за качеством. Насколько «угадываю» качество технологий — вопрос открытый. Но мне приятно думать, что угадываю хорошо.
Изначально код в «Касте» был на Python. Он был написан максимально плохо, такого качества кода я никогда не видел. Проект прошел несколько аутсорс- команд и разработку с неудачным управлением. Первые три четверти 2015 года мы потратили на то, чтобы привести сайт в такое состояние, чтобы на Black Friday он не умер. Но пришел Black Friday, и сайт упал, без шансов на восстановление. Это была проблема Python только частично (потому что он медленный), но в большей части — проблема архитектуры. Получилось, что мы потратили кучу времени без толку.
Я попробовал писать нашу программу на Clojure, и оказалось, что это может дать хорошую скорость. Пришел к СЕО, Андрею Логвину, и предложил все переписать на Clojure. Андрей сомневался. Но я привез ему из Clojure-конференции ручку компании Zalando. Он удивился, что в Zalando используют Clojure. Переписывать он все-таки согласился, хотя это было рискованное решение.
Для этой работы мы взяли еще одного человека. Он верстал, а я писал ему бэкенд и фронтенд. В то время от задач СТО у меня было только хождение по встречам, где принимали решения. Инфраструктурой занимался другой человек, и меня почти не трогали. У меня было время, чтобы программировать, и за зиму мы вдвоем сделали главную страницу сайта. Это много работы, потому что на главной странице половина функциональности.
Я сделал так, что переход между версиями был «бесшовным», и мы все запустили. У нас было 18 серверов на Python (они «пыхтели» на распродажах 8 марта) и два сервера под Clojure. Два — чтобы можно было один выключить и запустить обновления. Дальше у нас была цель: сделать главную страницу товара, корзину, чекаут до Black Friday 2016 года. И это получилось.
«Нужно предложить челлендж, интереснее, чем тот, что сейчас в „Касте“». О том, какая работа могла бы заинтересовать
Мой доклад о ClojureScript на конференции JavaScript Frameworks Day очень активно разошелся по интернету, его посмотрело много людей.
Как-то я пошел на первое свидание с девушкой в ресторан. Мы подходим к столику, садимся. Мимо проходит какой-то человек, оборачивается и говорит мне: «Ты тот мен! Да, это ты... Офигенный доклад!». И ушел. Потом было еще несколько ситуаций, когда меня узнавали на улице.
На нескольких сайтах выкладывали нарезку доклада, было много обсуждений. Помню, была одна смешная ветка, где кто-то написал: «Я тоже из Кривого Рога, и мне очень стыдно за этот доклад». Дальше там долгое обсуждение, перепалка. И потом этот же человек пишет: «Я понял, это нарезка. Вот полная версия. Офигенный доклад!». Я прочел это и выдохнул.
Уверен, что тот доклад сильно повлиял и на то, что меня пригласили в «Касту».
Вопрос «кем я буду через 5 лет» меня беспокоит, потому что скоро мне 41 год. Наверное, через пять лет я вижу себя отцом семейства, счастливо путешествующим по интересным местам. Необязательно тюленем лежать на пляже, можно ехать в Рим, Барселону, на Шри-Ланку. В плане работы сложно загадывать: за первые семь лет своей деятельности я сменил 8 или 9 компаний, а за следующие 7 лет — одну. Поэтому как будет дальше, представить трудно.
Что нужно предложить другой компании, чтобы заинтересовать меня как специалиста? Это сложный вопрос. Наверное, четыре миллиона долларов. Я уволюсь вчерашним днем и побегу туда, спотыкаясь. А если серьезно, то какой-то челлендж, интереснее, чем тот, что сейчас в «Касте». Но в «Касте» сейчас очень интересный челлендж. Мы находимся на
Подписывайтесь на канал Александра в телеграме: t.me/bitethebyte
И не забывайте про его YouTube: www.youtube.com/asolovyov
Подписывайтесь на наш YouTube и не пропускайте новые выпуски! Скоро выйдут видео с Megogo и Softserve!
Найкращі коментарі пропустити