На днях пообщался с Альмиром Давлетовым, Principal Software Engineer’ом в LeetCode. Поговорили о том, как он переехал в США, достиг амбициозных целей в карьере, а позже осознал, что важно прислушиваться к своим желаниям. Альмир рассказал о своем карьерном пути, важности фундаментальных знаний в программировании, а также поделился рекомендациями для тех, кто хочет развиваться в данной сфере.
Альмир, расскажи немного о том, как ты попал в сферу разработки. Когда появился интерес и с чего все началось?
Как только во 2 классе у меня появился компьютер в школе, я открыл для себя Flash. Я самостоятельно научился на нём программировать и создавать небольшие игры. Это стало моим хобби.
Когда в школе ввели информатику, я уже знал базу. Мой учитель дал мне возможность заниматься по индивидуальному плану с более сложными заданиями. Я изучил C++, JavaScript, HTML. Ещё в школе, общаясь на форумах, я находил небольшие заказы на разработку сайтов и Flash-приложений. Так я стал зарабатывать первые деньги.
После поступления в КФУ на факультет вычислительной математики и информатики я продолжил работать на фрилансе. Первые курсы в университете были посвящены основам, которые уже были мне знакомы, поэтому я обучался самостоятельно и работал над реальными проектами.
В 2012 году я стал подрабатывать в компании «Татармультфильм», которая занимается созданием мультфильмов и мультимедийных приложений для образовательных учреждений. Я разрабатывал обучающие игры и приложения, которые в дальнейшем внедряли в школьное образование по всей стране.
Расскажи о том, как ты устроился на свою первую официальную работу.
После окончания университета я понял, что пора двигаться дальше и стал искать полноценную работу. Меня привлекла компания Provectus, в основном из-за возможности командировок в США, где находились их клиенты.
Им требовался frontend-разработчик. Я решил попробовать свои силы и пришел на собеседование. Оказалось моих знаний было недостаточно, так как они были скорее интуитивными. Но несмотря на отсутствие теоретической базы, сотрудники увидели, что я хорошо понимаю, как работают основные концепции и предложили мне место в компании.
Однако через пару дней условия изменились – теперь клиенту нужен был full-stack разработчик, а я тогда не имел представления ни о работе сервера, ни о взаимодействии frontend с backend. У меня были лишь базовые знания PHP и понимание базы данных.
Они предложили мне месяц на то, чтобы освоить Ruby и Ruby on Rails и создать небольшую социальную сеть. За этот месяц я действительно освоил новые для себя технологии и выполнил задание. Несмотря на ошибки, им понравилось, как я быстро учился и адаптировался.
В итоге меня взяли на работу в проект компании, которая специализируется на регулировании спроса и предложения электроэнергии в различных штатах и городах США. Через 6 месяцев после трудоустройства мне предложили отправиться к ним в командировку, что стало моим вторым визитом в Штаты после участия в программе Work and Travel в 2013 году.
Этот опыт был весьма вдохновляющим. Я проработал с ними больше года, после чего мы переключились на другого клиента — компанию, занимающуюся продажей б/у брендовой одежды по сниженным ценам. С ними я также посетил США в командировке, установив полезные связи и продолжив сотрудничество.
Как вашим клиентом стала международная биржа фриланса?
Иногда я брал заказы на этой бирже. Однажды я наткнулся на проект, который был напрямую связан с моим опытом. Я выполнил его за пару часов, хотя он был рассчитан на неделю. Как выяснилось, заказчик был сотрудником этой биржи. Он занимался подбором персонала, выбирая тех, кто хорошо справлялся с заданием. Мне предложили присоединиться к их компании. Но вместо этого я продал ему идею о том, что в Provectus много таких специалистов как я, и сотрудничество с нашей командой будет более выгодным.
Вместе с директором Provectus мы отправились в США, где оформили сотрудничество. Мой поступок высоко оценили в компании и предложили больше ответственности.
Я перешел от преимущественно программирования к более широкому кругу задач. Я стал первым техническим аккаунт-менеджером в компании — до этого такой должности не существовало. Новые обязанности включали в себя и общение с клиентами, и управление командой, и развитие проекта, за успех которого я отвечал.
Как ты переехал в США?
Когда директор перебрался жить в США, он предложил мне первым переехать туда вместе с ним. Без колебаний я переехал с семьей по визе H-1B и продолжил работу с клиентами уже на американской стороне. Это открыло новую главу в моей карьере. К тому времени я уже набрался знаний, став Solution Architect’ом и освоив такие технические области, как DevOps и Data Engineering.
В Штатах я также получил возможность познакомиться с проектами, где применялось машинное обучение. Тогда я понял, в каком направлении хочу двигаться дальше.
Мой любимый диалог с клиентами звучал примерно так:
— Можете ли вы представить будущее без нефти, с чистой экологией и новыми источниками энергии?
— Легко.
— А без искусственного интеллекта?
— Абсолютно нет.
Этот разговор моментально убеждал наших клиентов в важности интеграции ML-решений уже сейчас, а не в отдалённом будущем.
Когда ты понял, что что-то пора менять?
В определенный момент я осознал, что полностью отошёл от программирования. Теперь мои дни были заполнены бизнес-задачами, а также популяризацией ML и Big Data. Затем ударил COVID, и мы все перешли на удалёнку. Чувствовалось, что связь с клиентами немного нарушилась. Они сосредоточились на выживании, а не на инновациях. Теперь, вместо того чтобы фокусироваться на задачах клиентов, я больше уделял время оптимизации процессов внутри компании.
Я стал скучать по программированию и решил посмотреть, чего я еще стою на рынке. Начал готовиться к собеседованиям, решил пару задач на LeetCode и увидел, что они в поиске сотрудников. После успешного прохождения всех этапов собеседования, они предложили мне работу. После долгих размышлений и обсуждений с руководством Provectus я принял решение присоединиться к LeetCode.
Я присоединился к команде как специалист с большим опытом в разработке и управлении людьми. С самого начала коллеги оценили мой профессионализм, и я быстро стал лидером команды.
Однако со временем, достигнув всех поставленных целей, я осознал, чем хочу заниматься на самом деле. Я принял решение перейти от управления людьми к чисто технической роли, чтобы полностью посвятить себя внедрению инноваций. Так я вновь стал инженером, заняв позицию Principal Software Engineer. Я знаю, что могу внести огромный вклад в индустрию, находясь на позиции технического специалиста, и рад возможности этим воспользоваться.
Как ты себя ощущаешь в данной роли после длительного опыта в управлении?
Когда я был в Provectus, мне хотелось приблизиться к бизнесу, я восхищался директором и его способностью управлять процессами. Я добился этого, но осознал, что это не мое. Думал, что менеджмент в технической сфере будет мне ближе, но оказалось, что нет. Я понял, что мне по-настоящему нравится быть инженером, находиться в «поле» и решать задачи вместе с командой.
Возможно однажды я снова попробую себя в роли управленца. Например, в статусе СЕО своей компании. Но на данный момент я наслаждаюсь тем, что делаю.
Есть какой-то проект, которым ты особенно гордишься? Какие были сложности и как ты с ними справился?
Одним из наиболее запоминающихся проектов была работа с крупнейшим заводом, специализирующимся на производстве различных металлургических деталей. Главными заказчиками завода являются такие компании как Ford, BMW и Mercedes. На заводе возникли трудности с коммуникацией между этапами производства. Например, после заполнения корзины формами, её нужно было перевезти на следующий этап. Это делал оператор погрузчика, но на следующем этапе могла быть очередь из таких корзин из-за медленного темпа работы, что требовало дополнительного времени и участия оператора для выгрузки.
Задачей было оптимизировать коммуникацию на заводе. Тщательно изучив все процессы, я разработал решение – приложение, напоминающее Uber, с интеграцией ML-технологий для эффективного распределения приоритетов «заказов». Погрузчики и операторы станков видели актуальные задачи через интерфейс и могли координировать свою работу. Я представил прототип решения и перевел проект в стадию полноценной разработки. Предложенное мною решение значительно улучшило коммуникацию и оптимизировало производство. Этот опыт был особенно запоминающимся, так как личное присутствие на заводе позволило мне глубже понять, как организовано производство и какие проблемы требуют решения.
Какой совет ты бы дал тем, кто хочет начать карьеру в сфере разработки и получить работу мечты?
Чтобы получить работу мечты, важно хорошо понимать свою мечту. Я мечтал о разных вещах, но, получив желаемое, осознавал, что это не мое. Это были мечты, подсознательно навязанные образами успешных людей вокруг. Поэтому первый совет — пытайтесь понять себя и осознать, чего действительно хотите вы, чтобы не тратить своё время впустую.
Второй совет — не бойтесь. Не бойтесь брать на себя ответственность и ошибаться. Ошибки — это ключевой момент в карьере любого человека, поскольку именно ошибки формируют опыт.
Говоря о технической стороне вопроса, я бы рекомендовал начать с освоения фундаментальных знаний. Это включает в себя Computer Science, основы объектно-ориентированного и функционального программирования.
Я вижу, как многие начинающие специалисты «прыгают в бой», не понимая, как работают фундаментальные принципы и пытаются что-то написать. Это допустимо во время обучения, когда теоретические знания закрепляются практикой. Но это совершенно неприемлемо, когда вы пытаетесь решить реальную проблему, не понимая до конца, что вы делаете.
После освоения базовых знаний я бы рекомендовал выбрать конкретную нишу и стать в ней востребованным специалистом. Например, машинное обучение – очень востребованное на сегодняшний день направление. С хорошими фундаментальными знаниями и глубоким пониманием конкретной ниши вы всегда сможете найти работу. Остальные направления можно изучать на базовом уровне, но важно иметь глубокое понимание хотя бы одной области.