«Мы это решение сделали, блин, в срок!» — 10 вопросов программисту, выпуск 5 +34


Продолжаем «Берлинские выпуски». Сегодня на вопросы отвечает Александр Сарайкин (hrenod), который помогает компаниям из Европы и США налаживать инфраструктуру.



Александру 31, он учился в аспирантуре в Пензенском Государственном Университете по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», но не закончил ее, потому что было не очень интересно. Начал работать на аутсорсе на немецкую компанию. Подучил немецкий, перебрался в Берлин, затем попал в стартап, где проработал около трех лет. В итоге осел в компании SourceStream и постепенно из программистов переместился в DevOps c фокусом на инфраструктуре, сервисах Amazon и других облачных провайдеров. Должность на визитке придумывает для себя сам. Сейчас там надпись cloud solutions architect. Тем не менее продолжает писать для внутренних проектов на PHP, а если клиенту нужно помочь — разберется в коде Ruby или Python.


Александр и питон

1. Расскажи о фиче, которую ты реализовал и которой гордишься.


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

BMW Group решила от этого избавиться, чтобы ты с карточкой одной «заправки» мог заправляться на любой другой. Это успешно запустили в Японии, потом в Европе, а теперь и в Штатах.

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

А горжусь я тем, что мы это решение сделали, блин, в срок! Это, наверное, единственный раз в моей карьере, когда удалось.

2. А теперь — про самый лютый факап.


История о том, как я научился ставить точку с запятой в начале команды — чтобы она не сработала. На всякий пожарный. Тот случай меня научил так делать. Я был еще программистом, а не инфраструктурщиком. Мы что-то делали прямо на проде. Я хотел скопипастить условия для удаления каких-то записей. А в конце этой копипасты был перевод строки, и команда применилась еще до того, как я успел что-то добавить. В общем, продакшн-база пострадала. Но, слава богу, была копия!

Для меня время тянулось очень долго, мне начальник писал: what are you doing? Но удалось исправить за час.

3. Опиши свое рабочее пространство: от кресла и монитора до сред программирования и любимых утилит.


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

Никакого выпендрежа типа поднимающихся столов мне не нужно. Но в своем офисе у нас приличные кресла — евро по 600. Не знаю, это крутые или нет? Но они удобные. В свой офис я прихожу и прямо отдыхаю. Там у меня три монитора. Хотя я могу и без них работать — просто на ноутбуке.



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

Работаю я в основном на Линуксе, Ubuntu. Приходится иногда брать Маки — протестировать, что у остальной части команды автоматизация будет работать как надо. Тот же Docker чтобы запустился с нужными mount’ами. Однажды мне нужно было запустить хитрое решение на Kubernetes, а потом оказалось, что еще и под Windows это нужно запустить. Пришлось разбираться, как поднимать что-то в Azure.

Пишу на Java, Scala, Node.js, Python, Bash… На чем угодно. Поэтому для программирования я использую IntelliJ IDEA. Причем у нас все по-взрослому — не community, а купленная лицензия.

И еще есть классная тема, которую я всем советую. У меня целая куча клиентов, и везде нужен SSH-доступ на сервера. Для каждого из клиентов я, естественно, создаю свой набор ключей и паролей. SSH-ключи по каждому клиенту я собрал в Keepass, и он эти ключи автоматически загружает в агент, когда ты анлочишь базу. То есть на диске они у меня никогда не сохранены. Получается, что закончил работу, залочил базу, и все ключи обратно свернулись.

4. По какому принципу ты выбираешь работу? Стек, продукт, бытовые условия, деньги?


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

По стеку я, конечно, выбираю. Смотрю, чтобы он мне был полезен в будущем.

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

А основной фактор, наверное — это время. Если клиент работает в американской временной зоне, я говорю, что могу работать вот в такие часы, а в остальное время — нет. Дело в личном удобстве, мне нужно организовать в течение недели время так, чтобы не приходить на работу сонным. Хотя бывало, что я в офис каждый день был к 5 утра четко, потому что очень переживал за запуск.

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

5. Что в технологиях и языках, которые ты используешь, ты бы хотел исправить?


Возможно, я всеми этими вещами уже долго занимаюсь, поэтому к технологиям привык. Но я однажды покупал себе новый комп — это был Lenovo X1 Carbon. И я так расстроился, когда мне самому пришлось писать драйвер для fingerprint-сканера! Дело не в высокой цене ноутбука. Lenovo себя зарекомендовала как бренд для девелоперов, гиков. И тут ты покупаешь их ноут, а Linux не видит половину устройств, и тебе надо что-то самому придумывать. Причем я на форуме читал, что этот сканер отпечатков пальцев поддерживается, а вышло, что нет.

