Как сменить свою специальность на программиста
Вам надоела ваша работа? Нет перспектив? Возможно, только начинаете свой путь?
В данной статье мы рассмотрим какой путь надо пройти, сколько времени, сил и денег надо затратить чтобы с нуля дойти до уровня, когда вам начнут присылать приглашения на работу за рубежом на очень вкусных условиях.
Здравствуйте, меня зовут Александр Зеленин. Я программист с более чем 15 годами опыта. За это время удалось поработать на позициях от веб-разработчика до CTO, в компаниях разного уровня (от 5 человек, до 2000+, стартапах, корпорациях), в разных странах и городах. Так же собеседовал более тысячи человек за всё время, вёл образовательные курсы, менторил и так далее.
* Данная статья является исключительно моим мнением. Не претендует на полность, абсолютную корректность, отсутствие ошибок, неточностей. Используйте здравый смысл при принятии любых решений и несите ответственность за них лично.
— Обязательно ли релевантное высшее образование?
Нет. Оно напрямую не влияет ни на доступную работу, ни на зарплату, ни на возможности. Диплом немного помогает с процессом получения визы, но ни разу не являлся стопором. За всю мою карьеру диплом меня спрашивали только когда уже всё подписано и нужно оформить проживание в стране. Всегда работодатель находил способы решить этот вопрос.
— Но, всё же, с высшим образованием проще?
Да, так как многие из тем так или иначе затрагивались при обучении. Даже если всё забылось, то восстановить знания выйдет быстрее. То если оно есть — хорошо, нет — ну и фиг с ним.
— Я интроверт. Программист это же самый круто вариант для интровертов, да?
Ну... как сказать. До определённого момента может быть и да, но уже через пару лет для роста потребуются коммуникативные навыки. Можно решать эти вопросы по мере необходимости.
— Сложно учиться?
Да, очень. Конечно, это всё индивидуально, и кому-то это даётся очень легко (мне лично это всё казалось очень лёгким, но и путь был долгий), но, в основном, все кто переучивался говорят, что это очень сложно.
Основная проблема в том, что начинаешь в новом для себя поле (особенно когда был экспертом в другом) с самых низов. Постоянное ощущение что тупой, знаешь недостаточно, медленно решаешь и так далее. Это серьёзный вызов. Намного серьёзнее чем кажется на первый взгляд.
— Оно того стоит вообще?
Это зависит от вашего видения мира, текущих условий и кучи других факторов специфичных для вас.
Специалист высокого уровня может рассчитывать на следующее (на момент написания этой статьи):
а. Для РФ: зарплата в районе 200 000 рублей белая, ДМС (на семью), печеньки, свободный график, оплата образования/садика детей, поездки на профильные конференции, высокую стабильность, интересные задачи, полный пакет для переезда (квартира на месяц, билеты, перевозка грузов, помощь с поиском жилья и т.п.)
б. Для Европы: зарплата в районе 5000 евро, и в принципе всё что и выше. В пакет для переезда часто ещё включают единоразовую выплату в районе 7000 евро. Часто ещё местная пенсия начинает капать и есть возможность позже получить вид на жительство / гражданство
в. США/Канада/Швейцария/Мидл Ист: зарплата в районе 10000$, и все плюшки выше
— Что значит «специалист высокого уровня»?
Принято условно делить специалистов на 3 уровня. Часто очень разнятся требования, но в общем случае они следующие:
1. Junior — может эффективно решать задачи, но требуется помощь более опытных коллег при столкновении с неопределенностями (не понятна задача, не ясно как решать, не ясно кого спросить и так далее)
2. Middle — самостоятельная единица, которая может и задачу решить очень хорошо, и всю информацию собрать сам из нужных источников
3. Senior — эксперт, который хорошо знает не только программную часть, но и понимает бизнес, в котором работает и может предлагать решения на совершенно разных уровнях
— Окей, и сколько времени учиться на каждый из уровней?
Самый первый этап, пожалуй, самый сложный психологически. На Junior’а вам потребуется около 1500 часов чистого времени (это полгода по 8 часов каждый день).
После чего джуниором проработаете около 1.5 лет.
После чего мидлом ешё года два.
Если не меняли предметную область, то добро пожаловать в сеньёры (4-5 лет суммарно).
— Погоди, погоди… Я вот видел курсы, там 3 раза в неделю по 2 часа и через два месяца мне обещают зарплату в 100 000 в месяц!
Ну если обещают, значит так и будет (нет).
Я вёл несколько подобных курсов исключительно из личного интереса. Даже увеличив нагрузку на учащихся по часам в 2.5 раза (по 5 часов), к концу второго месяца получался хороший “обзор” технологий.
Конкурентоспособность после таких курсов примерно никакая. В зачёт “опыта” такое не идёт. Ну т.е. вы можете в резюме написать хоть 5 лет опыта, но опыта это не даст.
— Окей, окей, а вообще польза от курсов платных есть?
Вообще есть, если не сидеть и не ждать у моря погоды, а активно использовать возможность общения с ментором и при условии, что помимо этих курсов (которые вроде 6 часов в неделю) вы ещё вкладываете свои 34 часа сверху.
— Какие курсы порекомендуешь?
Бесплатные. Я серьёзно. Главная ценность курсов — общение с ментором. На этом их польза заканчивается. Проблема многих подобных платформ в том, что: на них много участников и внимание ментора рассеивается, менторы не квалифицированы.
Часто платформы предлагают какие-то сущие копейки за их проведение, что практически сразу исключает появление хороших специалистов готовых их вести (кроме идейных, которых мало и фиг найдёшь).
— Эээ, так как тогда учиться?
1. Обязательно нужно найти личного ментора.
Без этого весь процесс будет либо замедлен в разы, либо уйдёте, не туда потеряв кучу времени. Как найти ментора? Лучший способ это среди друзей и знакомых, кто либо уже программист, либо учится (хотя бы полгода). Обычно программисты не против делиться знаниями и помогать.
Другой способ — это нанять ментора. Минус этого способа в том, что он стоит денег. Плюс в том, что можно более точно подобрать под свои нужды. Тут надо учитывать зарплату хороших спецов (см в предыдущих вопросах) и понимать, что даже несколько часов в неделю обойдутся прилично.
2. Определиться, где вы хотите работать и что делать
Это нужно сразу, чтобы подобрать релевантные технологии для изучения и быть полезным этой компании через полгода
3. Составить план и поставить сроки
Составить план поможет ментор. Самому это нереально, потому что ты не знаешь то, что ты не знаешь
— Ментор, ментор... что, совсем никак без него?
Можно и без него. Но тогда надо намного больше читать, делать, пытаться ориентироваться во всём и перепроверять себя постоянно.
Мне доводилось общаться с людьми, у которых 10+ лет опыта, а по знаниям они даже до джунов не дотягивают. Как так выходит — вопрос сложный. Отловить момент стагнации непросто.
Можно мониторить рынок, смотреть какие технологии ищут, смотреть разные решения свежие и так далее.
А потом найти ментора. Даже если ты уже сеньёр, всегда круто получить консультацию от более опытного специалиста.
— Статья, вроде, про то как «сменить» специальность, а ты говоришь что нужно пол года по 8 часов. Как совмещать с работой то? Может год по 4 часа?
Подловили. Это очень сложный вопрос. По предыдущему опыту сокращение количества часов увеличивает срок обучения непропорционально (т.е. по 4 часа будет не ожидаемый год, а, скажем, 1.5-2). Так же, в зависимости от текущей работы, усвоение сложного материала может просто не идти и всё, то есть совмещать может не получится. Это всё зависит, всё индивидуально.
Один из способов — это накопить средств и уделить полгода на такой переход. Это может быть очень сложным, когда уже есть семья или другие требования в виде ипотек и подобного. А ещё может получиться что с ходу сложно найти работу или какие-либо непредвиденные обстоятельства типа короновируса.
Другой способ это… ну фигачить по полной. А вы чего хотели? :-D
— У меня друг закончил курсы за два месяца и начал получать 5000$ в месяц сразу после
Несколько вариантов: либо он врёт, либо он гений (в этом случае курс тут не причём, совпало), либо ему повезло (знакомый нанял по-хитрому и т.п.), либо это что-то прям супер узкоспециализированное и он нашел лазейку. Пусть расскажет как. Ещё бывает, когда стартап не знает куда деньги от инвестора тратить и переплачивает явно. В первой же компании с адекватной разработкой картина будет совсем иная.
— Где искать работу?
В столицах или, минимум, городах-миллионниках. Если вы не в Москве, Киеве, Минске или где вы там — готовьтесь к переезду. Локальные рынки слишком малы и не могут предоставить достаточно вакансий (особенно для начинающих специалистов), возможности для роста малы и так далее. Вообще если удалить всю статью, и оставить только эту рекомендацию — это будет одним из лучших решений для карьеры (!, но может быть не лучшим для других ваших факторов).
Есть исключения, когда офисы разработки некоторых крупных компаний находятся в небольших городах. Если вы целите в такую компанию, или она есть в вашем городе — желательно заранее сравнить все варианты друг с другом.
— Можно ли устроиться сразу на удалёнку?
Можно, это будет сложнее, в первую очередь, для вас. Не потому, что сама работа отличается, а потому что ответы на вопросы будут с задержкой, не будет возможности что бы подошел человек и пальцем показал, где что и почему. Да, есть куча инструментов сейчас (тивью, чаты, скайпы, доски разные), но в плане комфорта и скорости коммуникации оно отличается. Если целить на удалёнку, то надо быть готовым фигачить х2 от нормы, что бы хотя бы поспевать за адекватным темпом.
— Мне 45. Возьмут ли меня Juniur’ом без живого опыта?
Да, возьмут. Возраст вам даже в плюс сыграет, потому что много опыта из жизни хорошо перекладывается на технологии. С большой вероятностью пройти путь до сеньёра у вас выйдет намного быстрее, именно благодаря житейскому опыту (который начинает играть большую роль со стадии “мидла”, чем технические навыки). С релокациями в некоторые страны может быть сложнее если и возраст большой, и вышки нет, но это тоже всё решаемо.
— Какой язык учить?
Зависит от того, чем вы хотите заниматься. Если не хотите играть в лотерейку и пойти по надёжному пути — Java ваш выбор. Во всяком случае он позволит пройти весь путь без сильной технологической смены и с очень хорошей оплатой.
Если у вас есть друг, который обещает устроить вас PHP разработчиком уже через полгода — это может быть также хорошим кандидатом. Потому что язык не важен.
— Я думал ты пошутишь про «английский». Надо его учить?
Не на старте. Несмотря на то, что куча документации, информации и статей идут на английском, это всё можно поглощать через переводчики. Английский понадобится, когда решите переезжать. Хорошим моментом для начала изучения может быть через пару месяцев после устройства на работу Junior’ом. И да, обязательно нужно будет общение с носителями языка — будьте готовы в это также вложить денег.
Про переводчик мини-пример: буквально недавно пришлось столкнуться с библиотекой, актуальная документация для которой существует только на китайском (MyBatis-Plus) — гугл транслейт помог мне разобраться что к чему без особых приключений.
— Погоди, ты сказал язык не важен... что?
Это не совсем так. Он важен, конечно, но после определённого этапа (senior) вам будет всё равно на каком языке писать. Концепты, на которых строится программа, переносятся из языка в язык и именно их изучение занимает намного большее время.
Условно говоря, это можно представить, что профессиональный писатель решил написать рассказ на не родном языке — рассказ получится не такой выразительный и красивый, но сама история будет крутой, потому что он уже знает, как писать крутую историю. Язык — это лишь инструмент донесения.
— Окей, можешь накидать мне план что делать то?
1. Определитесь реально оно вам нужно. Стоит ли оно того?
2. Решите чем хотите заниматься. В идеале составить список компаний, в которых хотели бы работать. В идеале выбрать, где хотите быть через полгода, через два и через пять.
3. Напишите в компании, где хотите через полгода работать. Узнайте условия найма, что нужно выучить и так далее.
4. Составьте план тем, которые надо изучить (из описания вакансий и информации из пунктов 2 и 3)
5. Учите, практикуйте. Каждый день. Каждый. Обязательно. Без пауз.
6. Решайте задачки на платформах типа Leetcode и Hackerrank. Минимум 1 в день, хотя бы easy уровень.
7. По мере продвижения можно контактировать с рекрутерами из компаний и искать возможность чтобы вас наняли. Чем раньше, тем лучше. Для увеличения шансов можно попробовать сделать какое-нибудь мини-решение полезное для компании, чтобы заинтересовать их.
8. Найдите ментора :-)
Вне зависимости от языка список тем, которые я рекомендую включить в план: контроль версий (git, github), структуры и алгоритмы (знать все распространённые, big O, знать что “что-то такое есть” и уметь найти быстро), IDE (зачем, как настроить), отладка и профилирование (как искать ошибки, точки остановки и прочее), тестирование (написание хотя бы простейших тестов и понимание что включать в них), базы данных (реляционные, сетевые, документо-ориентированные), документирование (как писать, зачем), планирование и приоритизация (сколько займёт, что делать и когда), изучить Style Gudie по вашему языку, linux (базовое понимание что там, зачем и куда, умение запустить свой код там), пакетные менеджеры (как пользоваться, зачем, как поддерживать), семантичное версирование (зачем оно, как следовать), фреймворки (на нужном языке, хотя бы для ознакомления несколько), инструменты для сборки и автоматизации, криптография (базово что существует, а не как сделать), авторизация и аутентификация (что есть что и что для этого существует).
Насколько глубоко копать в каждую тему — зависит от условий, что решили изучать и так далее. На какие-то темы хватит и 15 минут, на какие-то можно и месяц-два выделить из полугода.
— Я видел, что компания, которая мне интересна обучает с нуля и нанимает. В чём подвох?
В низкой зарплате первые год-два. Но вообще это довольно крутой вариант, так как при должной мотивации это гарантированная работа, живой опыт и заинтересованные менторы, которые будут вас учить именно тому, что требуется компании. Теоретически это может снизить вариации после или удлинить срок роста, но это очень зависит от конкретных компаний и предложений. Если компания из списка вашего интереса имеет подобные стажировки с нуля — стоит к ним присмотреться.
— Жесть, всё сложно.
И да и нет. Сложнее всего на старте. Дальше многие концепции запоминаются и их не надо держать в голове. Очень многие вещи “гуглятся” за 10 секунд, но при условии, что вы знаете, что гуглить.
Пиздобол, очевидно