Егор Балышев: путь от джуниора до архитектора

Дмитрий: Привет, Егор.

Егор: Привет, Дима.

Дмитрий: Большое спасибо, что ты согласился принять участие в интервью. На самом деле мы – я уже так посчитал – мы знакомы уже 10 лет.

Егор: Прикинь, 10. Охренеть.

Дмитрий: Да.

Егор: Довольно долго.

Дмитрий: Егор это именно тот самый человек, который научил меня выходить из Vim в свое время. Поэтому у меня такой проблемы никогда не было – как выйти из Vim. Я узнал про этот редактор и сразу же научился из него выходить. Поэтому я, наверное, так гармонично с Vim’ом слился и довольно часто использовал в своей работе.

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

Егор: Пожалуйста. Я думаю, сам научился за это время тоже много чему. Просто общаясь с другими людьми.

Дмитрий: Да. Расскажи маленько про свой путь, Егор. Как ты вообще в программирование-то попал?

Егор: Путь. Я помнил, что у нас будет интервью. Вчера или позавчера думал о том, что бы такое рассказать. Наверное, самая первая программа, которой я бы мог гордиться, то есть с чего все началось – это было еще в школе – это был школьный алгоритмический язык программирования, где исполнитель робот-чертежник, вот эта вся фигня. И в каком-то классе, в 9-м что ли, у нас была информатика прям вообще отдельно. В смысле в школе не было ни одного компьютера, мы ходили в другую школу раз в две недели.

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

И со звездочками у меня тоже это был прям целый такой проект маленький, потому что как рисовать звездочки? Понятно, что можно заморочиться углами, геометрией и всякой такой фигней. Но это мне показалось скучным и нудным, и считать было долго. Поэтому я взял кальку, взял лист в клеточку, нарисовал звездочку, померил все коэффициенты и просто захардкодил их, грубо говоря, в алгоритме. Учитель информатики была прям сильно удивлена, такая: «А-а, ни фига себе! Три елочки, все разных размеров, и звездочки какие четкие получились». Это была моя первая программа.

С этого, наверное, начался мой… Я понял, что мне это интересно – компьютеры. Собственно, потом был универ. Первое мое место работы было такое странноватое, в Красноярске это был Институт повышения квалификации работников образования, по-моему, так назывался. Красноярский краевой институт повышения квалификации работников образования. Там я встретился с одним очень прикольным чуваком, которому было не все равно в разных областях и который хотел создавать всякие разные проекты в интернете. И для этого мне пришлось выучить PHP, мне пришлось читать мануалы по MySQL’ю, по Apache, все такое, потому что я все настраивал сам, писал всякую штуку. Что-то вроде Википедии писали мы тогда. И, пожалуй, да, это был мой самый первый проект.

После Института повышения квалификации я устроился работать в еще одно такое, довольно странное место. Оно называлось «Сетевая артель «Невод». И там мы писали все подряд. По сути, это была компания одного из руководителей подразделения в «Краснете», тогда это было. То есть, по сути, был чувак, который руководил техническим отделом – тогда это был «Краснет» – и у него была компания, которая могла выполнять какие-то подряды для людей, с которыми он общался по работе просто. Типа протянуть сеть, настроить компьютер, установить 1С-ку и все такое, разработать что-нибудь.

Дмитрий: «Краснет» это интернет-провайдер такой. Один из первых был в Красноярске.

Егор: Да. По сути, он потом стал просто государственным. То есть сейчас это подразделение «Ростелекома».

И в этой компании я получил довольно много опыта просто разработки вообще любой фигни. То есть там был на поддержке биллинг, биллинг для интернет- провайдеров обычных. Потом был на поддержке такой типа интеренет-провайдерный хаб для модемов вообще. То есть начиная прям с железяки, которая ставится на АТС, на которую заходят телефонные линии, и заканчивая опять же софтом, который деньги снимает. Плюс там же мы разрабатывали сайты, то есть это был, опять же, PHP. Там же я познакомился с Perl’ом. Потому что биллинг был частично на Perl’е, частично на C, частично на хранимых процедурах в Postgres’е – короче, каша. Но на этой работе я получил довольно много опыта в плане того, что просто, как сопрягать разные технологии, и все такое.

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

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

То есть результат моей работы там, единственное, что я могу сказать, это – после себя я оставил корпоративный сервер Counter-Strike’а. Прям в серверной, с ботами – заходи и играй в любой момент, у тебя всегда будет, с кем поиграть. Пожалуй, самый запоминающийся результат оттуда.

И оттуда я перешел, собственно, в «Метадизайн». «Метадизайн» тогда, когда я туда попал, это был такой небольшой офис на 12 квадратов. Там было… Сколько же нас там было? Там было 4 чувака, я был 5-ым. В «Метадизайне» я стал серьезно программировать на Perl’е. Пожалуй, это основное было. MySQL, потом мы стали переходить на Postgres. Писали-писали сайты, потом, собственно, пришел ты туда, Женя Долгов. Потом был наш «Мэдрокет», там у нас тоже было много всего интересного.

Дмитрий: Который не взлетел.

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

После «Мэдрокета» я вернулся опять в «Метадизайн». Поскольку мне, наверное, тогда казалось, что все-таки тема разработки сайтов это, с одной стороны, интересно, с другой стороны, в «Мэдрокете» ресурсов совсем было недостаточно для этого. Я подумал: «Окей, я понимаю, как это надо сделать, но мне нужны ресурсы. И я попробую это сделать на базе «Метадизайна».

Я туда вернулся и, в общем-то, плотно занимался отделом разработки сайтов. То есть я обеспечивал техническую часть, скажем так. CMS-ку мы там писали и с разработчиками мы вместе работали, улучшали процессы, улучшали технику, технологии. И был еще один чувак тоже в «Метадизайне», который улучшал продажи – Жека Затыльный.

