С чего начать изучение Python?
Python — высокоуровневый язык с динамической типизацией. Это значит, что код на нем прост для чтения и понимания, а разработка быстрая, так как Python сам классифицирует вводимые данные.
Посмотрите, как можно вывести на экран фразу «Hello, World!» в одну строчку с помощью одной понятной команды:
print('Hello, World!')
И как это можно сделать с помощью языка Java:
class HelloWorld public static void main(String[] args) System.out.println("Hello World!"); > >
Python также известен своей философией — правилами, которые разработчики стараются соблюдать при написании кода. Они сформулированы в списке из 19 пунктов под названием «The Zen of Python» . Вот несколько правил из этого списка:
- Явное лучше, чем неявное
- Простое лучше, чем сложное
- Читаемость имеет значение.
У Python есть более сотни библиотек кода — наборов инструментов для решения программистских задач. Также есть много фреймворков: возможно, вы что-то слышали о Django, Pyramid или Flask. Каждый из этих инструментов можно освоить, чтобы выйти на новый уровень программирования на Python.
Python применяют для создания и поддержания своих продуктов такие компании, как Google, Yandex, Spotify, Microsoft, Pinterest, Quora, Intel и другие.
Профессия «Python-разработчик»
- Изучите Python — язык с простым и понятным синтаксисом
- Научитесь создавать полноценные сайты и веб-приложения
- Освойте популярный фреймворк Python — Django
- Разберитесь в базах данных и научитесь управлять ими с помощью SQL
Где используется Python
Python — самый популярный язык программирования по данным индекса TIOBE на ноябрь 2023 года. Востребованность Python можно объяснить тем, что его применяют во многих сферах: веб-разработка (чаще всего серверная часть), машинное обучение и анализ больших данных.
Также на Python создают:
- Видеоигры
- Десктопные приложения
- 3D-графику
- Программ для обработки изображений, видео и аудио.
В сфере мобильной разработки язык Python используют очень редко.
Python в Data Science
Python — главный язык программирования для работы с анализом данных. Python любят в Big Data за счет гибкости и скорости освоения.
В анализе данных чаще работают математики, финансисты или даже маркетологи, а не «чистые» программисты. Им гораздо проще работать с Python, чем с более сложными Java или C.
За счет встроенного интерпретатора этот язык программирования позволяет быстро проверять гипотезы и моментально получать результаты.
Тем, кто хочет работать в Data Science, потребуется выучить основы Python и несколько профильных библиотек:
- Pandas — нужна для сбора и структурирования данных. Библиотека умеет извлекать информацию из баз данных и таблиц, превращая разрозненные объекты в индексированные массивы. Содержит инструменты визуализации.
- NumPy — используют для расчетов. Позволяет индексировать, умножать и добавлять массивы, разбивать их на секции и менять форму. Есть инструменты для вычисления по формулам линейной алгебры.
- Matplotlib — для визуализации данных. Помогает создавать графики, диаграммы, 2D-фигуры и встраивать их в большинство популярных приложений и сервисов.
- Statsmodels — для статистического анализа. Помогает использовать в Python формулы из языка R. С ее помощью проводят одномерный и двумерный анализ данных, решают сложные математические задачи и занимаются машинным обучением.
Читайте также:
Что нужно, чтобы начать программировать на Python
Расскажем об основных особенностях этого языка и о том минимуме, который нужно знать, чтобы написать свое первое приложение на Python.
Установить IDE
Программисты пишут код в интегрированной среде разработки — IDE, которая включает в себя редактор кода, инструменты для его выполнения и отладки, а также систему контроля версий.
Среда разработки помогает разработчику ориентироваться в коде и искать в нем ошибки. Самые популярные IDE для Python: Python IDLE, PyCharm, Spyder, Thonny.
Еще можно установить редактор кода — это более легковесная программа, аналог текстовых редакторов. Она сохраняет проекты в правильном расширении, автоматически проверяет отступы в коде и подсвечивает синтаксис. Самые популярные редакторы кода для Python: Visual Studio Code, Sublime Text, Vim.
Также существует онлайн-IDE, с помощью которой можно писать код на Python прямо в браузере. Replit подойдет для первого знакомства с Python и создания небольших проектов.
Изучить базовый синтаксис
Синтаксис — это набор правил, по которым разработчики пишут код на любом языке программирования. Основа, без которой невозможно программировать.
Многие хотят начинать изучение программирования с Python, потому что у этого языка достаточно простой синтаксис. Код на нем можно понять без особых знаний за счет лаконичности языковых конструкций.
Вот примерный список тем, которые нужно изучить и понять перед тем, как начать кодить на Python:
- Строки — как их выводить, извлекать из них символы.
- Переменные и типы — для чего они нужны, как облегчают разработку.
- Операторы — какие они бывают в Python и как работают.
- Условия — что такое условные конструкции и как их задавать.
- Циклы — для чего нужны и как использовать.
- Структуры данных — для чего используют, сколько всего структур и какие они бывают.
- Функции — в чем особенность, как их вызывать и где искать документацию по ним.
- Классы и объекты — что это такое и как они обозначаются.
Изучите основы Python на подготовительном курсе Хекслета В программу включено много теоретических и практических заданий, которые выполняются в браузерном тренажере. Вы изучите основные понятия программирования, научитесь мыслить как разработчики, исправлять ошибки в коде, а еще создадите свою полноценную программу.
Давайте разберем пару базовых тем.
Списки
Список — это структура данных, которая используется для хранения коллекции элементов в упорядоченной последовательности. Эти элементы могут быть разного типа: числа, строки, другие списки и так далее. Список создается с использованием квадратных скобок [] , а элементы внутри списка разделяются запятыми.
Когда мы создаем список, в памяти компьютера появляется область — контейнер, в котором хранятся только ссылки на различные элементы данных.
Содержимое списка не статично, его можно изменять. Этим он принципиально отличается от строки или числа. Элементы списка можно удалять, добавлять и заменять.
Вот пример списка:
a = ['dog', 16, True]
Наш список содержит строку, число и булево значение.
Со списками можно проводить различные операции:
- Элементы в списках можно заменять. Для этого нужно обратиться к нему по индексу.
- Списки можно объединять. Для этого используют оператор + .
- Элементы в Python можно перебирать при помощи циклов for и while .
- Списки можно сравнить друг с другом, получив в ответ булево значение — False или True .
Строки
Строка — последовательность данных. В прошлом примере слово ‘dog’ — это строка. Класс такого объекта называется str . Строка — это любая упорядоченная последовательность символов. Ее используют, чтобы хранить или выводить текстовую информацию.
Для создания строк в Python используют одинарные или двойные кавычки. Начинающим разработчикам стоит запомнить правило последовательности. В одном проекте нужно выбрать либо одинарные, либо двойные кавычки, придерживаясь единообразного стиля. Это повышает читаемость кода.
Строки в Python можно объединять при помощи математического оператора + . Но лучше использовать вместо него .join() .
В первом случае это выглядит так:
a1 = 'Я учусь' a2 = 'писать код на Python' а1 + а2 >>> 'Я учусь писать код на Python'
''.join([а1, а2]) >>> 'Я учусь писать код на Python'
Кавычки тут нужны для обозначения строки-соединителя. В этом примере она пустая, но может содержать в себе пробел или другой символ.
Использование .join() вместо математического оператора делает код лаконичнее и производительнее. Это имеет смысл, когда строк много, а не всего две, как в нашем примере.
Для поиска по текстовой информации используют регулярные выражения — regex . Они позволяют «вытащить» из строк нужные данные. По этому принципу, например, работает поиск в Word по документу.
У регулярных выражений есть свой синтаксис:
- . — заменяет любой символ;
- \ — экранирует, превращая спецсимволы в обычные символы;
- […] — любой символ, указанный в скобках, можно обозначить как перечислением, так и диапазоном;
- | — обозначает «или», то есть позволяет искать или один или другой символ;
- [^…] — ищет любой символ, кроме указанного в скобках;
- $ — конец строки;
- ^ — начало строки.
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) — это парадигма разработки, то есть набор правил и принципов, которые нужно соблюдать программисту.
Знакомство с ней необходимо для того, чтобы понимать основы. Без знания принципов ООП невозможно стать квалифицированным разработчиком.
Главный принцип ООП: все программы состоят из объектов. Объект — сущность, у которой есть набор действий и определенные данные. Перед написанием кода программисту нужно мысленно выделить основные объекты, потом наполнить их данными и прописать доступные действия.
Структура объектно-ориентированного программирования:
- Объект — отдельный элемент с собственными функциями и характеристиками.
- Класс — шаблон для объектов. Например, на сайте-картотеке фильмов и сериалов классом будет карточка фильма с пустыми полями, а объектами уже заполненные карточки с указанным названием, годом и жанром.****
- Метод — функция, связанная с конкретным объектом и работающая с его данными. Например, метод в нашем примере позволит вывести имена актеров или вывести все фильмы этого же режиссера.
- Атрибут — данные объекта. У класса описывают будущие атрибуты, а в объекте заполняют их конкретными данными. Например, в классе «фильм» есть атрибуты-поля «Режиссер» и «Год выхода». А в объекте, определенном фильме, будут конкретные фамилии и даты.
Что еще нужно знать
Программирование — творческая профессия, поэтому у разработчика есть определенная свобода действий. Написать код можно разными способами, и он будет работать.
Начинающие программисты предпочитают самые простые способы. А опытные разработчики стараются сделать свой код красивым и лаконичным.
Например, выше мы уже писали, почему стоит объединять строки при помощи .join(). И это не единственный способ оптимизации.
Что еще нужно знать:
- Декораторы — функции, о которых обязательно спросят на собеседовании. При помощи декоратора можно добавить к уже существующей функции новые возможности, не меняя исходный код.
- Случайные числа — числа из определенного диапазона с некоторой вероятностью выпадения. Их используют для того, чтобы имитировать закон распределения случайной величины. В Python для этого используют библиотеку random или модуль numpy.random .
- Рекурсия — функция, вызывающая себя саму. Ее используют для выполнения последовательности одинаковых действий. Например, если нужно узнать сумму чисел от 1 до N, есть два способа. Первый — итерационный, в котором прописывают каждый шаг при помощи цикла. А второй — рекурсионный, он оптимальнее для решения сложных задач.
- Рефакторинг кода — процесс редактирования и оптимизации. Он необходим для того, чтобы улучшить читабельность, сделать код понятнее и красивее. В процессе рефакторинга удаляют неиспользуемые переменные, ненужные и отладочные команды, избавляются от ошибок форматирования.
Сколько времени нужно, чтобы выучить Python
Судя по опыту многих разработчиков, базовые знания по Python можно получить чуть меньше, чем за месяц, если заниматься до пяти часов в неделю.
Если вы хотите стать Python-разработчиком, то готовьтесь уделять учебе от десяти часов в неделю. Занимаясь такое количество времени, вы сможете освоить Python на уровне джуна примерно в течение года.
Основы языка можно выучить самостоятельно с помощью книг, видеолекций и онлайн-курсов. Но на более поздних этапах обучения рекомендуем вам обращаться по всем вопросам к опытным разработчикам или менторам.
Полезные материалы для изучения Python
Первым делом стоит изучить документацию языка. Она дает представление о работе языка и показывает примеры его использования. Это как огромная библиотека или справочная, в которую разработчик может прийти за нужным документом или ответом в спорных ситуациях. Документацию Python можно посмотреть на официальном сайте .
Решайте задачи
Существует много разных сайтов, на которых питонисты выкладывают и решают задачи по Python. Это, например:
- LeetCode
- Codewars
- Exercism
- okpython.net
- Проект Эйлера
- CheckiO
Платформа Kaggle подойдет для тех, кто выбрал для дальнейшего развития сферу машинного обучения. На ней проходят групповые соревнования, где организаторы дают разные задачи по Data Science. Участники решают задачи с помощью языка Python. Лучшие решения можно будет положить в портфолио.
Участвуйте в играх
Изучать Python по играм не менее эффективно, чем штудировать теорию курсов и учебников. На игровых турнирах можно прокачиваться в написании кода и даже знакомиться с единомышленниками.
В какие игры можно поиграть:
- Code Monkey — пожалуй, самая популярная игра по Python. В ней нужно помогать обезьянке собирать бананы с помощью цепочки команд.
- CodeCombat — игра учит базовым навыкам программирования и написанию кода. В ней нужно захватывать земли и уничтожать врагов.
- Codebattle — это платформа, на которой проходят игры и турниры для разработчиков. Они развивают алгоритмическое мышление и дают полезные связи с разработчиками. Хекслет проводит соревнования разработчиков разных уровней на Codebattle каждый месяц — участвуйте, чтобы приобрести новый опыт и разнообразить свое обучение.
Читайте книги
Есть много хороших книг по изучению Python. Будет здорово, если вы прочитаете некоторые из них:
- Пол Бэрри «Изучаем программирование на Python»
- Марк Лутц «Изучаем Python»
- Эрик Мэтиз. Изучаем Python. Программирование игр, визуализация данных, веб-приложения».
Также у Хекслета есть свой список рекомендованной литературы. Ознакомьтесь с этими книгами — они полезны для программистов любых направлений.
На YouTube-канале Хекслета есть рубрика «Публичные собеседования» , в которой наши студенты проходят учебные интервью у специалистов разных компаний. Посмотрите видео из этой рубрики, чтобы иметь понимание о том, как проходят собеседования и какие знания нужны разработчикам, чтобы успешно их проходить.
Если в процессе обучения вы почувствуете, что вам не хватает поддержки единомышленников и более опытных разработчиков, присоединяйтесь к Хекслет Комьюнити. Там вы сможете обсуждать трудные моменты в учебе, получать помощь и поддержку.
Что дальше
Если хотите быстро и недорого попробовать работать с Python под руководством наставника — запишитесь на наши подготовительные курсы. Двухнедельный интенсив позволит получить крепкую базу знаний и написать свою первую программу на Python.
Профессия «Python-разработчик»
- Изучите Python — язык с простым и понятным синтаксисом
- Научитесь создавать полноценные сайты и веб-приложения
- Освойте популярный фреймворк Python — Django
- Разберитесь в базах данных и научитесь управлять ими с помощью SQL
Сколько у вас ушло времени чтобы стать python junior developer?
Начал изучать python для web , интересуют такие вопросы:
1)Читаю книгу «Изучаем Python. Программирование игр, визуализация данных, веб-приложения» вместе с «Learn python the hard way». Подходят ли они для начала или есть что-то лучше?
2)Посоветуйте литературу по алгоритмам и структурам данных для новичка.
3)Кто уже работает python разработчиком сколько времени вы затратили на то чтобы стать junior developer.
- Вопрос задан более трёх лет назад
- 24571 просмотр
Комментировать
Решения вопроса 0
Ответы на вопрос 5
Trahibidadido @Trahibidadido
Backend/DevOps
Пришел python\django juniorом с улицы. За немалое время работы сожрал пуд соли. Самое большое разочарование — все ищут питонистов для быстрой разработки (порог вхождения ниже наверное только у php) и берут джунов на не джуниорские задачи. Я за первый месяц работы что только не писал, от системы скидок для интернет магазинов на Django, до админки системы курьерской доставки интернет-ритейлера написаной на связке Flusk+Vue+Jquery которую до меня писал десяток человек и все бросали.
Никто практически никогда не готов тебя учить, если на более «мейнстримных» языках ты получаешь более низкий оклад, но больший штат серьезных девов с многолетним опытом и высокий шанс того что за тобой будут «присматривать», то попадая в компанию которая пишет на python — ты сам по себе. Потому что питонистов тупо мало и стоят они дорого, никто не хочет тратить их время на всякие кодревью и митапы.
Не согласен с оратором выше, джун это просто человек способный писать работающий код. Как он это делает и что этот код из себя представляет — вопрос второй. Я пишу нереальные костыли и ничего, заказчик доволен, начальнику пофигу, зп на карточке.
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Джуном становятся сразу как только выходят на первую работу.
Ответ написан более трёх лет назад
Нравится 3 1 комментарий

