Стать разработчиком, если ты не технарь и у тебя нет профильного диплома, вполне реально — много подобных примеров можно найти в сети. Считается, что Python — один из самых простых способов войти в эту профессию, но есть масса нюансов, которые могут повлиять на обучение. О том, как его построить, чтобы не обжечься на первом языке программирования, рассказывает преподаватель Python в GeekBrains и главный инженер Сбера по разработке в Data Analytics Вероника Голубева.
Стать разработчиком может человек с любым бэкграундом. Если не верите — попробуйте погуглить: в интернете хранятся тысячи историй о том, как гуманитарий стал программистом. Главное — работать с материалом, который дают преподаватели.
Например, у меня был студент — бизнесмен, он упорно сдавал задания, скидывал кейсы из работы своей фирмы, которые пробовал решить с помощью полученных на курсах знаний. Этот человек был заинтересован разобраться, понять профессию и применить навыки в своей сфере. И ему не мешало отсутствие технического бэкграунда.
Достаточно легко язык программирования Python дается гуманитариям — лингвистам, филологам. По сути, он как иностранный язык, только легче: так же нужно изучать синтаксис, но больше логики, строже правила и нет исключений. Перейти на Python с другого языка программирования очень легко, но, если вы новичок и выбираете, с какого языка начать, начните с Python. На нём будет гораздо легче, чем на условном Java, обучиться базе — циклам и объектно ориентированному программированию.
Вообще, к нам на курсы Python приходят люди с разными целями и навыками: есть и технари, которые хотят углубиться в профессию, и люди из не связанных с программированием сфер — им тяжелее, но программа гибкая, поэтому успешны и первые, и вторые. На курсах программирования Python мы ставим задачи, максимально приближённые к тому, с чем придётся столкнуться будущим разработчикам на работе, и это хорошо для наших студентов. Я в университете учила C++ — решала задачи на программирование шахматной доски. В дальнейшем эти знания мне нигде не пригодились, а время и силы потрачены.
Чтобы начать обучение языку Python, достаточно восстановить базу по информатике из школьной программы: алгоритмы, блок-схемы. Если у вас есть понимание алгоритмов и вы можете построить алгоритм решения квадратного уравнения, этого достаточно.
Как и где учиться
Чтобы быть крутым разработчиком, важно быть терпеливым и усердным. Во время работы нужно будет разбираться в интерфейсах, находить логи, уметь их читать, искать ответы в Google — скорее всего, на английском. На один и тот же вопрос Google может ответить десятками почти одинаковых статей — отличаться они могут одним предложением, но именно в нём и будет скрыт ответ.
Наш курс построен так, что большую часть навыков студенты отрабатывают в домашних заданиях: если не хватает времени, можно делать их и пропустить лекцию. Это обосновано тем, что, прослушав курс, научиться программировать нельзя — нужна практика. Если что-то непонятно, можно поискать ответ в сети или спросить преподавателя. Это гораздо эффективнее, чем если просто слушать лекцию и не делать домашку.
Чтобы сохранить мотивацию, можно смотреть видео о профессии: на YouTube есть классные ролики о том, что можно научиться делать, они цепляют.
Программирование на Python — это сложно. Не понимать что-то — нормально.
Некоторые приходят учиться, думая, что программировать легко и у них всё получится с первой попытки. Когда в процессе обучения оказывается, что это не так, люди расстраиваются и опускают руки. В IT нужно постоянно учиться: все меняется и всегда есть что-то, чего ты ещё не знаешь.
Однажды студент мне написал, что прослушал лекцию и ничего не понял. Я спросила, что именно, но он настолько запутался, что даже не смог сформулировать. В итоге я написала ему огромное сообщение, где в метафорах разъяснила всё, о чём говорилось.
Что-то не понимать — нормально. Нужно просто двигаться дальше: писать, учить. Это ужасный момент разочарования, но, если продолжать биться, потом поймёшь, что на самом деле это было очень просто.
Чтобы было легче, нужно много читать: про типы данных, основы программирования на Python, циклы, условия. Перед тем как начать кодить, рисуйте блок-схемы, пишите решения задач русскими буквами. Это первый шаг к пониманию. После этого повторите на синтаксисе языка. Сделали? Значит, вы уже что-то можете.
К типам данных (словари, списки) я советую регулярно возвращаться в течение всего обучения. Получаешь опыт — возвращаешься снова: тогда и понимаешь, для чего это тебе было нужно. А ещё про эти самые типы очень любят спрашивать на собеседованиях.
Можно учиться самостоятельно, но это сложно: нет программы, структуры и понимания, как это делать. В интернете бездна информации, ты пытаешься её изучать, систематизировать, но тонешь и не понимаешь, как её применить. Так можно упустить важное и заморочиться на мелочах. Одна моя одногруппница так же училась Python-разработке: решала сугубо теоретические задачи. В результате у неё нет понимания, как применять полученные знания в работе.
И некоторые учебники не предполагают самостоятельного изучения Python, например Марка Лутца немногие смогут дочитать до конца. Такие книги хороши для закрепления знаний. Как вариант, можно попробовать занятия на Coursera или подобных ресурсах. Есть сайты и даже игры с базовыми задачками по программированию. Но в большинстве своём они далеки от того, что придётся делать на работе. Обучение Python на курсах дополнительно экономит время: вам не нужно искать ответы самостоятельно. Вы можете задавать их преподавателю, чтобы лучше разобраться в теме. Но читать учебники нужно. Они дают возможность глубже вникнуть.
Наша программа исходит из практики: мы даём задания, которые максимально приближены к будущим рабочим задачам. В конце обучения есть курсовая работа — готовая программа. Это реальные проекты, которые можно будет показать на собеседовании.
Лучший учебник для новичков, по моему мнению, «Изучаем Python. Программирование игр, визуализация данных, веб-приложения» Эрика Мэтиза. Ещё можно послушать онлайн-лекции на YouTube, например такие.
Какой бы путь вы ни выбрали — самостоятельный или курсы, — важно уметь себя организовать. Определитесь с тем, для чего это делаете, какая перед вами стоит цель, какие шаги нужно предпринять для её достижения.
Как устроиться на работу джуном
Обучение Python с нуля — это только первая ступенька: сразу после курсов стоит устроиться на работу по новой специальности. Немного расскажу о том, как это проще сделать и с какими вопросами вы можете столкнуться.
На дипломы о высшем образовании сейчас никто не смотрит. Важно, что ты умеешь и как проявишь себя на собеседовании. Среди моих знакомых много успешных разработчиков с образованием из иной сферы: есть психолог и химик, например. Есть друзья-айтишники вообще без дипломов, но они крутые специалисты в разработке, поэтому никого не интересует их бэкграунд.
Для работы нужно знать треть от требуемого в вакансии. В списке требований практически любой вакансии джуна куча библиотек, часть из которых на самом деле не понадобится. Если вы знаете хотя бы 30–40 % из того, что требуется, смело идите и пробуйте.
Найти работу легко. На рынке острый дефицит кадров, огромные запросы и ужасная текучка. Новичок может устроиться на позицию аналитика данных на зарплату 90–120 тыс. рублей. Хорошего уровня джуниор может рассчитывать на 80–90 тыс. рублей. Есть вакансии с зарплатой в 30 тыс. — они дают прокачать опыт, но больше подходят студентам вузов, которые ещё не заинтересованы в высоком доходе. У нас на курсах бывают те, кто вряд ли может себе позволить низкую зарплату, но джуниору реально найти вакансию с хорошей оплатой. Правда, это может занять чуть больше времени.
Идите туда, где круче команда. Для старта в профессии не стоит рассматривать компании, где что-то на коленке пилят 1–2 человека. Нужно идти в большую команду, где будут более опытные сотрудники и сложные проекты. Да, часто работодатели не готовы кого-то обучать, но берут на стажировку — это хороший вариант, чтобы набраться опыта, если вы можете себе это позволить. В перспективе это откроет доступ к более высокооплачиваемым позициям.
Продолжайте учиться. В первые 3 месяца на новом месте вас может настигнуть стресс: вы будете осваиваться, привыкать, вникать, что делает компания и для чего. А потом стоит выдохнуть: как только поймёте, что справляетесь с базовыми задачами, ищите, как сделать лучше. Это способ быстро дорасти до мидла.
По сути, джуниоры отличаются от мидлов только опытом работы: у первых есть только знания, которые они учатся применять, а мидлы уже понимают, на чём они специализируются и как эффективно решать рабочие задачи. Мидлам нужно хорошо знать библиотеки и понимать, какие алгоритмы они используют и почему. Алгоритмы — это база: их спрашивают даже на собеседованиях в Google и Amazon. Без знаний алгоритмов невозможно заставить код работать хорошо и быстро. Если вы пытаетесь прокачаться до мидла, попробуйте прочитать книгу «Python Cookbook» Дэвида Бизли.
Как проходить собеседования
Мы в GeekBrains учим не только профессии, но и тому, как правильно проходить собеседования, чтобы быстро получить работу. Есть несколько советов, которые облегчат этот стрессовый и, возможно, непривычный для вас процесс.
Учитесь на ошибках. Джунам на собеседованиях задают практически одни и те же вопросы. Если вы не смогли ответить на них, запомните их и найдите ответы. На Хабре была яркая история про разработчика, который в Кремниевой долине ходил по собеседованиям на мидла, а потом дома разбирал сложные вопросы. Походив полгода, он устроился сеньором — на гораздо более высокую зарплату, чем планировал изначально.
Демонстрируйте логику. Рассуждайте вслух, даже если не знаете ответа. Так вы покажете тем, кто вас собеседует, что понимаете логику решения задач. Особенно это актуально для логических задач, которые часто задают на собеседованиях на позицию джуниора.
Готовьтесь. Перед собеседованием есть смысл поискать в сети примеры вопросов и задач, порешать их дома. Так вы будете чувствовать себя увереннее. Возможно, на собеседовании вас попросят написать код решения на листочке — будьте к этому готовы. Посмотреть краткие пояснения и потренироваться решать задачи можно здесь и здесь.
Список самых частых вопросов
Когда я в Сбербанке участвую в собеседованиях на вакансию питониста, обращаю внимание на то, умеет ли кандидат решать задачи на оптимизацию, быстро ли отрабатывает код, который он пишет. Вот о чём ещё могут спросить:
изменяемые и неизменяемые типы данных — это спрашивают практически на любом собеседовании;
итератор, генератор, декоратор;
разница между листом и генератором — об этом обязательно спросят;
магические функции;
реализация алгоритма сортировки слиянием Python;
multithreading vs. multiprocessing.
Вот здесь можно посмотреть подробнее про типовые вопросы.
Из софт-скиллов мне важно умение работать в команде, общаться, выражать свои мысли, презентовать себя. Понятно, что собеседование — это стресс, и там нервничают все. Но по тому, что и как вы делаете, зачастую становится понятно, уживётесь ли вы в команде, комфортно ли будет с вами работать. На наших курсах мы учим работать в гибких командах по Agile и Scrum: эти методики сейчас применяют практически все команды разработки.
Обычно этап личной беседы наступает уже после предварительного отбора, прохождения тестов, решения задач. Когда понятно, что ты подходишь. Бывает и так, что из-за волнения человек проходит техническое собеседование, но проваливает собеседование с руководителем. Я наблюдала ситуации, когда в итоге на работу брали того кандидата, который уверенно говорил всякие непонятные для руководства слова, хотя объективно по уровню знаний уступал своему сопернику. Всегда есть тот, кто знает и умеет больше тебя. Но это не повод себя обесценивать. Да, ты джуниор, но ты классный джуниор. А всему, чего не знаешь, ты научишься.
daniilgorbenko
И один важный совет: не бойтесь показать, что вы чего-то не знаете. Рассуждайте, пытайтесь прийти к какому-то выводу, делайте логические выводы из того, что знаете. Если вы чего-то не знаете, это будет сразу понятно, но если вы начнете рассуждать и говорить, то это даст вам большой плюс, чем просто сухой ответ «не знаю, давайте дальше» (конечно, не стоит зарывать себя, нужно просто размышлять).