Хабрахабр

Говорят, выучить Python и стать программистом легко. Правда?

image

На биржах труда ищут мобильных разработчиков, девопсов, бэкендеров и фронтендеров, но где эти профессии в списках специальностей классических вузов? Работать в ИТ — круто, но путь в индустрию может быть совсем не таким, как описывают родители или преподаватели в школе.

В первом выпуске обсуждаем Python-разработчиков. Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. Свои истории рассказали Артем Сухаренко и Данила Лобанов. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и деньги сулит знание языка, как готовиться к первым собеседованиям и многое другое.

Для чего учить Python

Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России.

Долго на заводе он не задержался, но продолжил работать с электрикой дальше. «Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.

Артем пытался работать с микроконтроллерами, делать что-то более сложное, но всегда упирался в отказы работодателей и заказчиков — им это было не нужно. Программирование иногда подразумевалось. Хватало элементарных вещей, которыми, как говорит Артем, интересно заниматься только первые 15 минут, и особых скиллов для этого не нужно.

Пять лет вуза — просто чтобы крутить провода. «Может быть, я не туда совался, но развития для себя не нашел. Это было так обидно».

Он стал читать книги, пробовать разные задачи, но не решался сменить профессию. Однажды коллега подал Артему идею изучать программирование не для электрики, а чтобы стать разработчиком. Сначала не давали сменить профессию ипотека, финансовые вопросы, личный страх». «Желание у меня назревало долго.

В 36 лет Артем пошел на курсы Python-разработчика.

Веб-разработка стала клондайком для многих людей, кому интересны технические профессии. А Python — одним из популярнейших языков программирования для входа в профессию. Он привлекает простотой и универсальностью.

Но конкретно разработка на Пайтоне — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. «Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Сервер, его логику, взаимодействие с базами данных», говорит Алексей Петренко, декан факультета Python в Geekbrains.

У него простой синтаксис. «Думаю, это хороший выбор в качестве первого языка. У Пайтона низкий порог вхождения, на нем очень легко освоить азы программирования. Он прощает мелкие ошибки разработчика. За счет этого он становится языком, который подойдет для чего угодно». У него очень большая аудитория и обширная библиотека, плюс много внешних библиотек, которые делают разработчики со всего мира.

В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком. «Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка.

У него есть библиотека для мобильных приложений, для десктопных, на нем можно писать скрипты автоматизации для серверов, можно веб-приложения. «Питон понравился мне тем, что он может выполнять любую работу. Никто не пишет на нем десктопные приложения, и уж тем более мобильные. Но по факту на работу без глубокой математики требуются только веб-разработчики. Для этого есть другие языки, которые создавались специально под свои задачи».

От высшего образования он отказался и почти сразу пошел работать сисадмином. Данила тесно познакомился с компьютером относительно поздно, примерно в 18 лет. Начинал с самых элементарных задач, потом приступил к изучению Linux и программирования.

Не мог писать даже простейшие скрипты. «Я попытался изучать С, PHP, Java еще какие-то языки, но не заходило — начинал и бросал. Мне давали задачу, я смотрел на нее и не представлял, как делать. Когда я ходил на курсы по С, у меня получалось читать код, но не получалось его писать. Но мне давали аналогичную задачу, и я снова был в ступоре». Преподаватель садился рядом, писал построчно, объяснял, и я понимал, что именно так и надо было делать.

Около десяти лет он проработал сисадмином. После неудачных попыток Данила надолго забросил программирование. И когда почувствовал, что администрирование больше не приносит радости, решил дать разработке еще один шанс.

«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».

«Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Данила все-таки выбрал Python потому, что язык считался легким. Но потом понял, что ресурсы в интернете — это только основы и азы. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».
Они доступны всем и везде, и не помогут научиться программированию основательно.

Что надо знать перед началом обучения

Перед тем, как серьезно погружаться в изучение языка, Алексей Петренко рекомендует выяснить заранее — а нравится ли программировать вообще. «Я бы советовал попробовать написать несколько программ, пройти бесплатные уроки. Перед началом обучения лучше уже понимать, что такое переменная и как две переменные сложить.