Яростно плюсую

Никита @AgentProvocateur
По литературе для начинающих и не только отвечал здесь. Далее по срокам вкатывания.
Если для собственных web-разработок, то python нормальный вариант. Можно довольно безболезненно вкатиться, сформировать грамотный фундамент у себя в голове, довольно быстро создать прототип и т.д.
Если намерен идти наемным питонистом-джуниором, то тут может постигнуть разочарование:
1. На реальном рынке python/django — самая невостребованная web-технология, как в СНГ, так и на западе, в сравнении с php/js/ruby/.net и т.д.
2. Полистай вакансии python-джуниоров — там либо требования к годам опыта, либо требования других языков. В общем, не джуниорские требования в основном.
3. В большинстве вакансий python упоминается либо в качестве доп.языка («будет плюсом»), либо в качестве бэкграунда для дальнейшего переката на Go, либо в качестве технологии для разного рода аналитиков.
4. На фрилансе также не густо в сравнении с php/js/ruby. Опыт/порфолио по web-python там сложновато наработать (гораздо больший спрос на всякие скрипты автоматизации, парсеры и т.д.).
5. Если ты не из столицы (Москва/Питер/Киев/Минск), то про вакансии python-джуниора вообще забудь, в регионах они если и встречаются, то в качестве исключений, подтверждающих правило. Открыл сейчас HH — по моему миллионнику ни одной.
К чему я это всё. типичный путь в python-разработку лежит через условные «5 лет на php» у подавляющего большинства. Python-проекты также подворачиваются волей случая чаще всего. Естественно, эти люди будут отвечать, что от «hello world» до реальной разработки у них ушло от недели до месяца. но тебя это полезной смысловой нагрузки не принесет, кроме иллюзий.
В среднем, на любой web-технологии от знакомства до уверенного джуниора проходит не менее 1.5 лет ежедневного практического (!) обучения. Т.к. уверенный джуниор — тот, кто не менее полугода трудится в реальном командном проекте и показывает результаты, то с python по вышеобозначенным причинам этот срок может увеличиться.
Как я стал Python-разработчиком за 10 месяцев
До того момента, как я захотел стать Python-программистом, я около 8 лет работал инженером в небольшой компании по производству кабельной продукции. Затем я получил повышение и стал руководить отделом и… перестал получать удовольствие от работы. Очень много волокиты с документами, проведение бесполезных собраний – всё это стало всё сильнее меня угнетать, так как я очень любил свою прежнюю должность инженера.
Так вышло, что по чистой случайности увидел бесплатный интенсив по Python-разработке, записался и прошёл несколько уроков. Я настолько увлёкся этой темой, что каждый день после работы бежал домой, садился за комп и решал простенькие задачки на Питоне. Как я узнал позже, этот язык один из самых простых в освоении, на практике так и не было, подтверждаю. Например, Java или C++ имеют более сложный синтаксис, это даже видно по официальной документации.
Я задумался, а не переквалифицироваться ли мне в Python-разработчики. Поглядел вакансии на hh.ru, отметил про себя, что чаще всего компаниям нужны специалисты с опытом работы от 1 года, но и было много предложений стажировок. Решил посвятить ближайшие 8-10 месяцев изучению Python’у, уж очень мне хотелось сменить свою работу.
Итак, с чего я начал? Решил начать обучение с бесплатных материалов. Стал искать полезные ссылки, нашёл несколько полезных статей:
- Обзорная статья по Python — много полезных советов о том, как начать изучение языка, включая большой раздел с ссылками на обучающие материалы;
- Книги и учебные ресурсы по Python на stackoverflow.com — подборка разных ссылок для новичков и опытных программистов;
- Дорожная карта по изучению Python на github.com.
Изучив статьи и отобрав понравившиеся мне материалы, я стал проходить бесплатные курсы на Stepik:
- stepik.org/course/58852 — «Поколение Python»: курс для начинающих;
- stepik.org/course/122813 — Курс для будущих Python-разработчиков.
Через месяц освоил курсы посерьёзнее:
- stepik.org/course/68343 — «Поколение Python»: курс для продвинутых;
- stepik.org/course/107365 — Многопоточность и многопроцессорность Python;
- stepik.org/course/107335 — Регулярные выражения в Python.
Параллельно читал книги «Укус Питона» и «Изучаем Python» М. Лутца. Книги обязательны к прочтению!
Разумеется, найти время было сложно, у меня 2 маленьких ребёнка, которые не бывает очень шумят, поэтому пришлось перебраться в маленькую комнату, чтобы сосредотачиваться на учёбе. Детьми занималась в основном жена и тёща, за что я им очень благодарен. Учился по 4-5 часов в день, ложился далеко за полночь, включая выходные и праздники. У меня была цель – получить начальные навыки, чтобы устроиться стажёром или джуном.
Процесс обучения мне очень нравился, когда получается решить сложную задачу самому – я получаю нереальный кайф, думаю многие программисты со мной согласятся.
Учиться было не так сложно как я себе представлял – всё-таки сыграла свою роль техническое образование и много лет стажа работы инженером. Ничего особенно сложного не было, все необходимое я находил в Гугле или форумах.
Кроме Python’а дополнительно мне пришлось изучать дополнительные инструменты – все те, которые работодатели указывали в вакансиях. Вот что я изучал параллельно с изучением Python:
Linux. OS для программистов:
- stepik.org/73 — Развивающий курс по Линуксу;
- Видеообучение “Linux для начинающих”.
Docker. Крутая штука, помогает запустить приложение на любой OS:
- stepik.org/1612 — Профессиональный курс по Docker;
- Серия видеоуроков по Docker для начинающих;
- Видеоинструкции по Docker.
Ansible. Система управления конфигурациями:
- stepik.org/course/123806 — Ansible для начинающих + практический опыт;
- stepik.org/course/123300 — Docker для начинающих + практический опыт;
- Уроки по Ansible на русском языке.
Kubernetes. Сложная штука для контейнеров, изучил только основы:
- stepik.org/course/99188 — курс «Kubernetes для пользователей»;
- Хорошие видеоуроки по Kubernetes.
SQL – язык для баз данных:
- stepik.org/course/551 — Образовательный курс “Основы баз данных”;
- sql-tutorial.ru/sqlbook/ru — Классный интерактивный учебник по SQL.
Django – фреймворк для веб-разработки:
- stepik.org/course/82067 — интересный курс «SPA сайт на Django Rest Framework и NuxtJS»;
- Видеоуроки от selfedu по Django 3.
Flask — легковесный веб-фреймворк на Python для создания веб-приложений:
- stepik.org/course/97540 — Основы Web-фреймворка Flask;
- Видеоуроки по Flask с нуля.
REST API — код, который позволяет двум приложениям обмениваться данными с сервера:
- stepik.org/course/120679 — Курс профессиональной подготовки по API;
- Видео по разработке API с нуля;
- Статья на Хабре по основам в REST API.
Ещё я завёл профиль на https://github.com/, у любого программиста так должно быть размещено портфолио, куда я выкладывал свои небольшие проекты, которые мне удавалось делать во время обучения. Вот скрин профиля, после 7 месяцев разработки:
Профиль на ГитХабе
Через 7 месяцев интенсивной учёбы я составил резюме и опубликовал его на паре сайтов (hh.ru и superjob.ru). Затем я стал откликаться на вакансии, причём не только на позицию джуниора, но и миддла. За первую неделю я получил 50 отказов: некоторые работодатели сразу писали, что я им не подхожу, другие давали тестовые задания, с которыми я плохо справлялся. Но я не отчаивался, так как всё это полезный опыт, а рано или поздно я работу всё равно найду. У меня не было в портфолио реальных проектов, поэтому я стал брать за бесценок заказы на фрилансе, чтобы прокачать своё портфолио. Вот как выглядят задания, которые публикуют исполнители на Кворке:
В течение 2 месяцев мне удалось сделать 2 хороших проекта по веб-разработке, и я стал опять усиленно заниматься поиском работы. Спустя неделю со мной связался работодатель и дал сложное тестовое задание (по API), на выполнение дал мне 12 часов. Я сделал всё , что смог и отправил результаты. Был уверен, что провалил задания, но через 5 дней мне прислали оффер. Как оказалось, я выполнил эти задания лучше других кандидатов, хотя и не совсем правильно, поэтому взяли в штат именно меня. Возможно мне просто повезло, но я всегда знал, что я смогу найти работу. 🙂
На начальном этапе меня взяли стажёром, на 3 месяца, дали наставника. С прежней работы уволился. На протяжении трех месяцев я учился ещё интенсивнее, мало спал, информации было очень много, было очень тяжело. Но затем стало полегче, усвоил то, что нужно было в стеке компании и меня перевели на должность джуна. Что я понял в работе программиста – что учиться нужно всегда, независимо джун ты или сеньор. Профессия такая, что нужно всё время быть на волне. Что по зарплате? Получаю 80 000 рублей на руки, это на 20 тыс. меньше, чем на прежней работе. Я остался очень доволен, думаю, через 2-3 года будут тянуться к позиции мидла, а там и зарплата совсем другая.
Сейчас я работаю в крупной компании по разработке сайтов (в отделе тестирования), у меня отличный коллектив и каждый день у меня встречается интересные задачи, над которыми я могу залипнуть на много часов. Скажу честно, несмотря на мой возраст (мне 39 лет) мне ни разу не отказали, сославшись именно на это. Только в одной из компаний меня сразу предупредили, что средний возраст разработчиков в компании 20-25 лет и будет ли мне комфортно работать среди молодёжи. На этот вопрос я ответил утвердительно, но в итоге туда устраиваться я не стал, но не по этой причине.
На данный момент ясно понимаю, в каком направлении мне нужно развиваться (хочу попробовать себя в ИИ). Денег стало немного поменьше, но моя жена меня поддерживает и помогает, мы уже не в первый раз привносим что-то новое в свои жизни, включая смену работы. Например, когда были помоложе, то у нас было несколько бизнесов, включая онлайн-магазин.
Моя цель – это вырасти до позиции Middle и получать от 120 000 р. и больше.
Мои советы для тех, кто хочет освоить новую профессию, желательно к ним прислушаться:
- Посидите и подумайте, чем именно хотите заниматься по-настоящему. Уделите этому хотя бы полчаса своего времени, прислушайтесь к душе.
- Напишите план обучения. Сложные темы разбейте на более мелкие. Напишите, сколько времени у вас уйдёт на обучение и умножьте эту цифру на 2. На практике вам понадобится больше времени на обучение.
- Чтобы не потерять мотивацию, выделите определённые часы для занятий, например по выходным с 16:00 до 22:00 или в будни после 20:00. Ставьте себе жёсткие сроки, без этого обучение может затянуться надолго.
- При поиске работы не нужно бояться отказов. Нужно лишь понять, почему вам отказывают и нарабатывать практику.
В заключение хочу поделиться полезным ссылками по обучению языку Python, думаю каждый найдёт для себя что-нибудь интересное:
- PEP 8 — руководство по написанию кода на Python;
- PyCheckIO — интерактивный тренажер на Python;
- Самоучитель Python;
- Checkio.org — задачи по Python в игровой форме;
- LeetCode — задачи, разбитые на разные уровни сложности;
- Алгоритмы и структуры данных на Python — видеолекции;
- Oнлайн-тренажёр Python;
- Питонтьютор — классный бесплатный курс по Пайтону;
- kodesource.top — упражнения для новичков;
- Хендбук по Python;
- Видеокурс от Яндекса на Хабре;
- Бесплатный курс по Python для новичков на code-basics.com;
- CS50 — курс для получения общих знаний по программированию;
- Много видеоуроков «Python для начинающих» для абсолютных новичков;
- Основы Python 3 — курс на Udemy;
- youtube.com/c/ТимофейХирьянов — замечательные видеолекции от преподавателя от бога.
На этом всё, будут вопросы — пишите в комментариях. Всем удачи в начинаниях!
Сколько времени реально нужно, чтобы освоить программирование?
Этот текст для тех, кто хочет оценить трудовые и временные затраты на изучение профессии разработчика. Посмотрим, какие результаты реально получить за неделю, месяц, полгода и далее.
Спонсор проекта — буткемпы «Яндекс Практикума». Буткемпы — это как обычные курсы Практикума, только вдвое более интенсивные и поэтому короткие. Если классический курс «Аналитик данных» проходится за 6 месяцев, то буткемп по той же специальности длится всего 4 месяца.
- Буткемпы требуют выделять на обучение около 40 часов в неделю. Обычные курсы — около 20 часов.
- Буткемпы нужны тем, кто хочет вот прямо сейчас уйти с работы и попасть в новую специальность. Обычные курсы — для тех, кто изучает новую специальность параллельно с основной работой.

1 неделя: базовые конструкции и простые алгоритмы
Если у вас есть наставник, советчик или просто нормально организованный учебный процесс, первый код на любом языке программирования вы напишете уже в первый день. На второй день вы напишете простую работающую программу.
За неделю занятий вы сможете:
- Писать и запускать свой код.
- Объявлять любые типы данных.
- Делать простые вещи с помощью циклов и условных операторов.
- Работать с массивами, строками и числами; производить математические операции.
- Объявлять функции.
- Работать с объектами.
- Если изучаете JavaScript и HTML, то вы даже сделаете простую интерактивную веб-страницу.
✅ Этого этапа хватит, чтобы начать писать собственные простые программы и экспериментировать. Но пока что вы будете сталкиваться с проблемами на каждом шагу, потому что любой минимально амбициозный проект будет казаться неподъёмным.
⚠️ Подводный камень: вам может начать казаться, что теперь вы умеете программировать, и вы начнёте решать все данные вам задачи теми базовыми инструментами языка, которые вы знаете. Часто ваши решения будут громоздкими и нестабильными. Как с этим быть — вы узнаете дальше.

1—3 месяца: основные задачи, которые решают этим языком
Следующий этап — вы начинаете погружаться в специфику языка программирования и узнавать, какие именно задачи им лучше всего решать и как. Это этап узнавания основных паттернов языка.
На примере фронтенд-разработки:
- Вы начинаете использовать фреймворки для работы с веб-страницей.
- Узнаёте про стандартные компоненты интерфейсов.
- Начинаете общаться с сервером с помощью асинхронных запросов.
- Познаёте силу современных верстальных инструментов типа CSS Grid.
- Учитесь показывать всплывающие и модальные окна, валидировать формы, настраивать анимации.
✅ Это этап всемогущества: вам кажется, что любую задачу, какую вы только можете представить, вы сможете решить с помощью своих знаний этого языка. Это всё ещё не так, но ваши возможности заметно выросли.
⚠️ Очень важно здесь не впасть в состояние самоуверенности. На этом этапе вы ещё не можете идти на работу разработчиком, но уже можете идти джуном, например писать документацию и заниматься рутинной технической работой.