Оказалось, я не один такой, и какой-то чувак взялся делать драйверы для этой серии устройств. Я к нему вписался, тоже накодил что-то и собрал свои звезды на гитхабе. Если не только мне помогло — это классно!

6. Где лучше перенимать чужой опыт — в вузе, на конфах, на хабре? Еще где-то?


У меня все-таки специфическая область, где я ищу решения инфраструктурных задач. Думаю, основные знания появилась со своих проектов. Когда ходишь по конференциям, тебе все продают свои решения, которые «шикарно взлетели». Ты набираешь примерно сто вариантов, но пока все не попробуешь сам, никто не скажет, какой лучше.

А в языках программирования какие-то паттерны, возможно, лучше описываются в статьях. Если у тебя предметная область предполагает event sourcing cqrs, то ты ищешь на Хабре event sourcing cqrs. Там, наверное, чуть поменьше «переменных», чем в инфраструктуре.

7. Будь у тебя неограниченные ресурсы (время, деньги, мощности, люди), каким проектом ты бы занялся?


Я бы попробовал сделать то, что приносит больше фана людям. Над такими вещами уже работают: тот же VR или SpaceX. Звучит прикольно. Хотел бы сделать то, что может даже не нацелено на получение прибыли. Возможно, что-то либерализующее коммуникации.

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

Вообще меня всегда интересует вопрос «что дальше». Я меняю специализацию примерно каждые пять лет. И вот вроде уже пора.

8. Как ты отдыхаешь? Что делаешь кроме работы?


Проблемный вопрос. Кроме работы я обычно беру себе еще какую-то работу. Но стараюсь общаться с людьми, ездить в другие страны. Когда ты выбираешься из привычной среды, общаешься с новыми людьми — вот это круто. Почему-то получается, что все равно оказываешься рядом с айтишниками. Но даже если тебя окружают 70% айтишников, людей с похожими взглядами на твои окажется максимум 5%. Будет столько разных мнений, что найдется, о чем поговорить.

Активный отдых — прикольно: все хочу в Альпы (благо рядом), но что-то никак — в основном куда-то в тепло езжу. Дроном учился управлять. Занимался стрельбой из огнестрела в «Объекте» и даже сдал зачеты для вступления в IPSC. Прошел обучение езды на мотоцикле, но права так и не получил.


Телефон — не только рабочий инструмент, но и открывашка, если правильно подобрать чехол

А иногда меня все это утомляет, и тогда я предпочитаю тупо поспать дома.

9. Расскажи про 3 любимые книги — учебную, научно-популярную и художественную.


  • Учебную литературу я не читал, по-моему, лет пять. Но когда проходил собеседование в ThoughtWorks, я читал книгу Фаулера, который там работает, по-моему, до сих пор.

    В офисе у нас лежат, конечно, книжки типа «PHP3», но их никто не читает, потому что они устаревают очень быстро. Их не успевают издать, а уже что-то новое появилось. Хотя многие считают правильным положить себе на стол книжечеку О’Рейли какую-нибудь. Любую. Если ты Scala-разработчик, то надо положить книжку по Scala. Еще бы с закладкой положили!
  • Из научно-популярного было прикольно почитать Нила Стивенсона. Последняя была — «Семиевие». Там у него про космос фантазии. Но он старается быть очень приближенным к науке, пользуется помощью экспертов. А до этого у него была классная книга «Криптономикон». Всем советую.
  • А если совсем художественную, то понравилась «Атлант расправил плечи». И совсем в молодости читал «1984». Но самое интересное, что такого рода книги более актуальны для меня стали сейчас, чем тогда. Читаешь и думаешь: нифига себе!

10. Если прямо у тебя на глазах в ИИ проснется сознание, что ты ему скажешь?


Был такой классный фильм «Военные игры». Там компьютер пришел к выводу, что единственно правильное решение — это не играть. Так что я бы подкинул ИИ такую наводку. На всякий случай.

А если серьезно, то я таких вещей не опасаюсь. Это наоборот все интересно и прикольно.

Вопрос от предыдущего гостя


Осознай ты себя бессмертным или не стареющим, преодолевшим стандартные 70 лет раза два – три, как бы ты продолжал жить?

Думаю, набрав богатый жизненный опыт, я постарался бы тратить время на что-то по-настоящему важное, а не всякую ерунду, которой занимаюсь сейчас.

Бонус: задай вопрос другому разрабу


Предложи стратегию прокачки после первых 5 лет работы программистом. Что дальше?




К сожалению, не доступен сервер mySQL