Отдел разработки сайтов, в общем-то, взлетел до какой-то степени. Потому что разработка сайтов в Красноярске все равно не суперприбыльное дело в любом случае. Поэтому, если об этом не думать, то в «Метадизайне» отдел разработки сайтов взлетел весьма неплохо. То есть, насколько я знаю, CMS-ка эта, которую мы тогда еще разрабатывали, до какой-то степени все еще используется там. Что-то уже поменяли, понятное дело. По-моему, шаблонный движок переделывали. Не знаю насчет ORM-а, старый он остался или нет. Она теперь немножко другая, но все еще используется до сих пор. Это получается…

Дмитрий: ORM достаточно прожорливый там был по памяти, на самом деле.

Егор: Да, это была PHP-шная копия джанговского ORM, старенького такого, в некоторой степени. Плюс с наворотами со своими.

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

Короче, было много итераций по поводу того, как это все улучшить, как сделать ТЗ проще и как менеджеров обучить, как работать с заказчиком, на каком моменте, когда рисовать прототипы. Короче, больше, скажем так, процессы. Уже именно не разработка, а процессы.

После того, как отдел разработки сайтов, в общем-то, взлетел в какой-то степени, то есть стал самодостаточным, я постепенно оттуда вышел и стал заниматься внутренними проектами. Это 24auto, redom – вот эти все штуки метадизайновские. Стал активно изучать Python.

И как-то стала больше отделяться внутри «Метадизайна» команда, которая занимается внутренними проектами, типа «серьезными делами», и чуваки, которые делают сайты. Хотя, на самом деле, сайты тоже в какой-то степени серьезные, но немножко другой уровень. Потому что на сайтах, там не нужно было думать о большой нагрузке на приложение, не нужно было думать о каких-то оптимизациях. Больше было важно сделать, чтоб все было красиво и вовремя. То есть другие немножко цели.

Да, следующий карьерный этап это в «Метадизайне», получается, я стал руководителем внутреннего отдела разработки. То есть сначала я был просто, скажем так, старшим программистом, одним из. Я был, и Саша Щипановский. После этого, когда программистов стало больше и больше во внутреннем отделе разработки своих проектов – мы отделились – я стал руководителем там. Помимо того, что я там неплохо выучил Python и познал много всего в плане оптимизации софта, в плане нагруженного софта и таких вещей, я еще довольно неплохо там, опять же, прокачал управление людьми и управление процессами именно такой маленькой организации, как команда программистов.

Мы там внедрили Scrum в своем время, причем внедрили интересным образом. Когда я из «Метадизайна» уходил – понятно, я руководитель отдела – нужно было типа передать дела. И поскольку мы занимались уже где-то год Scrum’ом таким своеобразным, мы занимались в некоторой степени экстремальным Scrum’ом, что у нас каждый делал вообще все что угодно. То есть и разговаривал с дизайнерами, и писал ТЗ, и все такое.

Поскольку мы это делали, когда руководитель, то есть я, увольнялся, я не передавал вообще ничего. То есть прям вообще ноль. В смысле я пришел к Теме, к директору, сказал: «Все, Тема, я ухожу». Он такой: «Окей. Давай, надо понять, что тебе там передавать, кому. Понять, кого вместо тебя поставят руководителем, и кому передать». А я сел думать, что же мне надо передать, и понял, что нечего вообще. То есть реально передавать совсем нечего. Это было прикольно. Это был такой опыт внедрения именно технологии менеджмента, который мне, я думаю, очень неплохо пригодился.

После этого я пошел во фриланс. Фриланс у меня тоже был своеобразный, потому что я просто нашел себе чувака из Канады, на которого просто работал за фиксированные деньги. Какое-то время это было интересно, потому что там я мог применить свои технические какие-то знания. В смысле у меня не было ограничений, это проект был, я там был один-единственный разработчик. Плюс еще иногда мы хайрили всяких чуваков других, чтобы мелочи делать. Там у нас тоже были все эти: Python, Elasticsearch, Postgres был, Mongo был. Короче, всякое барахло, там своеобразный был проект.

В какой-то момент мне это надоело, и поскольку ты тогда периодически меня бомбардировал этими резюме из Германии…

Дмитрий: Нет. Я, на самом деле, не тебя… Да, тут маленько вставлю. Я не думал, что ты откликнешься на эту вакансию. Понятное дело, что в “Xing’е” за реферала был довольно неплохой бонус. И я был тоже материально заинтересован кого-нибудь пригласить. С одной стороны, материально, с другой стороны, был заинтересован пригласить кого-нибудь из своих знакомых, чтобы они жили в Гамбурге и работали со мной в компании “Xing”, которую я очень любил и люблю.

И для меня это было такое, стратегическое решение, потому что я сам хотел перейти в отдел архитекторов, и была вакансия. И я ее просто скинул в надежде, что кто-то из руби-ребят ее подхватит, из нашего этого Крас Дев-митапс-сообщества. А откликнулся почему-то именно ты.

Егор: Да, это было интересно, потому что в тот момент я устал уже сидеть в этом стартапе странном, который с одним разработчиком. Там, короче, был такой проект, нацеленный на крупные компании и безопасность. Типа профиль безопасности компании, разные угрозы и все такое.

Чувак, который меня нанял, он айти-консультант в сфере безопасности и смежных областях. И он очень хорош в том, чтобы идеи генерировать и как-то их, до какой-то степени толкать. Но толкать их до конца, чтобы кто-то что-то купил или чтобы понять, какие части продукта нужно доделать, чтобы купили – у него как-то это прям совсем не срасталось. Понятное дело, деньги он мне платил, но мне просто стало неинтересно, потому что я увидел, что импульса, чтобы толкнуть проект и он реально кому-то был нужен – нет у этого чувака.