3—6 месяцев: фреймворк, или набор инструментов для решения специфической задачи
На этом этапе вам открывается истина: чтобы делать коммерчески востребованные продукты, нужно не просто владеть языком, но и пользоваться специфическим стеком технологий — фреймворков и библиотек. Вы понимаете, зачем в первый месяц обучения вам рассказали про классы, наследование, прототипы. Вы понимаете, зачем нужны компоненты. Ваш код становится всё более абстрактным и высокоуровневым, потому что иначе вы просто утонете в нём. Вы погружаетесь в специфические фреймворки.
- В случае с веб-разработкой это будут Angular, Vue или React — смотря куда вас понесёт.
- Если вы пишете на Python — вы начнёте специализироваться на каком-то виде вычислений: либо провалитесь в веб-разработку и Django, либо начнёте глубоко изучать математические и визуализирующие библиотеки.
✅ После этого этапа вы уже уверенный разработчик, которого можно нанимать на коммерческие задачи.
⚠️ Вы ещё не знаете, что работа в ИТ-компании — это не только разработка (и далеко не она).

6 месяцев и далее: отраслевой опыт, лучшие практики и боль работы в ИТ-компаниях
Где-то здесь вы уже начинаете искать работу и попадаете в свою первую ИТ-компанию. Скорее всего, первая работа будет на позиции джуна, хотя по уровню знаний вы уже можете претендовать на позицию мидла.
Тут вам открывается, что работа в ИТ-компании несколько больше, чем просто разработка. А именно:
- Вы контактируете с менеджерами и другими разработчиками. Выясняется, что нужно уметь общаться, и это не такой очевидный навык. Договорённости искажаются, поручения теряются, менеджеры приходят с противоречивыми заданиями.
- Вы должны будете научиться управлять собой, своим временем, психологическим состоянием и работоспособностью.
- Некоторые задачи будут скучны настолько, что вы будете адски прокрастинировать.
- Вы поймёте, что писать код для любимых хобби-проектов — это не то же самое, что работать на чужом проекте внутри группы поддержки скучных служебных модулей.
✅ Вы будете уставать и выгорать, но если вы справитесь с этим этапом, у вас откроется второе дыхание и вы станете настоящим мастером разработки.
⚠️ Раньше вы смеялись над людьми, которые выгорают, работая за компьютером. Теперь вы этот человек.

12—24 месяца: оптимизация, рефакторинг, политика
Пройдя долину выгорания и скучных задач, вы узнаете о себе три вещи:
- В мире разработки есть вещи, которые вам искренне интересны.
- Если применить софт-скиллы и навыки переговоров, вы сможете загрузить себя именно такой работой. А всё неинтересное скинуть на других бедолаг.
- Программирование — это своего рода спорт высоких достижений. Ваша программа может работать быстрее.
Это этап, на котором вас начинает раздражать легаси-код. Вы хотите всё переписать под новые фреймворки, оптимизированные под новое железо. Вы начинаете заморачиваться читаемостью кода, скоростью работы и нагрузкой на исполняющие машины; у вас на столе появляются классические учебники по алгоритмам. Вы наконец-то прочитали «Искусство программирования» и всё там поняли (хотя эта книга была у вас уже год).
✅ Ваш софт начинает работать быстрее, стабильнее и просто элегантнее. Вы получаете истинное удовольствие, когда ваши программы запускаются на старом железе.
⚠️ Простые люди перестают вас понимать, считают гиком и занудой.

2—5 лет: вставки на ассемблере, экзотические языки, духовность, квантовая физика
Если не остановить этот необратимый процесс, дальше вас ждёт погружение в глубины машин. В голове рождается мысль, что вы используете недостаточно оптимизированные фреймворки, и вы начинаете разбирать их по частям, выбрасывая лишнее. Но оставшиеся во фреймворках функции тоже оказываются недостаточно оптимизированными, и вы погружаетесь на самый низкий уровень, чтобы оптимизировать этот код с помощью ассемблерных вставок.
Если говорить языком автомобилей, вы разбираете свою машину до двигателя и растачиваете цилиндры, чтобы добавить ещё сотню лошадиных сил.
Вы начинаете изучать ассемблеры, но теперь с полным пониманием, зачем вам это.
Чтобы отвлечься от мыслей об оптимизации кода, вы начинаете программировать микроконтроллеры и случайно воссоздаёте Doom на инженерном калькуляторе.
✅ Почти любую разработческую задачу вы можете решить на одноядерном процессоре с тактовой частотой 500 мегагерц, как в девяностых.
❌ Люди боятся говорить с вами о разработке.

