Программисты, расскажите, как вы меняли специализацию?
Публичный постВсю свою карьеру я работаю Android-разработчиком, но чувствую, что пришло время перейти с программирования приложений для телефонов на программирование чего-нибудь еще. Компания, где я работаю, таких финтов не предусматривает, а пет-проджектов, на которых можно было бы пробовать новые фреймворки, у меня сейчас нет, так что переход обещает быть долгим и болезненным. Честно говоря, я даже не знаю, с чего начать.
Я признавался в этом своим коллегам, которые уже меняли специализацию, и спрашивал, как им это удалось.
"О, это очень просто! – отвечали мне. – Нужно всего лишь..."
А дальше все начинали рассказывать разные истории. Кому-то перепрофилирование оплатило начальство. Кто-то продолжал работать на прежней должности, а с нюансами новой платформы разбирался дома по вечерам. Кто-то пошел на понижение зарплаты (мой герой!), пришел на новое место джуном и погружался в тему по ходу дела. Кто-то подрисовал себе в резюме... Короче, да, истории почти не повторялись.
А как это удавалось вам? На какие жертвы приходилось идти? Расскажите о своих опытах. (Советы тоже приветствуются.)
Мем для привлечения внимания:
😱 Комментарий удален модератором...
Очень хорошо это делать в ФААНГах, много лет занимался Scala+Spark+BigData+Kafka и вот это все, потом подался на внутреннюю вакансию по C++ и performance optimization не особо зная ни C++ ни performance optimization и меня просто взяли потому что человек хороший. В итоге я теперь очень недурно знаю C++ и умею копаться в профайлах из perf и понимать ассемблер, и то как заставить CPU быстро работать.
Потом у нас решили что писать на C++ это прошлый век и нужно делать свой компилятор, и я вот теперь почти что "compiler engineer", с кучей коммитов в LLVM (MLIR), хотя пару лет назад я вообще понятия не имел что это такое.
Короче очень удобно, никакой головной боли и никакой потери в ЗП.
Я перешел из gamedev (C++) в product dev в сфере facial recognition (С++). Наверное, из-за одного и того же языка это не посчитаешь сменой специализации, но смена сферы применения была. На новом месте я слабо понимал, что такое Linux, Bash, Docker, ssh, Golang, CMake, работа с сетью, микросервисы и т.п. Было очень интересно снова активно обучаться, и в итоге обратно в геймдев уже не хочется, а на домашнем компе уже давно не винда.
Однако я сам не понимаю, почему меня взяли тогда, ведь я столького не знал. Синдром самозванца все 3 последние года :)
О, это очень просто! Нужно всего лишь...
Уволиться и найти другую работу)
Могу поделиться своим опытом. Я почти 10 лет делала ПО для формирования налоговой и прочей финансовой отчетности для одной крупной российской компании (только одной, других клиентов у нас не было). Благодаря шилу в заднице моего непосредственного начальника, наша небольшая команда из ~трех разработчиков всегда делала разнообразные вещи. То есть прямой необходимости в этом не было, только амбиции. Это было прикольно. Но потом этот начальник уволился и все протухло. Можно было сидеть целыми днями и не работать. И пропала прослойка между программистами и руководителем департамента. Мы стали делать просто то, что просят. Спустя 2-3 года написания выгрузок в XML, мне стало понятно, что надо что-то менять. А так как продавать идеи я тогда не умела, нужно было менять место деятельности. Мне хотелось, чтобы в программировании было больше программирования, а не кликов мышкой в SAP GUI. Поэтому я начала читать всякую литературу по алгоритмам и языкам, чтобы понимать их лучше. Но я ушла не только потому что мне было скучно программировать на ABAP. Все могло бы сложиться иначе, если бы я видела хоть какие-то перспективы в продолжении работы в этой компании. Проработав еще немного после принятия такого решения, я ушла в никуда. У меня была твердая уверенность, что работу я найду а также подушка безопасности на несколько лет безбедного существования. Следующая пара месяцев прошла прекрасно. Я сидела целыми днями на кроватке и читала Страуструпа. Романтика. Где-то через два-три месяца я разместила резюме на HH и мне начали сыпаться всякие вакансии. Я там прописала довольно скромную цифру, которая была ниже моей прошлой зарплаты именно потому что я пыталась поменять профиль. Уйти из энтерпрайза во что-то более низкоуровневое.
Я разместила целых два резюме (озаглавив C++ программист и C# программист), которые на самом деле были составлены отвратительно и полны фигни. Но там были ключевые слова.
Главной задачей было дать понять, что я не ищу место, в котором я буду делать то же самое, что прежде. И по откликам на мои резюме мне стало понятно, что на C# я скорее всего буду делать то же самое, что и раньше. Поменяется только язык. Вариант с плюсами - более интересный, но их я знала хуже. В Яндексе меня сразу завернули. Их не интересует ширина ваших знаний. Только глубина. К ним без опыта разработки на языке на боле-менее приличную должность соваться нет смысла. Но есть другие компании и мне повезло найти очень хорошее место, которое выглядело невзрачно и ничем не было примечательным. Интерес к ISS (да-да аббревиатура точно такая же как у некоторого объекта на земной орбите) появился уже на собеседовании. Как оказалось, меня собеседовал руководитель департамента и ему очень нравилось то, что он делает. Это и скоуп задач меня очень зацепили. Там я работаю и сейчас. Меня взяли несмотря на то, что мои знания плюсов оставляли желать лучшего)
Первое время был некоторый шок от смены обстановки. Кругом куча незнакомых лиц и взяли меня на особых условиях. Если в течение первого месяца было бы понятно, что я не тяну - то мне пришлось бы искать работу заново. Вообще, несмотря на стресс, оно того стоило. Те полгода отдыха без работы и период в пару лет, когда я только осваивалась на новом месте - возможно лучший период в моей жизни)
Вот такая у меня история, думаю это именно то, что вам было нужно.
За 5 лет работы в IT успела сменить профиль 2,5 раза. Интересные наблюдения вышли (там в конце не совсем про разработку, но вдруг интересно будет) .
Когда увольнялась с первой работы (работала программистом), получилось, что поменяла язык: с C/C++ ушла в другую компанию на Java. При этом на Java у меня были только учебные проекты, изучала ее самостоятельно. После 2х часового собеседования меня сразу взяли. Итого: без коммерческого опыта в джаве, без проблем взяли на мидловую вакансию, просто потому что логически рассуждала верно на собеседовании.
После 2х лет работы на джаве и питоне выгорела, и захотелось более междисциплинарной работы (выбрала аналитику). Менеджер предложил попробовать аналитику на текущем месте (так что при хорошем руководстве вполне можно сначала поговорить по душам, а потом уже рассылать резюме.) Но я все-таки решила уйти.
В итоге поготовилась к собеседованию, вспомнила SQL, всякие нотации из универа и пошла на собес. И сюрприз: опять же взяли за то, как рассуждала.
А вот дальше было самое интересное. Мой переход из аналитики в UX/UI дизайн. План был такой: уволиться вникуда (конечно же с фин.подушкой), 2-3 месяца активной самостоятельной работы по дизайну, и дальше рассылка резюме. Но предложили попробовать дизайнером на текущем месте, когда написала заявление (опять же, если компания нравится, то лучше сначала поговорить с руководством). Я согласилась остаться, но увы, не сработались, и через несколько месяцев я все-таки ушла вникуда.
Около 2х месяцев я не работала, проходила курсы, сама дополнительно изучала кучу всего, пока родители не заставили начать рассылать резюме (у меня не было нормального портфолио, а оно требуется просто для всех вакансий UX/UI). В общем рискнула, откликнулась с тем, что есть. Прошла собеседование, взяли.
Оказалось, что дизайнеру в этой компании просто нужно хорошо уметь в аналитику. Итого: без шикарного опыта в дизайне и сильного портфолио взяли, просто потому что компании нужен был дизайнер, который может в аналитику.
Из своего опыта сделала такой вывод: если тебе нравится компания, где ты сейчас работаешь, но хочется сменить направление - сначала поговори с руководством. Чаще всего оно адекватное и пойдет на встречу. Особенно, если не просишь увеличения ЗП.
Если компания не очень нравится, или руководство ничего не нашло, то уже рассылай резюме (само собой нужно будет подготовиться). Часто берут людей за то, что они могут логически мыслить (даже если у них нет соответствующей экспертизы в технологиях), выстроить свою работу, и принимать решения самостоятельно, без менторов.
Если человек толковый, то он разберется в любой технологии. Поэтому главное не бояться, а просто идти и делать :)
P.S минусы, конечно, есть. Зарплата не так быстро растет, когда из разработки уходишь в совсем другое направление. Но иногда это того стоит :)
Я не менял, но считаю переходить надо так же, как и «заходил» — решать задачи. Можно утопать в онлайн-курсах/переквалификации/you name it, а можно делать. Так же, как ты учился программировать Android, можно и в другой сфере :)
У меня в команде есть возможность брать задачи не из своей специализации по мере появления посильных, и расти. Takes time, но в результате ты точно качаешь навык «делать рабочие задачи на Х» вместо «знаю Х, делать не умею»
Может быть неплохим вариантом попробовать сменить роль прямо в своей компании/команде. Тогда есть шанс остаться на +/- той же зп и начать уже копить опыт для резюме.
Берешь какие-нибудь несложные задачи/баг фиксы и пробуешь делать, зовешь в кодревью опытных коллег и так понемногу учишься. У нас почти всегда есть в бэклоге что-то такое, даже лейбл в джире специально сделали "T-shape" — типа «можно сделать несложную задачу, даже если не по твоей специализации».
Но наверное это с работает только в +/- крупной продуктовой компании, в заказной разработке возможно так не принято делать.
Я вот зафейлил переход :(
Начну чуть из далека. Перейдя в новую компанию я плавно переполз с Java на Kotlin, но это не особо считается сменой специализации. Паралельно с этим всем я очень горел Go и дико хотел писать на нем.
Но Kotlin тоже был сладок и я, в целом, был счатлив.
В один "прекрасный" день проект на котлине свернули, я вернулся на Java 8 и заплакал...
Стал искать вакухи на Go нашел одну очень приятную контору, но совершил критичискую ошибку. Поняв, что я хорошо прошел собес я запростил слишком большую зп и был послан.
Через год нашел место где пишут на Kotlin туда и свинтил.
Теперь вот подумываю свинтить на Rust, но с учетом прошлых ошибок. :)
Мой комментарий будет из разряда "Можешь получить, все что хочешь, нужно только очень сильно захотеть". Наверное обстоятельства сложатся лучше в продуктовой компании, но не факт, аутсорсы тоже разные бывают. В моем случае, на прошлой работе я очень захотела попробовать себя менеджером. Первым делом я поговорила со своим ПМ, и она мне дала список книг почитать. Я их добросовестно прочла, подписалась на разные "рассылки" и стала всем говорить, что хочу побыть менеджером. Во время одной из таких пламенных речей, я узнала, что у нас есть в компании ПМ, который тоже перешел из разраба в менеджеры. Я ему написала, поспрашивала что и как, и сообщила, что очень хочу повторить его путь, а он помог мне связаться с командой, которая как раз искала себе ПМ. Был собес, мне сказали, что на вопросы отвечаю адекватно, молодец, что загорелась, но очень нужен опыт, так что сори, будем на связи. А потом через пару недель мне сообщили, что никого пока не нашли, а место горит, так что если ты очень хочешь, то приходи (правда повышения зарплаты не жди н-ное кол-во времени). Так я стала "менеджером".
Это конечно не про программирование, но суть та же. На текущей своей работе, я сказала, что не хотелось бы быть только фронтом, хочу влезть в наш бэк. И мне стали подсовывать и такие задачи.
Так что в моем случае много энтузиазма, разговоры, и наличие базовых знаний сделали свое дело. Как заявляли мне все HR: "нам лучше перевести человека внутри компании, чем совсем его потерять".
В Яндексе делал такой перескок из Android в бэкенд.
Сначала искал снаружи вакансии на Java/Kotlin + Spring, предварительно подготовившись к спрингу и к снижению зарплатки. Потом ещё рассматривал пару команд внутри, им я был ОК на джава бэкенд. Снаружи даже были какие-то офферы, но не там, где был Spring.
Но потом лид нашего подразделения сказал, мол, "а чё к нам на питон бэкенд не хочешь?"
Питон тогда я плохо знал, поэтому сначала ответил, что "да я ж ни в зуб ногой"
Потом подумал, подошёл к тимлиду питон-разработки. Поскольку мы тесно работали с бэкендерами, то я знал и команду, и Лида, а они знали меня
Ну и он мне сказал "почему бы и не да". Так я стал бэкендером на питоне. Около полугода догонял уровень миддла, ну а дальше стабильно работал.
Пока через ~1,5 года не устроился в другую компанию обратно в Android :D
Даже пытался немного в ML, оказалась интересная штука, но в итоге не стал туда дальше развиваться.
И в нашей же команде был другой пример парня, который из прикладного Android перешёл в бэкенд, в нашу же команду. Только в отличие от меня он ботал Pyhon и четко хотел в ML, поэтому после перехода на бэк продолжал учиться и занимался с репетиторами по матану и линалу, учился в ШАДе вольнослушателем. Успешно влился в саму разработку, потом влился в ML.
Через некоторое время после моего увольнения, бэкенд-лид говорил, что парень — машина просто и работает очень круто.
Вроде бы мои метания можно назвать сменой специализации, хотя почти все было на бэкэнде.
Изначально я был обычным Java-бэкэндером. Maven, Spring, Hibernate, и их друзья.
Потом внезапно по знакомству нашелся проект, где нужны были C++ и CUDA, а я их в дипломной работе использовал. В итоге вроде остался бэкэндером, но начал пилить мозги для панорамной камеры видеонаблюдения, поигрался с GStreamer, CUDA, OpenCV. Проект и весь RnD отдел схлопнулись, я переехал в Словению и опять сменил язык.
Опять же по знакомству, случайно нашел работу (с релокейтом), стал по сути фуллстеком, начав пилить десктопное приложение - робота для алготорговли на C# (такого было пожелание директора).
Потом конвертнулся в C#-бэкэндера, устроился в другую словенскую компанию, поигрался с .Net Core, ASP, и прочим околовебовым.
Выгорел, погрустил, нашел текущую компанию (все еще в Словении). Теперь помогаю пилить VR-плеер, написанный на Unity. Unity я вообще ни разу в жизни до этого не трогал.
Помоги Маше посчитать сколько раз я менял специализацию? :)
Вроде бы ни на какие жертвы я не шел. Почти каждый переход был без финансовых потерь, а зачастую наоборот с повышением.
Учитывая как хаотично мне подворачивались все эти возможности, никакого рецепта отсюда не вычленить, кроме как - быть открытым к любым возможностям и просто бросаться туда где интересно.
А "чего-нибудь еще" - это, например, чего? =)
Полагаю, истории ещё отличаются, т.к. в некоторые сферы можно зайти плавно, не меняя работу, а в некоторые – нет. Например, клиенты и бэк часто в одной команде и постепенно можно брать мелкие задачки по "добавлению поля в API". Но вот с каким-нибудь машинным обучением так уже вряд ли выйдет.
Много лет писал игры на Unity/C#. Начинал знакомиться с движком вообще в 2009, но платили мне тогда за продюсирование и гейм-дизайн. К 2012 мне это надоело, и перекатился на фуллтайм в разработчики — правда, с программированием я знаком где-то с 7 лет (QBasic на 486 с модемным интернетом от первого в Москве провайдера), за плечами и матан, и олимпиады, и Кнут, пройденный ещё в школе, так что основы были, и перекатываться было несложно.
Но когда годами работаешь с закрытой технологией, которую никак нельзя исправить, а можно только заучивать разные баги от версии к версии, начинает подташнивать. В 2016 меня взяли работать на проекте, где вместо Unity использовался Cocos-2dx, и писать надо было на JS, да ещё и бэкенд на Node немного трогать. Конечно, я очень быстро вместо этого переехал на Typescript, и не-типизированный JS не трогал после этого никогда. В 2019 на очередной проект на юнити меня позвали уже не лидом, а целым техдиром, и технические и бюджетные ограничения привели к тому, что мне надо было своими руками делать и бэк, и фронт: так я написал свой первый полноценный бэк на ноде с нуля. А после того, как тот проект загнулся, обнаружил, что я в принципе уже вполне себе тяну на бэкенд сеньора: и чистый SQL с закидонами и правильно расставленными индексами могу написать, и API спроектировать, и задачки на графы тоже пригождаются иногда.
А теперь снова приходится менять специализацию, но уже для хобби-проекта: учу React и CSS. Впервые учился верстать в 98 ещё на таблицах и фреймах, и очень надеялся больше в это никогда не вернуться, но когда надо делать всё, то надо делать всё.
Честно говоря, чем дальше работаю, тем меньше такие переезды с одного стек напрягают и вызывают проблем. Фундаментальные знания, навыки и привычки оказываются гораздо важнее, чем знание конкретной библиотеки.
Начинал с C#, потом плавно в рамках своей же должности перешёл на Питон. Звучит странно, но в один момент мы действительно сместили фокус с одного языка на другой. А на C# наняли других людей. Удобно, когда проект совсем молодой и маленький, можно пробовать много всякого интересного. В итоге у меня было что-то около 6-12 месяцев использования C#, а дальше только Питон.
Дальше поменял несколько работ, где-то 7 лет писал бэкенды на Питоне.
А дальше у меня просто не было выбора - устроился работать в Microsoft, хочешь не хочешь, пиши на C#. На интервью вообще про него не спрашивали, только более общие вещи.
Кажется, тут может быть сложно пройти System Design интервью, если ты до этого писал под мобилы, а устраиваешься в бэкенд, но примерно для этого и есть всякие там Cracking The Coding Interview и кучи постов в блогах.