Если только смотреть и слушать, ничего не получится. Чтобы курсы не стали бесполезными, поможет только одно — практика. Переписывать и думать, как он работает. Для новичка практикой будет даже переписать код, который преподаватель показывает на экране.

Два дня в неделю по два часа. Необходимый минимум для занятий — четыре часа в неделю. Главное не нырять в программирование с головой, чтобы не было буйства магии. Но я бы рекомендовал выделять час в день на написание собственного кода. Когда три дня учишь все подряд — в голове получается каша.

Начать может быть легко, но впереди ждут трудности

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником. Реалии оказались другими — там такие же люди, которые просто знают чуть больше».

Программа на тот момент была новая, мало обкатанная и по его впечатлениям сумбурная. Артему нравилось на курсах, но не все шло гладко. Один из преподавателей оказался настолько слабым, что его попросили убрать. О спорных моментах ученики высказывались, давали обратную связь, и недостатки исправлялись на ходу. Но остальные, как вспоминает Артем, были очень сильны.

После нескольких вводных курсов он перестал успевать за программой, и несколько раз покидал свой поток, чтобы повторять программу в следующем. У Данилы же все шло еще труднее.

Очень много информации в слишком сжатые сроки, очень большие домашние задания. «Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Я лично два раза переводился в следующий поток. Многие усваивали только часть материала. Что-то из этого приняли во внимание и сейчас реализовали». Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три.

Вещи, которые он не понимал, превращались в вещи, которые он не понимает, как можно было не понимать. В отличие от первых попыток учить С, когда ничего не получалось, Данила шел дальше. Как говорит Данила, умение программировать и знание языка — абсолютно разные вещи. Но преодолеть эту грань нельзя простым зубрением учебников.

Всем кажется, что раз человек может писать программы, значит может и научить. «Преподавать программирование тоже очень сложно. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать». Это не так.

А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. Алексей предупреждает, что Python легкий только в начале. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».

«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.

Я уже по три раза перечитывал выдержки, специально читал книгу, и все равно до конца не чувствую себя уверенным. Паттерны проектирования тоже нахрапом взять невозможно. За один месяц, который длится курс по ним, это вообще нереально освоить».

Есть такой модуль, и он мне прямо очень не давался в свое время. Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».

«В базовой конфигурации Python лежит около 70 функций и несколько десятков зарезервированных слов, но даже крутой программист не обязательно использует их все. То есть, чтобы выучить сотню слов и понять, что они делают, можно потратить одну-три недели при желании и активной работе», говорит Алексей.

Но код один раз пишут — десять раз читают. «Начинающие программисты пишут программы, которые тоже работают. Когда спустя время программу пытается прочитать другой человек, то возникают сложности.

В Python они называются «Пепы» (Peps). Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. Это соглашение программистов, которые пишут на Пайтоне. Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Оно рекомендует как правильно писать, а как неправильно.

Был Python 2. Несколько лет назад в Python произошло разделение. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. 7, а потом вышла версия 3. Все современные проекты и сторонние библиотеки пишутся под нее». Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию.

Как выдержать первые собеседования

Артем и Данила закончили курсы очень по-разному. Данила после нескольких попыток решил не заканчивать обучение, потому что не нашел взаимопонимания с преподавателем последних курсов, но зато нашел работу. Артем же вместе с сокурсниками уже во время обучения вырастил учебный проект в стартап, который начал приносить реальные деньги.

Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. «Проект назвался GoLiving. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Но тогда у нас даже были инвесторы».

Данила во время обучения на курсах полгода сидел без работы. Он уволился специально, чтобы учиться, но из-за частых переводов учеба заняла больше времени, и отложенные на это время деньги подходили к концу. Покинув курсы, Данила даже не успел начать изучение Django — самого популярного фреймворка для веб-разработки.

Зашел к ним на сайт, увидел вакансию бэкенд-разработчика и написал им письмо. «Под новый год я написал в компанию, которая просто находилась рядом с моим домом. Очень интересуюсь и буду развиваться. Говорю, хотел бы у вас поработать, хоть и учился, но знаю немного. И меня позвали на собеседование».

«Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. «Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации.

Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.

Во время интервью главное не молчать. Если дают задачу, на которую не получается сходу ответить, то надо просто рассуждать вслух, показывать, как думаешь, и что способен двигаться к решению.