Я понял, что скучно, надо что-то думать. И мне захотелось пойти куда-нибудь в такое, большое место, где много разработчиков, где много задач всяких разных, где какая-то серьезная нагрузка. Что-то большое такое, прикольное. И как раз подвернулась эта вакансия в “Xing’e”, там это был отдел архитекторов. Я, честно говоря, плохо уже помню, что там было написано. Наверняка что-то не совсем адекватное, как обычно в вакансиях. Такое…

Дмитрий: Там было довольно адекватное. Я думаю, что вакансии в “Xinge’e” без воды. То есть если ты архитектор, там нужно было знать несколько языков, понятное дело.

Егор: Да, по-моему.

Дмитрий: И самое интересное, что Руби не был обязательным. То есть несмотря на то, что “Xing” это по большому счету Ruby on Rails shop, они для архитекторов говорили, что тебе нужно знать Perl, Ruby и JavaScript, или еще что-то. И, в общем, выбери два, два любых. И два любых попадало – Perl и JavaScript.

Егор: Да, да. У меня был Perl и JavaScript, да. И я им задание тестовое писал, две версии: одну на Python’е, другую на Perl’е. Думаю, мало ли. И получилось, что вакансия эта, она как раз попала в то, чего мне хотелось попробовать. Съездил на собеседование, мне все понравилось. Я еще попал в хорошую погоду, что очень интересным образом повлияло на мое мнение о городе в начале. Да нет, на самом деле город мне нравится, просто мне тогда повезло реально, потому что дождя ни один день не было.

Дмитрий: Да.

Егор: Солнце светило, что, на самом деле, не частое дело в Гамбурге.

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

Егор: Да.

Дмитрий: И я знал, что они хотят услышать. Я знал, что они хотят найти в резюме. Но я помню еще один момент, что – как обычно я всем говорю – что если вы собираетесь посмотреть работу за рубежом, то желательно наметить себе такое турне, две-три компании чтобы у вас были. И я помню, что ты сказал: «Нет, я хочу именно в “Xing” и я не буду заниматься фигней. Я сюда нацелился, я сюда пройду, либо попробую пройти».

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

Дмитрий: В Гамбурге да, я согласен, что тут… Берлин, может быть, Мюнхен, иногда Франкфурт. Гамбург последние годы более поднимается в IT.

Егор: Да. Но, опять же, вакансия архитектора это прям большая редкость, на самом деле.

Дмитрий: Да.

Егор: Больше вакансий типа где-то middle, где-то так. Даже запросов таких на то, что прям нужен senior-чувак для того, чтобы поднимать команду, уже не часто встречаются. Или архитектор, то есть вот таких.

Дмитрий: Тут секрет очень простой. Они обычно этих людей находят через реферальную сеть. То есть эти вакансии просто не выходят даже на рынок.

Слушай, раз уж мы договорили про “Xing” и про собеседование, тебя спрашивали на интервью, почему ты хочешь работать в “Xing’e”?

Егор: Кажется, да. И я тогда перед интервью, на самом деле, перед всеми, я посмотрел этот видос, который ты мне рекомендовал, про этого чувака из Америки, про вопросы работодателю и все такое. И я один из этих хороших вопросов работодателю задал в такой момент, что девушка эта из HR, она такая, типа: «Упс, сейчас мне что-то надо отвечать, и я не готова». То есть я ее несколько раз вот реально просто подрубил с лету этими вопросами.

Поэтому у меня как-то с HR собеседование прошло довольно гладко для меня. И я ответил что-то типа такого, что мне интересно посмотреть, как это, работать в большой компании, потому что мне скучно там, где я сейчас работаю. Мне интересно попробовать новые языки программирования, то есть Ruby, например. Ruby я вообще не знал, даже не пытался учить. Я об этом открыто заявил, что да, я Ruby не знаю, но мне интересно его поизучать. Что-то такое, по-моему, я ответил.

Дмитрий: Да. Но это вот как раз таки обозначает тот самый… То есть это Михаил Портнов, это ролик, о котором мы говорим. И он говорит, что этот вопрос, в частности, относится к вопросам про жизненный путь. И когда ты умеешь показать, что твой жизненный путь проходит через эту компанию, то ты отвечаешь правильно на этот вопрос. И получается, что у тебя сложилось так, что твой жизненный путь проходил через эту компанию. Ты хотел поработать в большой компании, с большими проектами, изучить язык, который эта компания применяет. Это вот один из примеров, как можно ответить тоже на этот вопрос, на мой взгляд.

И ты по сей день теперь работаешь в “Xing’е”.

Егор: Да. Рассказать, наверное, про то, что там, в “Xing’е”?

Дмитрий: Это мы, наверное, вернемся. Вот просто смотри, с тех пор как я тебя знаю, ты осознанно или неосознанно, но ты так или иначе выполнял роль старшего программиста что ли. Мне кажется, что это с твоей личностью очень пересекается, то есть брать на себя ответственность и как-то пытаться вести за собой людей так или иначе. Хотя, насколько я знаю, что, по крайней мере, по твоим историям, работа перед «Метадизайном», ты какие, эти ворк сторис рассказывал. Ты там не был де-факто senior, но некоторые вот эти моменты, они, так или иначе, обозначали тебя как человека, который более senior-уровня.

И я что хотел спросить-то? Как ты вообще… Наверное, если ты это неосознанно делал, это как-то сложно ответить будет на этот вопрос. Но тем не менее как ты понял, что ты уже не junior, например, и как вообще трансформация у тебя происходила? И в какой момент вообще ты осознал, что, наверное, я вот уже senior?

Егор: Это хороший вопрос. Тут, наверное, надо начать с того, что я вообще понимаю под словом senior. Junior, middle, senior – вот эта иерархия. Ты говорил заранее, что мы о чем-то таком будем говорить. Я думал о том, что может быть хорошим примером senior и вообще подхода, и вспомнил про «Криминальное чтиво», про фильм. Там был такой момент, где Джулс и Винсент ехали в машине с одним из парней, которого они забрали из квартиры.

Егор: И случайно Винсент ему башку прострелил. И там вся машина в кровище. Они заруливают к знакомому, к этому Джимми. И у них проблемы: у них тачка, вся уделанная мозгами, у них труп без головы, они все в крови сами. И Марселлас, типа этот босс их, присылает им чувака, который решает проблемы – мистера Вульфа.

Дмитрий: Да.

Егор: Мистер Вульф это senior. Прям супер-senior, потому что мистер Вульф приезжает и он сразу разруливает, кто что должен делать, он успокаивает владельца дома, Джимми. Я специально пересмотрел этот момент, там прям все четко, идеально. То есть он, когда они, например, пошли смотреть эту машину всю в мозгах, он владельцу дома, который явно на нервах – блин, ему привезли тачку с трупом внутри – он его отправляет, говорит: «Джимми, сделай мне кофе, пожалуйста». И все, и он уходит. То есть прям четкая такая манипуляция, чтобы успокоился.

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

И я думаю, я стал приближаться к senior’у (для себя), когда я это осознал. Что на самом деле программирование, вот эти все разные способы построения софта, разные базы данных, функциональные и нефункциональные языки – это все инструменты опять же. Инструменты решения задачи, которая к тебе приходит вместе с клиентом. И, соответственно, опять же, еще один момент это…

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

Дмитрий: То есть думать на несколько шагов вперед.

Егор: Думать на несколько шагов вперед и думать с позиции именно решения проблемы, с которой к тебе пришли – вот это senior для меня.

Дмитрий: Я думаю, что тут тоже следует заметить, что клиент это не всегда бизнесмен с деньгами. Иногда, например, в “Xing’e” у вас внутренние клиенты.

Егор: Да, у нас…

Дмитрий: То есть это другие команды, другие разработчики.

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

Дмитрий: Да, и это очень такой, хороший подворот. Чем вообще занимается архитектор программного обеспечения? Вообще, что такое… Я знаю одного архитектора, senior software architect, и этот чувак, у него две мастерс, одна computer science, вторая – архитектура.

Егор: Это смешно, на самом деле. Вообще, в “Xing’e” интересно в этом плане, потому что он, с одной стороны компания довольно гибкая, с другой стороны, бюрократия все равно присутствует. Плюс – это же немецкая компания, там же должно быть все документировано и по полочкам, да?

Дмитрий: Да.

Егор: Поэтому в “Xing’е”, я думаю, органично появилась такая, со временем, как он рос, ему 10 лет, по-моему, компании уже, или 11, или 9.

Дмитрий: Где-то так.

Егор: Около 10-ти лет. В какой-то момент разработчиков стало становится все больше и больше, и больше. И потребовалась нужда в команде, которая будет – типа разработчики-отцы, скажем так. Которые типа рулят и к которым можно прийти, если все сломалось, все сгорело и беда – и они разрулят. Короче, такая команда мистеров Вульфов вот этих.

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

И в “Xing’e”, я так понимаю, это junior, по-моему, там есть, потом просто инженер, senior-инженер и архитектор.

Дмитрий: На самом деле там, если мы вспомним ПДД…

Егор: Есть еще организационные.

Дмитрий: То есть ты можешь… И вообще, это не только в “Xing’e” так. То есть когда ты становишься senior engineer, у тебя, по сути, есть выбор дальше: либо ты идешь в team lead’ы, либо ты идешь в архитекторы. И иногда есть еще такая должность, как lead engineer или principal engineer.

Егор: Да.

Дмитрий: Principal engineer это обычно уже верхушка технического инженера, не руководителя, скажем так.

Егор: Да.

Дмитрий: Да, вот в “Xing’e” еще есть такая ступенька, это software architect.

Егор: Да.

Дмитрий: Software architect это немножко повыше, чем senior, но пониже, чем lead.

Егор: Там, видишь, на самом деле не совсем так. То есть я из этого диапазона исключил совершенно руководящие должности, даже немножко руководящие. Потому что team lead и lead engineering, и вот это все – это уже немножко руководство.

Дмитрий: Да.

Егор: То есть это уже уход на параллельную ветку. А именно инженерно-техническая ветка это senior, архитектор. И есть одна-единственная позиция, типа principal architect.

Дмитрий: Да.

Егор: Ее занимает Штефан, наш босс.

Дмитрий: Да.

Егор: То есть там в одном-единственном количестве есть такая позиция, вакансий нет. Он, я думаю, до пенсии будет там работать, скорее всего.

То есть одна часть архитекторов в “Xing’e” это такой способ дать должность крутым инженерам, которые круче, чем senior, их как-то надо назвать. С другой стороны, это подразумевает то, что у тебя, по сути, нет твоего софта или мало твоего софта, который ты разрабатываешь. Но ты влияешь на большое количество софта, как его разрабатывают другие люди.

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

Дмитрий: Да.

Егор: Но это было тоже довольно прикольно. Это вторая часть этого названия «архитектор», которая, в общем-то, отражает суть. То есть мы реально помогаем проектировать программы, продукты.

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

Егор: Да, именно так.

Дмитрий: И именно, если ты остаешься senior software engineer, но тебя просто переводят в какой-то отдел, обосновать прибавку к зарплате тебе больше 5% обычно нечем. И иногда получаются такие, не фиктивные, а просто промежуточные должности, которые нужны, просто чтобы обосновать большую зарплату или прибавку к зарплате.

На самом деле, тоже была такая еще статья, по-моему, один из фейсбука, не важно, я не помню, кто автор. И, в общем, там была суть такая, что в зависимости от размера команды уже начинается такое… То есть, получается, если у вас команда, по-моему, до 100-та человек или до 20-ти человек, то программисты могут сами организоваться. Если программа – 100 человек, то у тебя 10 человек должно заниматься уже просто тулингом и…

Егор: Да, я помню эту статью.

Дмитрий: И потом это растет. И причем это растет прогрессивно, то есть это нелинейная зависимость. И я думаю, что отдел архитекторов в “Xing’e” так или иначе выполняет эту связующую роль для “Xing’a”.

Егор: Да.

Дмитрий: Слушай, вот смотри. Может показаться, что быть архитектором это вообще, как сказать, это в сказку попал. То есть это самые интересные задачи, самое, там, все клевое.

Егор: Да, но не совсем.

Дмитрий: Да. Давай про это, про…

Егор: Плохая сторона архитекторов. Поскольку архитектор это, по крайней мере, в “Xing’e” это такие чуваки, которые знают платформу целиком… Я расскажу немного про платформу, что значит платформа. “Xing” это веб-сайт, который на самом деле не просто веб-сайт, там внутри целая куча всего, куча купленных компаний мелких, интегрированных в веб-сайт. Ты в курсе, я рассказываю для тех, кто смотрит это.

Дмитрий: Да, конечно.

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

Соответственно, сайт развязан на приложения, сейчас этих приложений уже больше сотни. И архитекторы, то есть мы, в “Xing’e” мы делаем штуки, которые все приложения, помимо всего прочего, еще и склеивают. То есть у нас, например, MQP-сервера наши с дополнительными наворотами для гарантированной доставки сообщений – это наша тема. Rest API, через который работают приложения, все общаются между собой: как называть параметры, как оно все должно работать, клиенты для Rest API со всякими разными настройками – тоже наша тема. Некоторые джемы для Ruby, для рельсов – тоже наша тема.

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

Потому что бывает такое, что, например, какой-то отдел, где программистов до этого особо не было, они нанимают несколько фрилансеров в надежде, что те им сделают что-то сейчас крутое. Фрилансеры приходят к нам, в наш чат архитекторов и начинают спрашивать прям вообще все с самого начала, типа: «Как вы пишете приложения на Ruby? А где? А какие джемы? А базы данных? А где мне взять сервера?». И ты в результате занимаешься онбордингом просто левых чуваков. Это минус.

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

Егор: Да.

Дмитрий: А этого человека нет, и это тогда тоже…

Егор: Да. И в “Xing’e” это тоже часть работы архитектора. Помимо этого что еще бывает не очень интересное? Мы по умолчанию владельцы всяких разных миграций со старого софта на новый. То есть “Xing” в свое время был написан полностью на Perl’е, это был такой Perl’овый монолит. И куски этого Perl’ового монолита все еще в строю, они все еще работают.

Дмитрий: До сих пор.

Егор: Мы владельцы по умолчанию, архитекторы. Мы владельцы этого монолита, остатков. Я не знаю, сколько от него осталось. Не сильно много на самом деле, но все равно еще осталось. И когда с ним какие-то проблемы, с монолитом, мы в нем ковыряемся. Когда монолит нужно, кто-то, например, собирается наконец-то отпилить кусочек монолита и сделать это отдельным приложением, либо себе что-то перенести из этого кусочка – опять же, мы должны влезть туда и помогать, что, в общем-то, не сильно интересно, на самом деле.

Первое время, конечно, интересно, ты смотришь на этот монолит: «О, какой прикольный». Ты смотришь шаблонный язык, свои коннекторы в базе данных, свое то, свое се. Обычный такой, старый, самодельный Perl’овый фреймворк. Но потом это уже неинтересно, но тебе все равно периодически приходится к нему возвращаться, к этому монолиту. Это тоже такой минус бытия архитектором в “Xing’e”.

Дмитрий: Да.

Егор: Что еще может быть такого, негативного? Некоторые у нас ребята, например, устают в какой-то момент от рельсов уже. Но вопросы по рельсам не прекращаются, потому что новые разработчики приходят, старые разработчики находят новые косяки. То есть тебе постоянно приходится разговаривать про рельсы, ковыряться в рельсах. Не знаю, мне пока это нравится. Кому-то, я знаю, из команды это надоедает, и люди иногда уходят просто, либо во что-то другое. Потому что, если тебе в архитекторах… Самое главное, у нас есть еще такая должность – архитектор недели. Не должность, а обязанность.

Дмитрий: Как on call.

Егор: Как on call, да. У нас есть канал в корпоративном чате – архитектура, где как раз эти все вопросы и задаются, типа: «Как мне подключить этот джем?» и все такое. И раз, наверное, в три недели сейчас или в четыре недели ты целую неделю сидишь в этом канале, это твоя основная задача – отвечать на всякие дурацкие вопросы. Это прям тоже неприкольно. То есть ты ничем не можешь толком заниматься, потому что в любой момент тебя могут дернуть и оторвать в какую-нибудь сессию дебаггинга какой-нибудь дебильной проблемы. Или в интересную проблему, тоже может быть. Или в дебильную проблему. Но чем-то своим ты не можешь заниматься архитектурным, потому что ты должен сидеть в этом канале. Тоже не круто.

Дмитрий: Да. Слушай, здорово. Но получается, что у тебя был менеджерский опыт и team lead’а. То есть в «Метадизайне» ты же и нанимал и увольнял людей, насколько я знаю.

Егор: Да.

Дмитрий: И сейчас ты, получается, вернулся обратно и свернул на чисто технический путь развития инженера. Ты как-то не планируешь… Как ты видишь себя через 5 лет?

Егор: Да, хороший вопрос. На самом деле, в “Xing’e”, получается, я туда инженерной ветки прокачивания видел несколько целей. Понятно, выучить Ruby, причем Ruby, рельсы имеется в виду, просто Ruby никому не интересен обычно. Выучить рельсы в масштабе такой большой организации, посмотреть вообще, как это все в большом масштабе работает. Вообще, в общем: что мы делаем с серверами, как ими менеджируем, как мы управляем базами данных и все такое. То есть вот этот аспект, я думаю, я уже прокачал достаточно.

Следующее, чего мне хотелось в “Xing’e”, это что-нибудь сделать масштабное. У нас из масштабного мне, наверное, понравилось, это, пожалуй, такое прокачивание скилла, это миграция была у нас, когда мы отпиливали один из кусочков монолита. И кусочек этот был серьезно связан с ядром “Xing’a”, это была база данных дружбы пользователей.

Дмитрий: Да.

Егор: Это самое главное, по сути, все, что там есть.

Дмитрий: Потому что там join просто и его нельзя было просто так…

Егор: Да. И эту базу данных нужно было перенести из базы данных монолита, переписать весь код API, который с ним работает. Сама таблица дружбы это было, по-моему, то ли 400 миллионов записей, то ли 600. Короче, большая. Ее нужно было перенести в другую базу и переделать структуру, и все это на лету, так, чтобы никто не заметил вообще. И я был архитектором в этой задаче, то есть я проектировал основные моменты. И оно все прошло четко. Это был тоже клевый опыт, такие миграции. Потому что мало в каких компаниях можно такой опыт получить.

Дмитрий: Да.

Егор: И он ценный.

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

Егор: Да.

Дмитрий: И иногда бывают самые хардкорные задачи, которые тебя переносят на другой уровень. Тут можно, наверное, вставить ту гифку, где мужики на ходу у машины меняют колеса.

Егор: Типа того. Только там была не машина, а поезд с где-то тысячью вагонов.

Дмитрий: Да.

Егор: Правые колеса надо поменять все.

Дмитрий: Я, на самом деле, слышал отзывы, что ты с этой задачей очень блестяще справился, прям такие отзывы, да.

Егор: Отлично. Я рад. Это следующий был для меня шаг, то есть такие технические моменты, которые я, в общем-то, уже трогал, но которые я не трогал на большом масштабе. Это тоже, в общем-то, выполнено.

Собственно, сейчас еще есть одна интересная задача, которую я, наверное, кроме как в “Xing’e” или такого же масштаба компаниях не смогу нигде попытаться решить. Это мы переходим на облачные такие системы, на Kubernetes мы переходим внутри компании. И я в этом проекте тоже участвую. Когда он завершится, надо будет думать, что делать дальше.

Что для себя я вижу дальше, как себя вижу, как специалист. В плане инженерном, наверное, дальше идти куда-то уже сложно. Потому что можно либо углубляться куда-то совсем, типа пойти в НАСА, например, делать зонд для спутников и учиться хардкорному C. То есть такие узкие области, в принципе, возможны. Либо все-таки опять возвращаться к чему-то вроде lead’a, наверное. Потому что у меня есть ощущение, что я обладаю знаниями об инженерной стороне дела больших таких компаний уже достаточно. И, в принципе, теперь, зная инженерную часть этого дела, можно попробовать рулить этим процессом, куда-то идти.

Наверное, я думаю, в ближайшее время я буду, скорее, смотреть в строну каких-то более руководящих позиций. То есть что-то типа lead’a или в этом духе, скорее всего. Потому что инженерные штуки уже, по крайней мере, на уровне “Xing’a” начинают наскучивать.

Дмитрий: Я с тобой согласен. Это уже, мне кажется, надо тогда… Если прям вот так нацеливаться, то это нужно в одну из тех компаний в долине. То есть или в “Google”, или в “Facebook”, в определенный отдел, скажем так. Или, возможно, даже в «Теслу». Или даже в “SpaceX”. У них есть там вакансии, вакансии в “SpaceX”, можно пройти собеседование, в принципе.

Егор: Да, вполне.

Дмитрий: И идти работать.

Егор: Это прикольно.

Дмитрий: Да. Я с тобой согласен, что в определенный момент как технический специалист ты утыкаешься. И тут встает вопрос, собственно, что делать? Либо ты говоришь: «Окей, мне этого достаточно. Я осаживаюсь здесь, сижу здесь и доживаю до пенсии». Либо начинаешь искать какие-то новые для себя горизонты.

Егор: Да. Для меня, наверное, все-таки менеджмент это более интересная вещь, чем просто оставаться инженером. Потому что мне действительно нравится как-то вести людей, разруливать процессы в плане того, как вся разработка софта идет со стороны сотрудников, со стороны клиентов, взаимодействие. Потому что, по крайней мере в архитекторах, в “Xing’e” это уже четко видно, что софт, технология это не проблема.

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

Дмитрий: Да, конечно. То есть тут, когда ты идешь… Опять-таки книга, которую я постоянно рекомендую, это “The Manager’s Path”. Она, конечно, это никакое не исследование, это просто сборник, можно сказать, war stories. Но тем не менее там очень тоже это четко прописано, что у тебя должен быть хороший технический бэкграунд, чтобы идти и управлять. То есть идти и становится director of engineering – ты должен понимать, что они (программисты) делают.

Егор: Да.

Дмитрий: И, вообще, автор даже рекомендует, что ты, в принципе, должен быть способен все еще там какие-то чинить мелкие баги, когда это нужно. Особенно если это какой-то средней руки стартап, где всегда не хватает людей, а багов хватает.

Егор: Да. Даже в “Xing’e” такое же дело.

Дмитрий: Даже там.

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

Дмитрий: Слушай, я хочу сейчас немножко такой флешбэк сделать и задать такой вопрос, каким junior’ом ты себя помнишь? То есть, если посмотреть ретроспективно, какие качества тебя, как junior’a, твой путь определили?

Егор: Хорошее, наверное, качество, такое, которое до сих пор со мной, это желание ковыряться и доковыриваться до основы, до того, почему что-то происходит. И желание разобраться в том, как что работает. Можно просто взять и поставить MySQL из коробки, например. А можно попытаться понять, как операционная система работает, что MySQL делает с операционкой, где он, как хранит файл, как это все в память загружается, как настроить операционку, как ее установить правильно. Попытаться – в свое время было – скомпилять это, типа монолитное ядро. И все такое. То есть это вот мой путь.

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

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

Дмитрий: Слушай, на самом деле, это очень сильно резонирует с тем, что я обычно тоже говорю и рекомендую, когда меня спрашивают, что изучать. Я обычно говорю, что нужно базовые вещи, те самые переносимые навыки, которые ты можешь перенести из области в область программирования независимо от того, что ты делаешь, они важнее. То есть получается, что язык программирования… Например, какой язык выучить, Ruby или Python’а – это вообще пятый вопрос.

Егор: Согласен.

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

Егор: Да.

Дмитрий: Это не написание красивого кода.

Егор: Да. Красный кубик или зеленый, не важно.

Дмитрий: Да.

Егор: Важно, чтобы он встал в хорошее место и послужил опорой или эстетическим элементом конструкции.

Дмитрий: Правильно будет, если я скажу, что вот это то, что тебе нравится в программировании, да?

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

Опять же, это желание разобраться, как все работает. То есть ты фокусируешься, посмотрел, как оно тут работает. Отошел назад, сфокусировался туда, все это на микроуровне сделал, отошел, и оно работает все на макроуровне. В этом я нахожу удовольствие, да. То есть такое упорядочивание всего.

Дмитрий: Что тебе не нравится тогда в программировании?

Егор: Что мне не нравится в программировании?

Дмитрий: То есть почему… Например, какой-то момент, который если выкрутить на максимум, мог бы тебя заставить поменять профессию вообще?

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

У меня был период, когда я работал еще в «Метадизайне» и уже работал на этого чувака из Канады. И я работал в «Метадизайне», понятно, 8-9 часов в офисе сидишь. Потом приходишь домой, поел и еще часа 3-4 сидишь дома перед монитором за столом. Это прям вообще жесть. То есть ты реально понимаешь, что у тебя с телом начинает что-то не то происходить. Сидеть долгое время я ненавижу теперь. Можно пробовать стоять, конечно, за столом, может быть. Но я думаю, я это ненавидеть буду еще больше, чем сидеть.

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

Егор: Да. Что же еще может быть в плане именно работы? В какой-то момент, тут опять же, наверное, зависит от человека… То есть в программировании же есть, я бы сказал, два таких основных режима: исследования и потом реализация. То есть теория и практика. Причем теория не чисто теория. Теория такая, экспериментальная, и потом практика. И довольно прикольно спроектировать систему, поковырять, посмотреть, как она будет работать.

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

Дмитрий: Так уж получилось, что я в последнее время много стал читать. И это замечательный пример, который тоже разбирается в книге “Thinking in Systems”, которую я освещал некоторое время назад. И там тоже четко про то, как внешние связи системы, которые не прогнозируемы, и особенно, которые вносят замедление, могут вообще систему просто в разнос бросить.

Егор: Да.

Дмитрий: И как под это тоже стоит оптимизироваться, там очень, довольно интересно написано. Если тебе интересно в системы копнуть, я бы эту книгу рекомендовал. Она очень маленькая и это не книга, это черновик, к сожалению. Потому что автор не успела дописать книгу, она умерла раньше.

Слушай, на самом деле, про сидение за компьютером очень такой, интересный переход. Я помню, в свое время ты… То есть это было твое хобби, и ты много вне работы писал тех же самых RGB Space Invaders. То есть у тебя какие-то такие были моменты.

И давай поговорим про хобби. Должен ли программист работать, программировать 24 часа, 7 дней в неделю? Пришел с работы – пет-проджект, опенсорс.

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

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

То есть уровень, скажем так, junior, middle, это то, чем ты должен, скорее всего, заниматься. Потому что это время, когда тебе нужно прокачивать именно инженерные навыки в плане… Причем инженерные навыки начального уровня. Начальные не в смысле того, что ты только начинаешь: «О, я могу создать класс». Начального уровня в смысле того, что просто чисто инженерные навыки. То есть как написать программу, как ее структурировать, как сделать ее быстрой, как сделать ее эффективной по памяти, эффективной по хранению – вот это все барахло. Вот для этого это хорошо.

Но в какой-то момент жизнь начинает превращаться в этот грустный анекдот про математика, который мне тоже нравится и от которого иногда плакать хочется. Математика спрашивают: «Чем ты занимаешься на работе? И чем ты занимаешься в свободное время?». Он говорит: «О, на работе я занимаюсь такой скучной фигней, мы решаем уравнения второго порядка просто постоянно. Я их уже вообще ненавижу. Ну ладно, – говорит, – а в свободное время ты чем занимаешься? В свободное время у меня просто душа отдыхает. Я прихожу домой и решаю уравнения третьего порядка». И это грустно на самом деле.

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

Дмитрий: Да.

Егор: И этого не хватает.

Дмитрий: Слушай, я с тобой тут абсолютно согласен. Я могу сказать, что это еще начинает проявляться, как бы это глупо не звучало, с возрастом. И когда ты приближаешься к 30-ти, сидячая работа… То есть я раньше, в 22-23-25 лет мог сидеть за монитором по 12, по 16 часов в сутки, и как-то особо не было проблем у меня с этим. А сейчас я особо не программирую вне работы вообще. Мне достаточно, хватает того, что я изучаю на работе. То есть я могу читать что-нибудь такое, но вот так, чтоб прям садиться и начинать писать код – нет.

Давай, раз уж мы про хобби заговорили, поговорим маленько про твое текущее хобби.

Егор: Текущее хобби, да.

Дмитрий: Да.

Егор: Началось текущее хобби довольно забавно. Один из чуваков, с которыми мы работали в эмиграции, запостил в общий чат на работе видео команды Team BlackSheep. Это было видео от первого лица, как чувак на летающем крыле, на самолетике летает где-то там, на высоте двух километров в облаках. Я думаю: «Ни фига себе! Как круто». Типа FPV, то есть это прям как симулятор, только в реальной жизни. И следующий видос, дальше была реклама их нового квадрокоптера гоночного. TBS Vendetta, по-моему, он называется.

Я это дело посмотрел, я понял, что я просто обязан попробовать этим позаниматься. И, собственно, я купил себе сначала дешевый квадрокоптер, который игрушечный, но с камерой. Его немножко поковырял, посмотрел. И тут, опять же, полез тот же самый навык – расковыривать и докапываться до сути. То, что я люблю.

Дмитрий: Я только хотел об этом сказать.

Егор: Да. Я в этом игрушечном квадрокоптере поменял камеру, поменял антенны и часть радиопередатчика. Купил очки к нему, еще что-то в нем поменял, антенну, по-моему, перенес с одного места на другое. И понял, что тема моя, мне нравится. И, собственно, теперь я занимаюсь тем, что летаю на квадрокоптерах. Гоночный квадрокоптер у меня, вот недавно я построил большой гоночный квадрокоптер, осваиваю. Собираюсь заниматься фристайлом.

Дмитрий: Да. Не лишне заметить, что у Егора есть канал на Youtube, такой пока, не очень большой.

Егор: Да, там 4 видоса что ли.

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

Егор: Тут даже не только технический навык полета, тут сейчас… Понятное дело, что в наше время квадрокоптеры почти всегда за собой тянут 3D-печать. И в “Xing’e” тоже есть 3D-принтер, и теперь у меня дома тоже есть 3D-принтер. И поэтому сейчас мне, честно говоря, летать особо некогда. Я все еще довожу до ума квадрокоптер, я довожу до ума кое-какие проекты с радио для квадрокоптера. Я печатаю всякую фигню для него, разбираюсь в 3D-принтере параллельно, пробую разные виды пластика, модернизирую сам принтер. Поэтому сами полеты пока еще немножко отложены. Потому что я занимаюсь всей вот этой базой, которая у меня будет через какое-то время.

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

Егор: Да.

Дмитрий: И ты в итоге туда начинаешь углубляться и хочешь понять, как вообще оно все работает. Да, у нас, конечно, тоже есть 3D-принтер в «Мезосфере». И не только 3D-принтер, там целая лаборатория. Поэтому я очень сильно к этому, скажем так, отношусь тоже – такой мейкер.

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

Егор: Да, конечно. Потому что в программировании интересно то, что… Не то, что интересно, а такой интересный аспект программирования, что большая часть того, чем мы оперируем, нематериальна, в программировании. И, соответственно, если ты что-то сделал плохо, и оно хоть немножко как-то работает, все равно оно типа работает. И поскольку ты не видишь, ты реально не можешь увидеть, что оно плохо работает, потому что оно хоть как-то работает. Плохо работает, и бог с ним, типа работает. А квадрокоптер, он либо летит, либо нет. Тут нет такого, что он… Он может, конечно, плохо лететь, но это, скорее, равноценно тому, что он не летит. И поэтому да, это такая штука как раз о том, чтобы решение задач и доведение до ума полностью, рассматривание разных областей.

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

Дмитрий: Слушай, здорово. У меня, на самом деле, кончились вопросы уже.

Егор: Ок.

Дмитрий: Я спросит все, что хотел, и даже немножко больше. Если у тебя есть… Вот у меня был один такой замечательный вопрос на митапе в Красноярске: как попасть в команду к Егору?

Егор: Как попасть в команду к Егору? У нас есть вакансия архитектора сейчас, насколько я знаю. Можно попробовать написать резюме. Я вот только не уверен, на сайте она или нет. Я спрошу. Если что, я тебе отправлю куда-нибудь ссылку.

Дмитрий: Да, хорошо, спасибо. На самом деле, когда вы думаете, как попасть в команду архитекторов в крупную компанию, тут еще есть такой момент, можно сыграть в многоходовку и сперва попробовать попасть в компанию.

Егор: Да.

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

Я помню, в свое время, когда я встретил где-то в переходе ту самую HR и спросил, получила ли она мое письмо с твоим резюме, она сказала, что получила и говорит: «Как ты оцениваешь шансы Егора в нашей компании?». Я говорю: «Я бы поставил на этого парня свою месячную зарплату». Она сказала: «Это довольно сильное заявление». Я бы выиграл.

Егор: Да, вполне.

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

Егор: Да.