Артем Смирнов укладывал хлеб на заводе, семь лет продавал автомобили и запчасти, работал тату-мастером. К моменту, когда он решил попробовать себя в IT, в его трудовую книжку уже вклеили дополнительные страницы. В 30 лет гуманитарий по складу мышления решил стать разработчиком и за пять лет вырос от стажера до сеньора, а затем — до технического директора в компании BSL. О том, как ему это удалось (спойлер: непросто!), Артем рассказал в интервью Skillfactory.
Вход в IT дался мне через большой труд
Я не разбирался в компьютерах, но любил играть в компьютерные игры. В какой-то момент для себя, в качестве хобби, пытался освоить программы Blender и 3Ds Max. Для меня посидеть за компьютером было медитацией. Иногда я пробовал веб-разработку, читал статьи про построение сайтов, но далеко это не заходило. Написал «Hello,World!», порадовался и никуда дальше не пошел. Сложно развиваться, когда не понимаешь, как строятся проекты, и не знаешь, для чего тебе сайт.
Я попробовал себя в разных работах, увидел все плюсы и минусы. Мне одновременно хотелось попробовать что-то новое и найти стабильность. Заниматься чем-то творческим и интересным, но не работать физически и хорошо зарабатывать. Все это я нашел в IT.
В IT меня привлекло то, что здесь постоянно надо двигаться, учиться, не останавливаться в развитии. Так как я гуманитарий, а не технарь, вход в IT мне дался с большим трудом. Распространенная фантазия о творческой работе, которую можно делать у моря, была и у меня; в итоге она отчасти оказалась правдой.
Я пришел и сказал: «Хочу попробовать IT, готов работать за еду»
Я пришел в IT в 30 лет, ничего не зная о программировании. То, что я раньше делал, никак мне не показывало, что такое программирование и как это делается. Я связался со своим знакомым айтишником, который уже работал в компании BSL, и он мне помог. Я пришел в BSL с запросом: «Хочу попробовать IT, готов работать за еду». Мне дали такую возможность и взяли стажером. Четыре месяца я работал непрерывно: в будни — на своей постоянной работе, по выходным — в BSL.
Меня взяли фронтенд-разработчиком на проект по разработке ПО для обслуживания самолетов. Я начал изучать JavaScript, открыл для себя библиотеку Webix и стал делать на ней интерфейсы. Ребята, которые работали с бэкендом, отдавали мне API, чтобы прикрутить его к фронтенду. За время стажировки у меня бывали бессонные ночи, когда я детально разбирался, как что-то работает.
Через четыре месяца работы я прошел экзамен на проверку знаний и навыков, результаты подтвердили, что я знаю все на уровне джуна и готов работать дальше. Мне предложили работу… бэкенд-разработчика. Просто потому, что я показал, что у меня есть желание и потенциал учиться, меня пригласили на освободившуюся позицию.
Как я стал миддлом
Мне предложили перевернуть с ног на голову то, чем я занимался четыре месяца. Программировать нужно было на языке Perl. Я не брал никаких курсов, меня сразу бросили в огонь, на рабочие задачи. За мной закрепили архитектора, я начал с ним дальше развиваться. Именно он помог мне дойти от уровня джуна до миддла. Год он плотно занимался со мной на проекте. Мы с ним постоянно синхронно решали задачи. Он научил меня не только программировать, но и проектировать приложения с нуля.
Архитектор очень грамотно продумал мое обучение. Я учился работать с базами данных, разбирался в shell-скриптинге и SQL, в структурах данных и алгоритмах, объектно-ориентированном программировании. Я немного изучил работу с памятью. Сейчас я сразу понимаю, почему происходят те или иные вещи, просто зная, как устроена работа с памятью. Я могу сказать, почему некоторые решения будут работать медленнее или быстрее.
Вопреки стереотипу, айтишники — достаточно коммуникативные люди. Ребята из команды мне очень помогли. За год от меня, наверное, все устали, потому что я не стеснялся задавать самые глупые вопросы по 30 раз. Если я что-то не понимал, я продолжал закидывать коллег вопросами.
Когда я освоил основы, начал набивать фичу за фичей, стал самостоятельным сотрудником. Через год с начала работы меня уже начали назначать на другие проекты бэкенд-разработчиком. Успешность этих проектов показала мой уровень. Также я прошел оценку компетенций навыков, которая подтвердила мой грейд миддла.
В обучении мне очень помогло чтение. Основополагающая книга — это «Чистый код». Каждому человеку, который занимается программированием, я бы ее советовал. В ней много хороших советов, как писать аккуратный и понятный код. Это база, которую любому человеку, который руками что-то делает в IT, стоит прочитать.
Первый фейл: «Это самый страшный грех программиста»
Со мной случился фейл, который до сих пор остался для меня самым страшным, что может произойти в работе. Если мне это приснится ночью, я точно вспотею от ужаса.
Я работал на проекте с большим объемом задач. Мне приходилось перерабатывать, так как мне нужно было гораздо больше всего делать и укладывать в голове. На продакшне иногда были запросы сделать что-то руками, например исправить запись на сайте. Этот проект нам передали от других разработчиков, у нас не было никакого API, поэтому приходилось лезть руками в базу данных.
Меня попросили изменить статус одного заказа. Я был расфокусирован, не прописал важное условие. В итоге вместо одного заказа статус изменился во всех: они были отменены.
Это самый страшный грех программиста — испортить данные на проде. Ситуация была на грани скандала: если быстро что-то не сделать, все поймут, что произошло. Заказчику будет очень плохо, нашей компании будет очень плохо, а меня, скорее всего, уволят. На тот момент у меня было немного опыта, и я не понимал, что делать.
Я быстро откопал дополнительную таблицу с историей статусов, посмотрел, как она работает, написал скрипт — и все статусы вернулись в свое положение. Такого стресса в карьере я больше никогда не испытывал, все остальные проблемы после этого казались мне решаемыми.
Мне предложили пойти на проект в роли лида
Опыт и навыки до уровня Senior я набрал на следующем проекте. Это был большой заказ от крупного российского ритейлера. Мы создавали экосистему приложений с нуля, чтобы можно было организовать доставку продуктов от заказа до курьера на пороге.
На работе я всегда был коммуникативным и готовым взять на себя ответственность. Поэтому мне предложили пойти на этот проект в роли лида. Я руководил пятью командами, которые делали приложения для аутентификации, заказа и оплаты, сборки, доставки. Эту систему я полностью спроектировал с нуля под руководством нашего архитектора.
Я развивал этот проект два года и отточил на нем свои основные навыки: проектирование, тестирование, коммуникацию. Я уже мог проектировать не отдельные маленькие сервисы, а целые экосистемы, достаточно сложные, которые принимают большие нагрузки. Около 80% моего времени уходило на переговоры с заказчиком, я подтянул навык общения, управления командой. Все вместе они привели меня на позицию сеньора. По итогам очередного ассессмента мой грейд подняли.
От сеньора до технического директора
До технического директора я дорос за счет того, что был проактивным, брал на себя ответственность и всегда доводил дело до конца, когда это от меня зависело. На проектах я делал все и немного больше, чтобы быть уверенным в результате. Я знал это и до IT: чтобы расти, нужно работать больше, чем от тебя ожидают.
Со временем руководство распознало во мне человека, который умеет реализовывать задачи. С ростом компании началось расширение должностных позиций. Наш технический директор перешел на должность операционного, потому что она ему больше подходила. На освободившуюся позицию позвали меня.
Сейчас я прохожу испытательный срок на позиции CTO, добираю необходимые компетенции, чтобы освоиться и закрепиться в этой должности. В этом мне помогают опытные менторы и руководство. Чтобы обучиться всем навыкам и принять на себя все обязанности технического директора, мне понадобится еще полтора-два года. От стажера до текущей точки развития я дошел за пять лет.
Чем старше, тем сложнее
Периодически я стараюсь обращать внимание на то, есть ли в сфере предвзятое отношение. Это может выражаться не только на собеседовании, но и в общении между сотрудниками разных возрастов. В нашей компании я таких тенденций не замечаю.
Тем не менее, когда на собеседование приходит кандидат 45+, его рассматривают более внимательно. К сожалению, чем старше мы становимся, тем сложнее нам разбираться в чем-то новом. На моей практике люди 45+ приходят либо с очень большим, либо с очень маленьким опытом. Нужно понять, как человек мыслит, готов ли он быстро учиться и прикладывать усилия. Иногда большой опыт тоже мешает старшим специалистам, им бывает сложно перестроиться на новые подходы и технологии. Дверь мы ни перед кем не закрываем. Если я вижу, что человек активно учится и быстро осваивает новую информацию, конечно, он получит работу.
Если начинаете программировать в более позднем возрасте, нужно быть готовым вкладывать больше сил и энергии, чем вам пришлось бы пять-десять лет назад. Это я чувствую на своем опыте.
Три совета тридцатилетним
Говорить людям избегать каких-то ошибок тяжело, потому что, когда ты не прожил этот опыт, его сложно понять. Можно много раз сказать: «Не лезьте руками в прод», но человек все равно не поймет, пока сам не обожжется. У кого-то получается с первого раза, у кого-то не с первого. Но большинство не учится на чужих ошибках.
Тем, кто хочет начать путь в IT в 30 лет, могу дать следующие советы.
— Готовьтесь прикладывать больше усилий, чем остальные. Вам нужно будет очень быстро расти до релевантного состояния, чтобы выдерживать конкуренцию на рынке. Это очень много работы. Сейчас с этим немного проще, потому что есть обучающие курсы. При выборе школы обращайте внимание на то, чтобы среди преподавателей были практики, а в программе — возможность поработать на реальных задачах. На протяжении первых трех-пяти лет вам предстоит работать с максимальной отдачей — закрыть ноутбук после шести и пойти отдыхать не получится.
Читайте книги. Мы живем в эру фрагментированного сознания и соцсетей. Мы привыкли брать только суть: увидели картинку, поняли, перелистнули. Если вы попытаетесь почитать книгу, вы заметите, как сложно воспринимать большие объемы информации. Мозг устает, хочет взять суть и переключиться на другой контекст, так он развлекается. Когда вы читаете книги, вы погружаетесь полностью в конкретную проблематику. Если это язык программирования, целая глава может быть посвящена тому, как он работает с асинхронностью. С книгой вы долго живете в каком-то контексте, можете усвоить материал. Короткие статьи на Habr или VC — это, как правило, личный опыт специалиста в конкретной ситуации. Они помогут с одной задачей, но не дадут полной картины. Если хотите получать углубленные знания, читайте книги.
Никогда никого не ждите. На ранних этапах, когда вы чего-то не понимаете, вы часто попадаете в зависимость от чьих-то ответов. Например, коллега должен предоставить вам фактуру для задачи, но он занят. Вы сидите и ждете, тратите время. В это время можно задать тот же вопрос кому-то еще. Мне это очень помогло при обучении: я не сидел долго, шел к другому сотруднику и узнавал. Старайтесь получать то, что вам нужно, сейчас, иначе вы будете сами себя тормозить.