Александр, СТО в Kasta - украинский онлайн шопинг-клуб. Хайлоад, DDoS, специфический технологический стек, который эффективно позволяет справиться с первыми двумя проблемами - это все про будни Александра. Также является приверженцем функционального программирования и, в частности, Clojure во всех его проявлениях.

https://twitter.com/asolovyov

«Наследование, IMHO, это вообще худшее, что есть в программировании»

Почему функциональное программирование — твой выбор?
Я делал несколько подходов к нему, но работа была: Python, JS, ООП там всякое, а ФП больше для души и развлечения. Лет 5 назад мы попробовали на хакатоне командой писать на Clojure, и я так проникся этим опытом, что года три назад решил bite the bullet и переехать всей компанией.
Недавно пришлось написать небольшую штуку на Python, и я прям удивился, насколько ООП в целом и наследование, в частности, - неприятно. Наследование, IMHO, это вообще худшее, что есть в программировании: все эти переопределения методов приводят к такой дикой неявности происходящего, что дзен Python’а выглядит издевательством. Количество времени, уходящее на исследование, что же нужно поменять и как, и на отлаживание функционала, вдохновляет пойти опять проповедовать ФП и Clojure.

Вы пишете на Clojure, как вы находите новых людей в команду?
По-разному, конечно. У нас фронтенд на ClojureScript, и мы просто нанимали верстальщиков и говорили: вот такой синтаксис. Учитывая, что там React, rum и hiccup - заходит нормально. Те, кто уже работал, перешли с Python’a, есть человек из 1С, новые люди, в основном, приходят из других технологий, но уже заранее интересуются/программировали на Clojure как хобби. Рост до эффективности занимает какое-то время, но не критичное, и не было еще никого, кому бы не зашло.

«Clojure - это новый Python»

Бывали ли отказы от кандидатов, потому что Clojure - это не мейнстрим?
Ну, мы как бы сразу в вакансиях сообщаем, что Clojure, так что наверняка кто-то не пишет, но мы про них и не слышим. С другой стороны, люди, которые уходят (по разным причинам), иногда откровенно жалеют, что придётся возвращаться к Python. Clojure точно не мейнстрим, но работает то, что Пол Грэм в 2004 назвал парадоксом Python’a.

«Продуктивность у тех, кто пишет на Clojure, выше»

Считаю, что если бы не Clojure, команда должна была бы быть в два раза больше, чтобы успевать делать то, что делаем мы. К сожалению, прямо измерить мне непонятно как, но по наблюдениям разработчик после перехода на Clojure сначала, конечно, проседает в продуктивности, но потом с лихвой компенсирует это. Выглядит, как-будто сталкивание с локального максимума продуктивности ради большего пика. Я бы сказал, что это из-за высокой плотности кода, из-за выверенного набора инструментов (clojure.core, протоколы, экосистема, и т.д.), подхода работы с REPL’ом.

«На практике, мне кажется, что монады - термин, без которого можно было бы обойтись»

Классический вопрос функциональщикам: Что такое монады?
Тут, конечно, боль, потому что монады больше со статической системой типов применяются, а в Clojure - разве что поклонниками. Но всё равно, объяснение, которое мне «зашло», звучало так: если смотреть на код, как на строки, у которых в конце стоит точка с запятой, то точка запятой означает - исполни эту строку и перейди к следующей. А монады в данном случае — способ перезагрузки точки с запятой. Это способ сказать твоему рантайму, что между исполнением строчек необходимо что-то делать с контекстом. На практике, мне кажется, что придуман термин, без которого можно было бы обойтись.

Кто в твоей картине мира Senior/Middle/Junior специалисты?
Junior’ом я бы назвал того, кому нужно четко поставить задачу, помочь пройти сложные места и проконтролировать и код, и результат.
Middle — это человек, которого уже не надо держать за руку, и который самостоятельно будет выполнять нужные задачи.
Senior — специалист, который может решать проблемы.
Не буду оригинален, если скажу, что у нас в стране девальвировались определения относительно Европы/США. Лейбочки меняются очень быстро, но выгодность такой ситуации для аутсорса тяжело переоценить. :)

«Я не фанат долгих обсуждений и раздумий над архитектурными решениями, кроме случаев, когда назад дороги нет»

Какие ты себе задаешь вопросы прежде, чем принять архитектурные решения?
Я не фанат долгих обсуждений и раздумий над архитектурными решениями, кроме случаев, когда назад дороги нет :-). Обычно стараюсь придумать самое легкое в реализации решение, которое бы показало, какие вылезают вопросы. Когда в руках больше данных, решения принимать легче.
Звучит, конечно, легкомысленно, но практика показывает, что долгие раздумья в цель попадают не чаще, чем быстрые эксперименты, а времени и усилий тратится в разы больше.

«Бюрократия в личном времени мне дискомфортна»

Как проходит твой день как СТО в Kasta?
Каждый будний день, кроме понедельника, в 8:59 у топ-менеджмента компании стендап. Длится он пятнадцать минут и состоит из трех частей: хорошие новости, KPI предыдущего дня и планы на этот. В понедельник у команд планирование спринта, где я иногда участвую. А дальше не могу утверждать, что день расписан поминутно — есть встречи (и иногда их больше комфортного), есть обсуждения текущих вопросов. Программирую не много: иногда, чтобы провести эксперимент, иногда, чтобы решить какую-то боль, не отвлекая людей от спринта. В 2015 году, когда все расползалось в разные стороны, с тайм-менеджментом у меня не складывалось совершенно. А сейчас, после нескольких экспериментов, я понял, что бюрократия в личном времени мне настолько дискомфортна, что страдает уже эффективность.

«Увольнение сотрудников — самое неприятное в моей работе»

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

«Я даже делал несколько пауз в программировании на месяцы»

Случалось ли у тебя выгорание и как ты с ним боролся?
Прям регулярно случается. Я даже делал несколько пауз в программировании на месяцы. Каждый раз, правда, желание работать возвращалось: и скучно становилось, и кушать хотелось. Рад, что со временем Kasta и я нашли друг друга, баланс программирования и всего остального в моей жизни меня сейчас радует.

Как ты относишься к Open Source?
Open Source для большинства людей — это то, что хочется делать, в отличие от работы, где делаешь то, что надо. Для меня всегда опенсорс был фаном. Правда, на это тоже нужна энергия, поэтому последнее время я мало что делаю, кое-как поддерживаю только несколько живых проектов. Работа, двухлетний сын и сон занимают 110% моей жизни.

«Нет замены интересу и тысячам часов усердного труда»

Какой бы ты совет дал разработчикам, которые только в начале своего пути?
Когда я только начинал, проводил за программированием просто невероятное количество времени. Восемь часов на работе, еще часов пять дома, разговоры с друзьями были тоже не о сортах виски, как это сейчас. По-моему, нет замены интересу и тысячам часов усердного труда. Нет никакой «серебрянной пули» для изучения чего бы то ни было. На мой вкус, в нашей культуре слишком много внимания уделяется таланту, и слишком мало усердию. Единственное - следить, чтоб десять лет опыта не стали годом, повторённым десять раз, - количество должно переходить в качество.