6+ лет: сопромат, проектирование загородного дома
Вы в понимании разработки уже так преисполнились, что решаете любую задачу силой мысли. Ваша клавиатура — кастомная 12-клавишная разработка с десятью функциональными слоями. Вы напечатали её на 3Д-принтере, а логическую плату для вас изготавливали в Гонконге.
Вы начинаете задумываться о других аспектах своей жизни:
- Начинаете думать о покупке земли и строительстве дома. Правда, дом вам интересен в первую очередь как инженерный проект: можно ли его сделать полностью автоматизированным, используя микросхемы времён СССР?
- Нейронка на вашем облачном сервере считает идеальное расположение несущих конструкций вашего будущего дома.
- Вы изучаете вопрос создания собственной системы навигации на базе ГЛОНАСС, чтобы промаркировать своих будущих кур и гусей. Телеметрия и дистанционная ветеринария. Математические модели для выпаса овец. Квадрокоптер-пастух. Непрерывное энергоснабжение. Лазерное энергоснабжение.
- Однажды на рыбалке вам является оптимизация кода в одной из рабочих задач. Вы видите красоту в движении волн.
- Глядя на водную рябь, вы размышляете о критериях разумности машин.
- Вы используете Linux с доработанным вами же ядром. Вам не нужен монитор.
- Вы из тех людей, которые входят в комнату, и все компьютеры резко перестают глючить.