Сходя на два-три собеседования заметишь, что вопросы начинают повторяться. И главное не отчаиваться, если первое собеседование оказалось неудачным. И тогда уже сам будешь выбирать, куда устроиться, потому что однажды из трех собеседований пройдешь сразу везде».

В итоге предложили работу, и я согласился». Данила на собеседовании больше всего удивило то, что ему не задали ни одного технического вопроса: «Не давали никаких заданий — просто общались о том, как я учился, чем интересуюсь.

«Кроме общих вопросов должны быть задачи на написание кода. Алексей же считает, что с такими компаниями стоить быть внимательнее. Но если ты пришел на собеседование программиста и не получил ни одного вопроса о программировании, то тебя либо собеседовал некомпетентный человек, либо ты будешь заниматься вообще чем-то непрограммистским. Даже если на бумаге карандашом — это нормально. Программистов надо проверять на программирование».

«Очень известный в Python-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. «Я считаю, не спрашивать технические вещи — это правильный подход», говорит Данила. Я с ним согласен. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать.

Но сейчас я работаю с такими вещами, которых на курсах не преподают. Конечно, навыки программирования важны. Меня больше настораживают компании, которые дают «нормальные» тестовые задания. Мне их показали уже на работе, и дальше я разбираюсь сам, читаю документацию, статьи, смотрю примеры. Ты смотришь и думаешь — а это правда тестовое или я сейчас бесплатный фрилансер?»

«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».

Один питонист и фулстек, который занимался вебом — куда пробовался и я. Проходило оно так: сидели два эйчара и два технаря. У него такой был сильный матан, что просто ого-го! Второй — судя по вопросам — совершенный надмозг.

Потом за меня принялся фулстек, погонял меня по Python, по Django. Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Не сложные, но с подковырками. Он прямо на бумаге накидывал примеры и спрашивал по ним.

Полез вглубь матана, спрашивал про алгоритмы, и поскольку компания работает с безопасностью и шифрованием, он меня и по нему тоже погонял. А потом за меня взялся дядька-надмозг. В общем, на шифровании сыпался, в алгоритмах держался, но не очень. Но в этом я совершенно не силен, поэтому отвечал как пятилетний ребенок.

Тем не менее — получил оффер. Честно, даже не ожидал, что мне перезвонят. Через несколько дней будет первый рабочий день».

На какие деньги стоит рассчитывать

Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.

В регионах 20 тысяч для джуниора тоже не редкость. «Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. Да, когда достигаешь уровня синьора, зарплаты могут переваливать за 200-300 тысяч. Это не такая уж высокооплачиваемая работа, как все утверждают. Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Но где таких зарплат нет? Там 230, 240 тысяч.

image

Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно. На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей.

При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».

Возможно, в программировании проще дойти до уровня выше среднего, чем во многих других сферах. Но для меня это вообще не было главным. Мне было интересно создавать программы».

Смотря как себя проявить. «Зарплаты зависят от региона», говорит Алексей, «Кто-то устроится за 40 тысяч как начинающий, кто-то может и сразу на 100 тысяч. Если покажешь, что можешь писать не только код, но и разбираешься в архитектуре, можешь набросать схему проекта целиком, всех модулей, сервисов, связей между ними».

«В электрике у меня была должность главного инженера, и зарплата была очень хорошая. Артем же вообще ушел в разработку на меньшую зарплату, чем имел будучи инженером. А в программировании можно развиваться до бесконечности». Я ушел, потому что хочу развития.

Несмотря на то, что в программировании одна из самых четких и понятных градаций по уровню мастерства (джуниор, мидл, синьор) — она все равно остается относительной и постоянно разжигает споры размытостью своих критериев. Споры в духе «ты в компании Х синьор, а в компании Y и джуниором не возьмут» или «пока десять лет не работал — не синьор».

Например, в Geekbrains есть обязательные курсы и дополнительное. «До уровня мидла можно прокачаться в течение года обучения. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. Человек, который не изобретает велосипеды. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.

Все зависит от фирмы, стремления и навыков. Если человек через три года работы называет себя синьором — почему бы и нет. Если человек одаренный и целеустремленный, то я в это поверю.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть