Код
#Интервью

Вкатиться в Go с нуля в 37, бросив бизнес и безуспешные попытки стать продактом

Кто сказал, что IT — дело молодых? Ильдус Тукаев в 37 лет бросил свой бизнес, выучился на Go-разработчика и сломал миф «старикам здесь не место».

Иллюстрация: Colowgee для Skillbox Media

Ильдус Тукаев


Go-разработчик в проекте WhatToFarm, бывший предприниматель, инженер.


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

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

Правда, с инвестициями было туго — свои деньги у него кончились в первые пару месяцев, а привлекать капитал со стороны оказалось непросто. И тут я вспомнил про IT. Сначала размышлял так: раз я полжизни кем-то руководил, нужно ориентироваться на должность проджект- или продакт-менеджера.

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

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

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

Интервью по мотивам выпуска подкаста «Люди и код».

— Ты говорил, что был менеджером большую часть своей карьеры. Фактически 10 лет до перехода в разработку ты вёл собственный бизнес, работал на себя. Насколько непросто было принять решение: «Я перестаю быть начальником и иду просто в наём»? И что побудило сказать себе: «IT — это моё»?

— Давай по порядку. Насчёт отказа от менеджерства — это как раз далось мне довольно легко. Я могу руководить людьми, но, положа руку на сердце, — мне всегда больше нравилось работать самому, делать что-то своими руками, чем кем-то управлять.

Насчёт IT — вопрос сложнее. Здесь скорее больше прагматики, чем чистого призвания. Прежде всего мне понравилось, что значительная часть компаний работают на удалёнке. Я банально устал каждое утро вставать на работу, по часу проводить в дороге туда и обратно.

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

Менять направление деятельности было несложно — гораздо труднее было признаться себе, что всё, чем я занимался до этого, совершенно бесперспективно. Ведь я отдал этому 10 лет. Тяжело было осознавать, что это путь в никуда, что в найме у меня больше возможностей, в конце концов — что я элементарно заработаю там больше, чем на своём бизнесе, каким я его создал.

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

Кадр: сериал «Силиконовая долина»

— Как ты выбирал язык программирования? Не жалеешь о своём выборе?

— Не жалею ни в коем случае: мне нравится Go как язык, нравится его синтаксис, интересное сочетание простоты и сложности. Хотя я бы, наверное, не советовал его новичкам — Go сложноват для входа в программирование. В итоге на поиск первой работы у меня ушло гораздо больше времени, чем могло бы уйти на том же JavaScript или Python.

Однако Go всё-таки язык очень любопытный: на нём можно делать клёвые штуки. И я рад, что выбрал именно Go. В будущем хочу изучить и другие языки — не столько для того, чтобы на них перейти, сколько для того, чтобы посмотреть, как они устроены, как можно делать по-другому, не так, как я делаю сейчас.

— Как долго изучал Go?

— На путь от «Hello, World!» на Go до трудоустройства у меня ушло около пяти месяцев. Правда, перед этим я ещё вписался в небольшой стартап как волонтёр — помогал ребятам писать бэкенд. Фронт у них уже был готов, всё работало, а вот с бэком и деньгами были проблемы. Но я в тот момент не гнался за деньгами — просто хотел пощупать реальные задачи, получить какой-то опыт. Если считать стартап, то первый код в продакшен я начал писать где-то через четыре месяца с начала обучения.

— Как ты вообще изучал программирование: книги, курсы, статьи? Можешь выделить что-то самое полезное? Если бы сейчас начинал заново, каким бы путём пошёл и какой бы рекомендовал другим?

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

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

— Ты упоминал, что занимался в онлайн-школе. Какие там были уроки? В видеоформате или вебинары? С поддержкой преподавателей или без? Что помогло, что оказалось бесполезным?

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

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

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

Кроме того, мне неожиданно помогла книга Таненбаума по компьютерным сетям, где также рассматривались интерфейсы — но немного с другой стороны. Я вдруг понял, что это такое и для чего они нужны.

Изображение: издательство «Питер»

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

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

После онлайн-школы прошёл бесплатную версию продвинутого курса на Coursera — это довольно известный курс в кругу разработчиков Go, если не ошибаюсь, от одного из разработчиков из VK. Он дал мне понимание всяких важных нюансов языка — например, как работать с многопоточностью.

— Когда ты вышел на рынок труда? Как писал резюме?

— Впервые попытался откликаться на вакансии по Go через три месяца после того, как начал его изучать. Резюме у меня к тому моменту было очень слабое и неубедительное — не пришло ни одного отклика. Да даже отказы почти не приходили, меня просто убирали куда-нибудь с глаз долой. Было такое ощущение.

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

В общей сложности я откликнулся где-то 60 раз на hh.ru и ещё раз 20–30 — на других платформах типа «Хабр.Карьеры», Rabota.ru и так далее. Но работу мне принёс даже не мой отклик. Меня просто нашли на «Хабр.Карьере» и написали мне: «Чувак, хочешь попробовать поработать? У нас криптостартап». Я ответил: «Ребят, у меня уровень примерно джун». При этом я знал, что в финтех и крипту обычно ищут специалистов не ниже мидл-уровня.

Но неожиданно мне сказали: «У нас есть хороший опыт найма джунов. И если ты хорошо сделаешь тестовое, мы с тобой поговорим». Мне дали ссылку на сайт, который компания делала (whattofarm.io) и тестовое. Я попросил неделю на его выполнение. Делал я его примерно по три часа в день, и у меня ушло пять дней. На мой взгляд, результат был хорошим — я выполнил все требования тестового, хотя, возможно, где-то и накостылил. Но в общем и целом всё работало.

Потом ребята долго не могли его проверить: то кто-то болел, то был аврал и тому подобное. Я напоминал о себе несколько раз. Я уже перестал надеяться. Но в какой-то момент мне написали и сказали: «Готовы с тобой побеседовать. Давай согласуем дату, когда побеседуем уже голосом, то есть проведём техинтервью». И всё. Так я устроился на свою текущую работу.

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

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

— На рынок труда стоит выходить, когда ты уже умеешь работать с веб-сервисами. Потому что это то, чем занимается большая часть бэкенд-разработчиков. Что я имею в виду под «умеешь работать»? Это значит, что ты способен написать какое-то небольшое API, разобраться с документацией на чужое API, отправить запрос, принять ответ, записать/прочитать из БД и так далее.

Хорошее резюме однозначно должно быть коротким. Желательно, чтобы вы уложились в страницу «Google.Документов» стандартным шрифтом. Ничего лишнего. Стоит описать свой прошлый опыт так, чтобы он хоть как-то коррелировал с разработкой. Например, в какой-то момент я просто переписал своё резюме, и стало казаться, что все 14 лет после университета я занимался только разработкой в разных видах :) Например, отметил, что занимался установкой и настройкой серверов — я действительно устанавливал и настраивал видеосерверы, но почему-то не делал на этом акцент в резюме раньше.

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

Ещё два момента. У меня лучше сработали резюме без сопроводительного письма. Не знаю почему. А когда я убрал зарплатные ожидания, со мной стали гораздо больше общаться. Думаю, увидев мои ожидания в какие-нибудь 60 000–70 000 рублей, эйчары и нанимающие айтишники сразу понимали, что я совсем новичок и со мной даже не стоит разговаривать.

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

Кстати, интересный нюанс: я вначале записал стартап как «киберспортивные матчи… что-то там» — собственно, это было корректно. Но в финальной, «высококонверсионной» версии резюме, заменил это на просто «стартап — сервис-агрегатор» или вроде того. Это тоже было корректно, но звучало уже не мемно и не отпугивало эйчаров.

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

— А какие? Можешь назвать какие-то конкретные пакеты, технологии?

— Обязательно надо знать Git. Это мастхэв. Очень желательно знать хоть немного Docker, Docker Compose, пакеты для работы с сетью. В Go есть и стандартный пакет, но большинство всё-таки предпочитает работать со сторонними библиотеками. Например, Gorilla Mux, Gin или Echo. Если вы с ними сталкивались — отлично, вписывайте в резюме. Если не пробовали, то попробуйте буквально денёк-два их пощупать и тоже выписывайте в резюме. Мне также помогло, я поработал с веб-сокетом — это было первое, что я написал для «волонтёрского» стартапчика.

Обязательно надо вписать любую базу данных — и круто, если вы успели немного потрогать и SQL, и NoSQL. Среди SQL хорошо смотрится PostgreSQL, среди NoSQL — например, Redis или MongoDB.

Кадр: сериал «Силиконовая долина»

— Расскажи про работу с тестовыми. Какие они были по сложности? Сколько времени на них в целом обычно уходило? Насколько было сложно выполнять?

— Тестовые задания были совершенно разные. Одно из тестовых мне дал парень из Сбербанка: сделать Rate Limiter, который ограничивает количество задач, выполняемых одновременно и выполняемых в единицу времени. Я делал его пять–шесть часов, из них два часа я разбирался с тем, что такое вообще Rate Limiter и как он работает :)

В основном дают тестовые на работу с каким-нибудь API: подёргать данные, переложить их в базу, взять с одного места, обработать, записать в другое место. Было одно тестовое, которое для меня оказалось просто ужасным и неподъёмным только потому, что у ребят была очень плохая документация на их собственное API. Пришлось все структуры данных выдёргивать из запросов с их сайта — то есть прям изучать, какие запросы отправляет сайт, что принимает в качестве ответа. Это было жутко. Я его так и не доделал и просто отказался от дальнейшей работы с ним. Потому что это просто издевательство над собой.

В общем, если вы видите, что тестовое неподъёмное — пожалуй, лучше не стоит даже браться за него. Если видите, что как-то плохо что-то описано, — скорее всего, результат будет плохой. Самые лучшие тестовые у меня получались тогда, когда задание было описано очень чётко и подробно, как в случае с компанией, где я работаю сейчас. У них было всё полностью прописано в задании так, что невозможно было его интерпретировать как-то неправильно.

