Что нужно знать, чтобы начать работать в IT?
Привет-привет, DTF!
Во вчерашней статье, появился интересный комментарий. Я начал на него отвечать, но понял, что вопрос настолько хороший, что заслуживает отдельный статьи.
Собственно, сам комментарий:
Человека интересует, какой требуется минимальный порог вхождения в IT-индустрию, в частности в профессию Python-разработчика.
Наверное, этот вопрос не потеряет свою актуальность никогда. Прекрасно помню, как сам задавался им, в бытность студента 1-2 курса. Проблема здесь в том, что к этому моменту ты уже понимаешь синтаксис какого-то языка программирования, можешь написать на нём что-нибудь средне-сложное, за плечами уже несколько серьезных лабораторных (если ты студент) или пет-проектов (если самоучка). В этот момент возникает логичный вопрос - а достаточно ли этого, чтобы мне платили за это деньги?
Разрушу Ваши ожидания - да. Более того, даже если Вы чувствуете, что эти знаний недостаточно - всё равно да.
Но давайте сделаем оговорку, не стоит сейчас сразу нестись сломясь голову и отправлять свое портфолио во все компании. Моя мысль в том, что переход от обучения к работе, должен осуществляться как можно быстрее. Если Вы пересидите на этапе с обучением, то очень велика вероятность столкнуться с синдромом отличника.
Мой, субъективный, опыт, показывает, что лучше всего мы прокачиваем свои навыки в реальных проектах. Когда есть какая-то цель, четко сформулированное ТЗ, где есть ответственность за доведение проекта до конца. Не маловажным фактором, также будет наличие наставника, у которого Вы будите перенимать опыт.
Но есть же какой-то минимальный порог вхождения? Не будут же меня обучать с нуля? Да, не будут. Вам платят деньги, за то что Вы уже умеете, а не за то, что хотите чему-то обучиться. Однако, Вы, можете придти с минимальными знаниями, необходимыми для работы Junior-разработчика, а уйти уверенным мидлом или даже сениором.
Хорошо, с этим разобрались. Набираемся минимального опыта и штурмуем хедхантер. Но внимательный читатель, заметит, что вопрос был, в чём заключается, этот минимальный опыт? К чему мне стоит готовится?
Я вывел простой алгоритм действий, который поможет Вам идти на собеседования, не беспокоясь за уровень своих знаний (на Junior позицию, уж, точно).
Давайте, рассмотрим на примере реального кейса из комментария в начале статьи. Человек выделяет несколько своих крупных пет-проектов, в числе которых программа анализирующая log-файлы и скан-переводчик. Предположу, что оба проекта не обошлись без методов машинного обучения (по крайней мере, человек с ними знаком и где-то пробовал).
Шаг 1. Анализ рынка
Необходимо зайти на площадки с вакансиями и по ключевым словам найти, какие специалисты сейчас востребованы на рынке для вашего ЯП. Попробуйте полистать вакансии, уточнить свой запрос при необходимости.
Беглым поиском глазами, я замечаю, что на данный момент, больше всего вакансий для спеца со знанием Python это - Django-разработчики и специалисты Data Science.
Как я отметил выше, мне кажется человек знаком с Machine Learning и второе направление ему будет ближе. Пройдясь по вакансиям в этих направлениях, я могу составить примерный портрет специалиста из этой области.
Специалист Data Science
- Нужно знание Python (библиотек pandas, numpy, sklearn, pytorch, etc)
- Нужно знание SQL
- Было бы неплохо иметь опыт 1-3 года
- Высшее математическое образование
Тут важный момент, что далеко не обязательно соответствовать всем этим требованиям. Если какое-то из требований (как например, знание английского языка) будет для компании критично, она вынесет это жирным текстом в первом же предложении. Как правило, этот набор джентельмена, кочует из одного объявления вакансии в другое и если Вы не подходите, по какому-то из пунктов - не стесняйтесь отправлять своё резюме.
Вернемся к нашему кейсу, допустим человек соответствует первому пункту, но не подходит по трём остальным. Что делать? Навёрстывать упущенное.
Для начала разберемся с SQL - это базовый навык для специалиста из области Data Science, без него нас не возьмут на работу. Придётся учить.
С высшим образованием не всё так однозначно. Хорошо если оно есть, не беда если его нет. Давайте зададимся, что конкретно из вышки математика нам понадобиться в работе? Теория вероятности и мат.статистика (на каждую отводится по семестру). Можем в интенсивном темпе полистать методички, поучить данный материал.
В сухом остатке, через ~полгода мы имеем соответствие 3 пунктам из 4. Остался опыт. Но как его добыть, если без него никуда не берут? На самом деле это стереотип, который поддерживают сами же работодатели, указывающие обязательность опыта работы в своих объявлениях, даже на позицию Junior-разработчика.
Если Вы придёте на позицию Junior-разработчика в направление Data Science с базовыми скиллами в SQL, знанием ML библиотек на Python и мат. статистики, вопрос приглашения на собеседование - дело пары недель.
Шаг 2. Подготовка к собеседованию
Вот, Вы, получили желаемое приглашение на собеседование. Что дальше? Ну, не стоит радоваться раньше времени. Мы могли написать в отклике всё что угодно, работодатель это понимает и будет тщательно нас проверять.
Но и здесь не стоит паниковать. На самом деле, на YouTube есть тысячи примеров собеседований на ту или иную вакансию. Есть даже целые каналы компаний, которые записывают свои собеседования и делают на этом контент. После того, как посмотрели несколько подобных видео, Вы, сможете легко смоделировать в своей голове возможный диалог на собеседовании. Это придаст Вам уверенности в себе и своих силах.
Шаг 3. Решаем задачки
С определенной долей вероятности, на собеседовании Вас будет ждать задачка, решив которую, каким-нибудь оптимальным способом, Вы, существенно повысите свои шансы на успешный оффер. Но как к ним подготовится? Тут Вам понадобится два сайта:
- LeetCode - на нём хранятся задачки с собеседований всех ведущих IT-компаний. Не переживайте, Ваш, работодатель считает себя ничем не хуже Google или Apple, и с определенной вероятностью возьмёт задачку с собеседования в эти компании.
- CodeWars - хороший сайт, для расширения границ познания. Можно посмотреть, как одну и ту же задачку решают тысячи программистов. Если хотите удивить работодателя необычным решением - Вам сюда.
Выводы
Отвечая на вопросы вопрошающего - подытожим.
1. Где найти информацию о минимально необходимых навыках для трудоустройства?
- На сайтах с поиском работы, среди вакансий по интересующему Вас направлению
2. В каком направлении мне двигаться?
- Если моя догадка верна, и Вы уже сталкивались с Data Science/Machine Learning и Вам это нравится, то продвигайтесь по данному направлению. Дальнейшие шаги, я описал в статье выше. Если же я ошибся и у Вас только общие представления о Python, то взгляните также на Django, может это привлечёт Вас больше.
Вот такой текст назрел у меня в голове на эту тему. Часто анализируем с учениками, их дальнейшее развитие. Я стараюсь прислушиваться к ним и придерживаться описанного выше плана, чтобы определить их дальнейший вектор развития. Надеюсь помог и Вам :^)