что дает знание python
Выбираем язык программирования: что нужно знать о Python
Рассказываем, чем хорош Python, сложно ли его учить, где его используют, — и сравниваем Python с Java и JavaScript.
Python — скриптовый язык общего назначения. Скриптовые языки обычно используются для небольших задач, но Python никак не вписывается в эти рамки. В отличие от, например, JavaScript, сфера применения Python не ограничивается веб-разработкой: подробнее мы об этом расскажем ниже.
Этот язык программирования:
В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.
Для чего его используют
Из самых популярных отраслей — Data Science, автоматизация и веб-разработка. Вот области, в которых используется Python:
Подробнее о применении Python можете почитать здесь: Для чего нужен язык программирования Python.
Легко ли учить Python?
Python — один из лучших языков для начинающих. Он гибкий, почти «всепрощающий», и у него минималистичный синтаксис. В работе на Python вам не придётся беспокоиться о тонкостях работы с памятью и указателями (как, например, в C++), зато вы сможете сразу приступить к программированию в дружелюбной среде. А ещё Python подробно пишет, где у вас в коде ошибка и какая (на английском), — это очень удобно.
Плюсы и минусы Python
Плюсы
Минусы
Какие у Python конкуренты
Стоит ли учить именно Python? И чем он отличается от других языков? Давайте сравним его с Java — ещё одним кроссплатформенным объектно-ориентированным языком, с которым Python соревнуется в рейтингах, и с JavaScript — популярным скриптовым языком для веб-разработки.
Python vs. Java
Python и Java — соседи по рейтингу, и у них есть общие черты: например, поддержка объектно-ориентированного программирования и кроссплатформенность.
Но много и различий.
Типизация
Начнём с формальных различий: в Java, в отличие от Python, типизация статическая. Это значит, что типы переменных прописываются в коде и считываются на этапе компиляции, а некорректная программа просто не запустится. В Python вы сэкономите время разработки (типы переменных не надо обозначать), но об ошибках узнаете уже после запуска программы.
Компиляция
Python — интерпретируемый язык (об этом мы чуть подробнее рассказали выше), а Java использует и компиляцию, и интерпретацию. Благодаря этому Java получает выгоду обоих способов — кроссплатформенность и скорость.
Скорость
Здесь выигрывает Java. Скорость — её большое преимущество, в то время как у Python это одна из слабостей. Например, простое двоичное дерево выполняется в Java в 10 раз быстрее.
Синтаксис и читаемость
Синтаксис Java похож на синтаксисы C и С++. У всех этих языков достаточно строгий и «многословный» синтаксис, и для новичков это минус: вместо того чтобы сосредоточиться на том, что писать, приходится больше думать о том, как писать. Впрочем, от витиеватости языка страдают не только новички. Большая часть работы программиста — это работа с уже написанным кодом, поэтому читаемость очень важна.
В Python синтаксис очень лаконичный, а код минималистичный и хорошо читается.
Применение
Java — лидер в разработке мобильных приложений, а ещё хорошо подходит для десктопных приложений, промышленных программ и программ для корпораций.
Python — замечательный выбор для машинного обучения, автоматизации, искусственного интеллекта и веб-разработки.
Python vs. JavaScript
Типизация
В Python строгая типизация. Как мы писали выше, несмотря на то что это достаточно гибкий язык, у него есть свои границы. В JavaScript слабая типизация: она даёт большую свободу, но из-за этого могут возникать ошибки или просто странные выражения.
Где перспективно и адекватно использовать Python
В прошлой статье мы уже обсудили с вами причины, по которой Python нельзя назвать идеальным языком для новичков, хотя на том же Хабре бытует мнение, что Python – это выбор номер один и вообще топчик.
В этой статье мы с вами обсудим тот перечень направлений Питона, который я выделяю наиболее перспективными для приложения своих сил и времени для молодых специалистов. Данный вывод делается на основе моего анализа – изучение областей и инструментов питона и сравнивать их эффективность с аналогами на других платформах.
Что ты можешь сделать на Питоне
Хотя питон является языком общего назначения, и как говорится, все двери перед тобой открыты, на самом деле использование языка сильно ограничивается теми инструментами и технологиями, которые были в нем разработаны в ходе эволюционной борьбы с другими технологиями. Поэтому приступаем к обзору.
Микроконтроллеры (весьма сомнительно)
Хотя Андрей Власовских на прошедшем PYCON Russia 2017 в своей фирменной манере с энтузиазмом рассказывал о том, как программировать микроконтроллеры на таком инструменте, как MicroPython, а Кирилл Борисов даже предлагал изучить некоторую зарубежную литературу, ситуация в общем никакая.
Список микроконтроллеров, которые поддерживаются Python, стремится к нулю, коммерческая эффективность и наличие предложений по работе практическая нулевая. С учетом того, что есть более традиционные способы инструменты программирования, пока какая-то большая компания не вложится в этом направление, тут делать нечего.
Девопс (адекватно)
Анализ рынка показывает, что примерно треть всех вакансий, где упоминается Python, относятся к сфере DevOpsa. Однако Python идет не основным инструментом, а той технологией, которую знать желательно. Это связано с тем, что Python практичности полностью сместил Perl для Linux, и неплохо так подвинул Bash в области написания крупных скрипов и более крупных серверных компонентов. Также к этому добавляется то, что интерфейс многих тулзов принимает Python в качестве языка сценариев.
Если вы хотите развиваться в сфере Девопса, то знание Питон вам будет большим плюсом, все остальные проходят эту сферу стороной.
Что касается коммерческой перспективы (стартапа) данного направления, то сложно представить человека, который бы смог написать и монетизировать какой-то инструмент, не имея опыта 5+ лет в области девопса.
Тестирование (адекватно)
Хотя главным инструментом автоматизации тестирования является кровавая Java, которая имеет огромный набор фреймворков и готовых решений, порой небольшие компании используют Python для полноценного тестирования, либо написания сценариев для тулзов, типа Яндекс.Танк с его BFG.
Практика показывает, что хотя Python может полноценно справиться с задачей тестирования, использование Java является более прямолинейным и надежным решением.
Но если говорить в общем, то адекватный специалист по тестированию должен одинаково хорошо использовать Python и Java для своей области.
Вакансий под тестирование примерно также треть от общей массы, часто в вакансиях указывают знание и Python и Java одновременно.
Desktop development (сомнительно)
В настоящий момент язык Python имеет 5 кросc-платформенных инструментов, которые позволяют писать «полноценные» приложения под Windows/Linux/Mac
Поэтому можно с уверенностью сказать, что писать коммерческий Desktop на питон – это весьма сомнительная затея, и компании этим редко занимаются (либо переписывают при первой же возможности, как это сделал DropBox).
Что касается внутренних инструментов, то использование небольших GUI-приложений применяется, но искать целенаправленно Desktop Python разработчиков не будут.
Кто же хочется заняться этой сферой более полно, прошу к Игорю Новикову, который нашел неплохой способ сшить Франкенштейна с помощью абстракционного слоя – ссылка
Mobile Development (весьма сомнительно)
Все плохо, в качестве pet проектов можно использовать Kivy, для реальной разработки весьма сомнительно, вакансий на Kivy нет.
Т.е. как, я лично разговаривал с рядом людей, которые имели свой веб-проект на Python и для захвата большой аудитории писали приложения на Kivy, и у них его даже использовали, но это имеет вид «Программист пишет то, на чем хочет».
Машинное обучение и Data science (адекватно и перспективно)
Это одна из самых хайповы областей современного IT-мира, где используется Python в качестве инструмента апробации. Python имеет ряд удобных библиотек машинного обучения и научных расчетов: Pandas, NumPy, SciPy, Scikit-Learn, которые позволяют достаточно быстро построить рабочие модели. И они на самом деле неплохо работают.
Что касается использования, то Python используется в качестве инструмента апробации, либо на небольших задачах. Если проект большой, то обычно модель пишут на Java/Scala/C++, а специалист по обучению уже выступает в качестве консультанта/аналитика.
Сложность этого направления заключается в том, что у вас должны быть высокие знания в области математики и статистики, практически всегда будет спрашиваться высшее технические, математическое образование.
По вакансиям все довольно неплохо, но в таких вакансиях требуется не знание Python, а ваша голова.
Тем, кто хочет быстренько пощупать данное направление, советую прочитать книгу: «Vvedenie_v_mashinnoe_obuchenie_s_pomoschyu_Python_-_A_Myuller_S_Gvido_2017» — есть на торрентах, читается быстро, представление дает хорошее.
Веб-скрапинг (возможно, но сомнительно)
Питон имеет три вещи, которые делают его весьма эффективными в области веб-скраппинга, бибиотеку Requests, beautifulsoup и АПИ для Selenium. Если сюда подключиться библиотеки для компьютерного зрения и Машинное обучение, то получаются весьма эффективные инструменты.
Проблема заключается в том, что вакансий в этой сфере мало, основные клиенты сидят на фрилансе, которые предлагают за фикс написать им скрипты парсинга для их говно-сайтов, спам-машин, и изредка генераторов отзывов.
Область интересная, но денег в ней мало.
Компьютерное зрение (сомнительно)
В питоне есть ряд инструментов, которые позволяют писать инструменты компьютерного зрения, они даже используются местами в коммерческих продуктах, либо в качестве компонентов, например, для веб-скраппинга. Однако Питон явно нельзя назвать подходящим инструментов, поэтому использование крайне ограничено, вакансий практически нет.
GameDev (сомнительно)
Практически в каждом обсуждении разработки игры на Python приводят в качестве примера eve online и WarGaming. Однако в первом случае используется stateless python, а во втором случае все ограничивается языком написания сценариев.
Что же касается реального использования, то у вас появляется три движка Kivy, PyGame, Panda3D, если первые два больше подходят для пет-проектов, то третий реально использовался на боевых проектах неплохого качества, правда эти проекты были 2004 года. Что как бы намекает, что использование проверенных движков на других языках типа Unity или Game Maker выглядит более убедительно.
Однако незаметно сюда крадется движок Ren’Py, который внезапно стал лучшим движков для написания визуальных романов (страдальческих историй для девочек), которые неплохо окупаются даже в рамках РФ. Серия «7 демонологов Петра Великого», тому доказательство.
Вакансий в GameDev для питона естественно нет, но деньги на «стартапе» поднять можно при должной сноровке. Но надежней взять другой язык и проверенные движки.
Веб-разработка (адекватно и перспективно)
Сила Python заключается в том, что он позволяет быстро разрабатывать комплексные веб-приложения, имеет огромное число качественных модулей, прекрасно подходит для сервисов статистики и аналитики (где, в общем, и идет для него большая часть вакансий). Данное направление занимает оставшуюся треть всех вакансий.
Отдельно хочется отметить написание ГИС сервисов на Python, которые хотя и имеют вполне адекватный инструментарий для работы с геоданными, но все же использование Java для этих целей выглядит перспективней.
Выводы об использовании питона
1) Что касается сферы девопса и тестирования, то Питон является ключевым инструментом профессии, который обязателен для каждого адекватного специалиста. Питон в данном случае не учат, к нему приходят по необходимости.
2) Наиболее перспективными выглядят сферы веб-разработки и машинного обучения (аналитики), которые явно выделяют питон на фоне его конкурентов в виде PHP и Ruby. И если вы хотите изучить питон, то вам желательно сосредоточится именно на этих сферах и не тратить свое время на что-то другое. Под это есть вакансии, на этом можно построить стартап.
3) Все остальные сферы, хотя и предлагают определенные инструменты для решения проблем, но перспективность использования этих инструментов выглядит весьма сомнительно. И главное, найти оплачиваемую работу на эти сферы практически невозможно.
Зачем мне знать Python?
И еще 7 вопросов о самом популярном языке программирования
Всего три дня осталось до завершения записи на курс «Python для извлечения и обработки данных» на национальной платформе «Открытое образование». Регистрация закроется в воскресенье 15 сентября. Рассказываем, почему вам необходимо знать Python, даже если вы не учитесь на ФКН.
Что такое Python?
Python (или просто питон) — простой, но в то же время достаточно мощный язык программирования, позволяющий упрощать выполнение задач практически в любой науке или индустрии.
С его помощью можно собирать, обрабатывать и визуализировать данные самого разного характера.
Почему все вокруг учат Python?
Python – один из самых простых в освоении и популярных языков программирования.
В современном мире программирование нужно не только программистам. Этот навык становится новой азбукой, а знание языка Python можно сравнить со знанием английского.
А зачем это умение мне?
В своей профессиональной деятельности, учебе, да и вообще в жизни, мы часто сталкиваемся со скучными рутинными задачами, которые хочется автоматизировать, или большими объемами данных, с которыми сложно работать.
Питон позволяет автоматизировать рутинные операции и оставить все самое скучное машине, а также работать с данными, разобраться с которыми вручную или с помощью электронных таблиц попросту невозможно. Python сохраняет время и усилия для действительно важного!
А можно подробнее?
Звучит интересно, но что мне дадут эти знания и навыки?
Благодаря навыкам программирования и анализа данных выпускники Вышки становятся более универсальными специалистами и получают конкурентное преимущество на рынке труда.
Даже если вы не будете работать в индустрии, связанной с данными, вы сможете использовать эти навыки в жизни, например, собирать информацию в интернете или автоматизировать бытовые задачи. Приятный бонус — возможность проводить актуальные исследования на стыке IT и других предметных областей.
Хорошо. Как мне научиться кодить?
Но я никогда не программировал. Можно ли начинать «с нуля»?
Как еще я могу прокачать свои навыки по работе с данными?
Помимо программирования на каждой образовательной программе есть как минимум один, а чаще несколько обязательных курсов, посвященных навыкам работы с данными, которые учитывают специфику каждой конкретной образовательной программы.
Кроме того, заинтересованные студенты могут углубиться в анализ данных, использовав различные элективные возможности: пойти на майнор «Интеллектуальный анализ данных», миноры (для студентов факультета гуманитарных наук), общеуниверситетские факультативы или программы дополнительного образования. Также можно записаться на курс «Основы программирования на Python» или изучить книги по анализу данных.
Язык программирования Python в 2021 году
Его известность начала расти еще в 2010-м, сегодня Python остается одним из самых востребованных языков программирования. По данным опроса Stack Overflow за 2020 год, он занимает четвертую строчку в рейтинге популярных технологий и располагается на первом месте в списке языков, которые хотели бы изучить пользователи ресурса. Согласно индексу сообщества программистов TIOBE, в мае 2021-го актуальнее Питона оказался только язык C.
Python — простой язык, он подходит для новичков, предоставляет им возможность развиваться в различных сферах IT. Чем еще хорош этот язык, в чем его недостатки, с чего начать обучение, сколько зарабатывает программист со знанием Python — рассказываем об этом и не только.
О Питоне
Python («Пайтон» или «Питон») не такой уж новый продукт. В 2021-м он празднует свое 30-летие. Его автором стал голландский программист Гвидо ван Россум. Изначально он разрабатывал «Питон» как расширяемый скриптовый язык для распределенной ОС Amoeba. Скриптовые языки обыкновенно применяют для решения небольших задач, но Python пошел намного дальше…
Кстати, название продукта не связано со змеей. Гвидо ван Россум был поклонником британского комедийного скетч-сериала «Летающий цирк Монти Пайтона». Ему и обязан своим именем Питон.
Простота. Python обладает понятным синтаксисом, код выглядит лаконично, его легко читать и писать. Потому этот язык выбирают многие новички — те, кто только входит в мир программирования.
Кроссплатформенность. Программа, написанная на этом языке, будет одинаково работать на любой платформе, на которой установлен интерпретатор для выполнения кода.
Развитая среда. За три десятилетия пользователи Пайтон образовали сообщество, которое готово поддержать начинающего коллегу. Много полезной информации можно найти на профильных форумах, в блогах или просто «загуглить».
Популярность и востребованность на рынке. Крупные компании отдают предпочтение этому языку. На нем почти полностью написан YouTube и серверная часть Instagram, Spotify и Amazon анализируют данные с помощью «Питона», его применяет даже NASA, чтобы создать систему автоматизации процессов WAS. Также язык часто используют стартапы, которых с каждым годом становится все больше.
Универсальность. Зная Python, можно работать в различных сферах — от веб-программирования до научных исследований.
Большое количество библиотек и фреймворков. Их использование упрощает работу, помогает решать конкретные задачи.
Низкая скорость. Интерпретируемость языка, которая позволяет запустить код на любой платформе, делает программы на нем не слишком быстрыми.
Плохо подходит для мобильной разработки. С помощью Питона, как правило, не создают мобильные приложения, но делают серверные и десктопные.
Ошибки исполнения. Скрипты компилируются каждый раз во время выполнения кода. Могут возникать ошибки, которые не предусмотрел разработчик. Потому необходимо проводить больше тестов для выявления недочетов.
Трудность перехода на другой язык. Может возникнуть, но необязательно. 🙂 Действительно после Python C++ может показаться непонятным из-за более сложного синтаксиса. Но при желании его удастся освоить.
Сферы применения
Выбор направлений для профессионального роста для тех, кто владеет Питоном, довольно большой. Вот основные сферы:
Подробнее о каждом направлении мы писали в одной из предыдущих статей. Рекомендуем почитать!
Отметим, что Питон считается лучшим языком для таких активно растущих областей, как большие данные и машинное обучение. Например, с помощью Пайтон собирают информацию о покупательской активности и находят новые пути развития брендов, автоматизируют рутинные задачи, скажем, сбор всех изображений с сайта, готовят алгоритмы машинного обучения, так, Netflix создал свой сервис рекомендаций.
Питон помогает в развитии социальных сетей. С ним можно создать бота или собрать целевую аудиторию, написав программу для парсинга.
Думаем, эти примеры подтверждают, что Python не потеряет актуальности в будущем.
Фреймворки, библиотеки
У «Пайтон» много библиотек — специальных инструментов для решения конкретных задач. С какими именно знакомиться, какими пользоваться, зависит от сферы деятельности программиста.
Так, бэкендерам, отвечающим за серверную часть сайта, не обойтись без Django и Flask. Разработчикам игр и мультимедийных приложений пригодится Pygame. Библиотека с научными инструментами SciPy поможет в исследованиях и вычислениях. Для взаимодействия с базами данных применяют SQLAlchemy, для искусственного интеллекта и машинного обучения — NumPy, для 2-D 3-D графики — Matplotlib. В работе с большими данными подойдут Pandas, Jupyter Notebook.
Также программистам на Питоне важно владеть инструментами, не связанными напрямую с этим языком, например, системой контроля версий Git, инструментом контроля качества кода PyTest.
Перспективы в цифрах
Специалисты прогнозируют дальнейший рост востребованности Python. Это значит, что будет увеличиваться и потребность в профессионалах. Уже сейчас они имеют высокий уровень дохода.
По данным Хабр Карьеры, во втором полугодии 2020-го в России средняя зарплата программиста, работающего на Пайтон, составила 120 000 рублей.
На HeadHunter по состоянию на 21 мая 2021-го опубликованы 1 784 вакансии, в названии которых есть ключевое слово python, 682 из них в Москве, 283 в Петербурге.
Сколько предлагают работодатели на HH?
от 80 000 руб. — 494 вакансии,
от 145 000 руб. — 382,
от 205 000 руб. — 205,
от 270 000 руб. — 85,
от 335 000 руб. — 27.
Джуниор без опыта может рассчитывать в среднем на 50 000 – 60 000 рублей в месяц.
Как и чему учиться
Стать Python-разработчиком сегодня можно в достаточно короткие сроки. Для этого необязательно учиться в вузе на профильном факультете. Образовательные центры предлагают краткосрочные программы, которые длятся несколько месяцев. Например, мы в Бруноям подготовили онлайн-курс «Профессия Python-разработчик». В течение четырех месяцев вы освоите новую профессию и сможете претендовать на вакансию начинающего разработчика.
Говорят, выучить Python и стать программистом легко. Правда?
Работать в ИТ — круто, но путь в индустрию может быть совсем не таким, как описывают родители или преподаватели в школе. На биржах труда ищут мобильных разработчиков, девопсов, бэкендеров и фронтендеров, но где эти профессии в списках специальностей классических вузов?
Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.
Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и деньги сулит знание языка, как готовиться к первым собеседованиям и многое другое.
Для чего учить Python
Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России.
«Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Долго на заводе он не задержался, но продолжил работать с электрикой дальше. Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.
Программирование иногда подразумевалось. Артем пытался работать с микроконтроллерами, делать что-то более сложное, но всегда упирался в отказы работодателей и заказчиков — им это было не нужно. Хватало элементарных вещей, которыми, как говорит Артем, интересно заниматься только первые 15 минут, и особых скиллов для этого не нужно.
«Может быть, я не туда совался, но развития для себя не нашел. Пять лет вуза — просто чтобы крутить провода. Это было так обидно».
Однажды коллега подал Артему идею изучать программирование не для электрики, а чтобы стать разработчиком. Он стал читать книги, пробовать разные задачи, но не решался сменить профессию. «Желание у меня назревало долго. Сначала не давали сменить профессию ипотека, финансовые вопросы, личный страх».
В 36 лет Артем пошел на курсы Python-разработчика.
Веб-разработка стала клондайком для многих людей, кому интересны технические профессии. А Python — одним из популярнейших языков программирования для входа в профессию. Он привлекает простотой и универсальностью.
«Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Но конкретно разработка на Пайтоне — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. Сервер, его логику, взаимодействие с базами данных», говорит Алексей Петренко, декан факультета Python в Geekbrains.
«Думаю, это хороший выбор в качестве первого языка. У него простой синтаксис. Он прощает мелкие ошибки разработчика. У Пайтона низкий порог вхождения, на нем очень легко освоить азы программирования. У него очень большая аудитория и обширная библиотека, плюс много внешних библиотек, которые делают разработчики со всего мира. За счет этого он становится языком, который подойдет для чего угодно».
«Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка. В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком.
«Питон понравился мне тем, что он может выполнять любую работу. У него есть библиотека для мобильных приложений, для десктопных, на нем можно писать скрипты автоматизации для серверов, можно веб-приложения. Но по факту на работу без глубокой математики требуются только веб-разработчики. Никто не пишет на нем десктопные приложения, и уж тем более мобильные. Для этого есть другие языки, которые создавались специально под свои задачи».
Данила тесно познакомился с компьютером относительно поздно, примерно в 18 лет. От высшего образования он отказался и почти сразу пошел работать сисадмином. Начинал с самых элементарных задач, потом приступил к изучению Linux и программирования.
«Я попытался изучать С, PHP, Java еще какие-то языки, но не заходило — начинал и бросал. Не мог писать даже простейшие скрипты. Когда я ходил на курсы по С, у меня получалось читать код, но не получалось его писать. Мне давали задачу, я смотрел на нее и не представлял, как делать. Преподаватель садился рядом, писал построчно, объяснял, и я понимал, что именно так и надо было делать. Но мне давали аналогичную задачу, и я снова был в ступоре».
После неудачных попыток Данила надолго забросил программирование. Около десяти лет он проработал сисадмином. И когда почувствовал, что администрирование больше не приносит радости, решил дать разработке еще один шанс.
«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».
Данила все-таки выбрал Python потому, что язык считался легким. «Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Но потом понял, что ресурсы в интернете — это только основы и азы. Они доступны всем и везде, и не помогут научиться программированию основательно. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».
Что надо знать перед началом обучения
Перед тем, как серьезно погружаться в изучение языка, Алексей Петренко рекомендует выяснить заранее — а нравится ли программировать вообще. «Я бы советовал попробовать написать несколько программ, пройти бесплатные уроки. Перед началом обучения лучше уже понимать, что такое переменная и как две переменные сложить.
Чтобы курсы не стали бесполезными, поможет только одно — практика. Если только смотреть и слушать, ничего не получится. Для новичка практикой будет даже переписать код, который преподаватель показывает на экране. Переписывать и думать, как он работает.
Необходимый минимум для занятий — четыре часа в неделю. Два дня в неделю по два часа. Но я бы рекомендовал выделять час в день на написание собственного кода. Главное не нырять в программирование с головой, чтобы не было буйства магии. Когда три дня учишь все подряд — в голове получается каша.
Начать может быть легко, но впереди ждут трудности
Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником. Реалии оказались другими — там такие же люди, которые просто знают чуть больше».
Артему нравилось на курсах, но не все шло гладко. Программа на тот момент была новая, мало обкатанная и по его впечатлениям сумбурная. О спорных моментах ученики высказывались, давали обратную связь, и недостатки исправлялись на ходу. Один из преподавателей оказался настолько слабым, что его попросили убрать. Но остальные, как вспоминает Артем, были очень сильны.
У Данилы же все шло еще труднее. После нескольких вводных курсов он перестал успевать за программой, и несколько раз покидал свой поток, чтобы повторять программу в следующем.
«Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Очень много информации в слишком сжатые сроки, очень большие домашние задания. Многие усваивали только часть материала. Я лично два раза переводился в следующий поток. Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три. Что-то из этого приняли во внимание и сейчас реализовали».
В отличие от первых попыток учить С, когда ничего не получалось, Данила шел дальше. Вещи, которые он не понимал, превращались в вещи, которые он не понимает, как можно было не понимать. Но преодолеть эту грань нельзя простым зубрением учебников. Как говорит Данила, умение программировать и знание языка — абсолютно разные вещи.
«Преподавать программирование тоже очень сложно. Всем кажется, что раз человек может писать программы, значит может и научить. Это не так. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать».
Алексей предупреждает, что Python легкий только в начале. А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».
«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.
Паттерны проектирования тоже нахрапом взять невозможно. Я уже по три раза перечитывал выдержки, специально читал книгу, и все равно до конца не чувствую себя уверенным. За один месяц, который длится курс по ним, это вообще нереально освоить».
Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Есть такой модуль, и он мне прямо очень не давался в свое время. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».
«В базовой конфигурации Python лежит около 70 функций и несколько десятков зарезервированных слов, но даже крутой программист не обязательно использует их все. То есть, чтобы выучить сотню слов и понять, что они делают, можно потратить одну-три недели при желании и активной работе», говорит Алексей.
«Начинающие программисты пишут программы, которые тоже работают. Но код один раз пишут — десять раз читают. Когда спустя время программу пытается прочитать другой человек, то возникают сложности.
Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. В Python они называются «Пепы» (Peps). Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Это соглашение программистов, которые пишут на Пайтоне. Оно рекомендует как правильно писать, а как неправильно.
Несколько лет назад в Python произошло разделение. Был Python 2.7, а потом вышла версия 3. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию. Все современные проекты и сторонние библиотеки пишутся под нее».
Как выдержать первые собеседования
Артем и Данила закончили курсы очень по-разному. Данила после нескольких попыток решил не заканчивать обучение, потому что не нашел взаимопонимания с преподавателем последних курсов, но зато нашел работу. Артем же вместе с сокурсниками уже во время обучения вырастил учебный проект в стартап, который начал приносить реальные деньги.
«Проект назвался GoLiving. Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. Но тогда у нас даже были инвесторы».
Данила во время обучения на курсах полгода сидел без работы. Он уволился специально, чтобы учиться, но из-за частых переводов учеба заняла больше времени, и отложенные на это время деньги подходили к концу. Покинув курсы, Данила даже не успел начать изучение Django — самого популярного фреймворка для веб-разработки.
«Под новый год я написал в компанию, которая просто находилась рядом с моим домом. Зашел к ним на сайт, увидел вакансию бэкенд-разработчика и написал им письмо. Говорю, хотел бы у вас поработать, хоть и учился, но знаю немного. Очень интересуюсь и буду развиваться. И меня позвали на собеседование».
«Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. «Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации.
Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.
Во время интервью главное не молчать. Если дают задачу, на которую не получается сходу ответить, то надо просто рассуждать вслух, показывать, как думаешь, и что способен двигаться к решению.
И главное не отчаиваться, если первое собеседование оказалось неудачным. Сходя на два-три собеседования заметишь, что вопросы начинают повторяться. И тогда уже сам будешь выбирать, куда устроиться, потому что однажды из трех собеседований пройдешь сразу везде».
Данила на собеседовании больше всего удивило то, что ему не задали ни одного технического вопроса: «Не давали никаких заданий — просто общались о том, как я учился, чем интересуюсь. В итоге предложили работу, и я согласился».
Алексей же считает, что с такими компаниями стоить быть внимательнее. «Кроме общих вопросов должны быть задачи на написание кода. Даже если на бумаге карандашом — это нормально. Но если ты пришел на собеседование программиста и не получил ни одного вопроса о программировании, то тебя либо собеседовал некомпетентный человек, либо ты будешь заниматься вообще чем-то непрограммистским. Программистов надо проверять на программирование».
«Я считаю, не спрашивать технические вещи — это правильный подход», говорит Данила. «Очень известный в Python-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать. Я с ним согласен.
Конечно, навыки программирования важны. Но сейчас я работаю с такими вещами, которых на курсах не преподают. Мне их показали уже на работе, и дальше я разбираюсь сам, читаю документацию, статьи, смотрю примеры. Меня больше настораживают компании, которые дают «нормальные» тестовые задания. Ты смотришь и думаешь — а это правда тестовое или я сейчас бесплатный фрилансер?»
«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».
Проходило оно так: сидели два эйчара и два технаря. Один питонист и фулстек, который занимался вебом — куда пробовался и я. Второй — судя по вопросам — совершенный надмозг. У него такой был сильный матан, что просто ого-го!
Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Потом за меня принялся фулстек, погонял меня по Python, по Django. Он прямо на бумаге накидывал примеры и спрашивал по ним. Не сложные, но с подковырками.
А потом за меня взялся дядька-надмозг. Полез вглубь матана, спрашивал про алгоритмы, и поскольку компания работает с безопасностью и шифрованием, он меня и по нему тоже погонял. Но в этом я совершенно не силен, поэтому отвечал как пятилетний ребенок. В общем, на шифровании сыпался, в алгоритмах держался, но не очень.
Честно, даже не ожидал, что мне перезвонят. Тем не менее — получил оффер. Через несколько дней будет первый рабочий день».
На какие деньги стоит рассчитывать
Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.
«Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. В регионах 20 тысяч для джуниора тоже не редкость. Это не такая уж высокооплачиваемая работа, как все утверждают. Да, когда достигаешь уровня синьора, зарплаты могут переваливать за 200-300 тысяч. Но где таких зарплат нет? Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Там 230, 240 тысяч.
На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей. Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно.
При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».
Возможно, в программировании проще дойти до уровня выше среднего, чем во многих других сферах. Но для меня это вообще не было главным. Мне было интересно создавать программы».
«Зарплаты зависят от региона», говорит Алексей, «Кто-то устроится за 40 тысяч как начинающий, кто-то может и сразу на 100 тысяч. Смотря как себя проявить. Если покажешь, что можешь писать не только код, но и разбираешься в архитектуре, можешь набросать схему проекта целиком, всех модулей, сервисов, связей между ними».
Артем же вообще ушел в разработку на меньшую зарплату, чем имел будучи инженером. «В электрике у меня была должность главного инженера, и зарплата была очень хорошая. Я ушел, потому что хочу развития. А в программировании можно развиваться до бесконечности».
Несмотря на то, что в программировании одна из самых четких и понятных градаций по уровню мастерства (джуниор, мидл, синьор) — она все равно остается относительной и постоянно разжигает споры размытостью своих критериев. Споры в духе «ты в компании Х синьор, а в компании Y и джуниором не возьмут» или «пока десять лет не работал — не синьор».
«До уровня мидла можно прокачаться в течение года обучения. Например, в Geekbrains есть обязательные курсы и дополнительное. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Человек, который не изобретает велосипеды. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.
Если человек через три года работы называет себя синьором — почему бы и нет. Все зависит от фирмы, стремления и навыков. Если человек одаренный и целеустремленный, то я в это поверю.