— И сколько тестовых ты всего выполнил?

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

— Сколько примерно собеседований ты прошёл? О чём спрашивали HR, о чём — на технических интервью? Что было сложно? Где тебе казалось, что ты был слаб? Что с этим делал потом? И на том месте работы, где ты сейчас работаешь, насколько успешно ты, по своим ощущениям, прошёл это собеседование?

— У меня было около пяти собеседований. Из них четыре с HR и только одно — техническое. Было ещё одно собеседование непосредственно с парнем, который делал свой проект: он и нанимал людей, и платил им, и писал основную часть кода.

Самые неприятные собеседования были в «Авито» и в «Озоне». Потому что HR, очевидно, видели, что я не дотягиваю до того уровня, который они хотят. Но при этом, улыбаясь, говорили мне, что передадут мои данные технической команде и обязательно мне ответят. Естественно, после этого никакого ответа я от них не дождался.

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

Что могу посоветовать тем, кто проходит собеседования? Честно, я не знаю, можно ли так говорить, но я бы советовал банально, извиняюсь, врать: «заливать», что вы работали со всем, с чем только можно. Потому что ваша цель — дойти до технического интервью. Только технический специалист может понять, нанимать вас или нет, нужны вы компании или нет. Если же HR хоть чуть-чуть заподозрит, что вы не подходите, и напишет плохое сопроводительное, то с огромной вероятностью вы просто не дойдёте до технического собеседования.

— Параллельно с учёбой и поиском работы ты работал где-то? Были какие-то источники дохода?

— У меня всё это время были очень небольшие доходы, очень скромные. Я всё это время жил за счёт жены, за счёт того, что она работала. Но при этом у нашей семьи в принципе очень небольшие потребности, и мы укладывались ежемесячно в 30–40 тысяч рублей на продукты и плюс какие-то предметы первой необходимости типа заправить машину, купить что-то для детей. У меня две дочки — немаленькая, по современным меркам, семья. И траты иногда возникают всё же.

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

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

— Бывали моменты, когда хотелось всё бросить? Что с этим делал?

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

Кадр: фильм «Рыцарь кубков»

— Мог бы какие-то общие советы дать тем, кто собирается переходить в IT? Ты прошёл весь этот путь. Ты пришёл к какой-то точке, когда ты получил работу. Радовался, когда её получил. Если оглядываться назад, как бы ты сейчас выстроил свой трек?

— Я не знаю. Мне кажется, путь каждого человека в IT будет индивидуальным. Если у вас есть возможность просто не работать и учиться, как я, — пожалуй, это будет самым лучшим вариантом. Потому что если вы будете работать, то всегда будет возникать ощущение, что ваша работа важнее, чем та цель, к которой вы идёте.

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

У меня так было до декабря, когда я ещё думал: «То ли стать продактом, то ли разработчиком». И я настолько распылялся и туда, и туда, что ни в одном из направлений в тот момент не смог добиться какого-то ощутимого прогресса. В разработке начал прогрессировать, только когда отказался от всего остального.

Как я говорил, у меня была возможность не работать и только изучать программирование, чтобы максимально быстро войти в профессию. Как это у меня произошло? Не знаю. Щелчок в голове — и я понял: «Зачем я делаю всё остальное, если хочу быть разработчиком?»

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

А ещё на третий день моей работы в этой школе мы ехали с младшим братом с лесенкой на крыше машины и увидели таких же ребят, которые в восемь вечера едут с лесенкой на крыше. Я поворачиваюсь к брату и говорю: «Смотри, мы такие же дебилы. Что мы с тобой делаем? Ты хочешь писать электронную музыку, я хочу программировать. Зачем мы в восемь вечера едем хрен пойми куда с лесенкой на крыше машины?»

И мы одновременно решили, что больше ни одного объекта никогда в жизни не возьмём — что будем заниматься только тем, что нам интересно. Это было так, как будто тебя толкнули в бок и сказали: «Чувак, чем ты занимаешься сейчас?» Я не знаю, но вот как-то так это ощущалось.

— А сколько времени тратишь на обучение сейчас, когда уже получил работу и стал «королём мира»?

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

— И какие планы на будущее? Какие языки интересно пощупать, какие технологии, как хочется развиваться в профессии, какие книги читаешь?

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

Если говорить про более далёкие планы, то хотелось бы немного поизучать фронт, JavaScript — просто для того, чтобы понимать, как то, что я делаю, потом будут применять ребята-фронтендеры, как мне сделать так, чтобы им было удобнее.

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

Следующее, что мне интересно, — Java. Просто потому, что это классический ООП-язык. И на нём я лучше пойму какие-то ООП-паттерны, смогу их применять уже у себя в работе, сейчас понемногу изучаю Kotlin.

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

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована