Как я выучил python
Перейти к содержимому

Как я выучил python

  • автор:

Как я стал Python-разработчиком с нуля с з/п 100k в месяц

Прежде чем я стал Python-разработчиком, я работал охранником, барменом, помощником инженера на кабельном заводе, затем устроился в фирму по ремонту компьютеров. Иногда брал заказы по настройке домашних компьютеров, и даже не думал о том, что я когда-нибудь стану программистом. Зарплата на всех этих работах была максимум 50k, что естественно меня не устраивала (была ипотека, на которую уходила половина зарплаты).

Уволился с последней работы, и так вышло, что мне знакомые помогли в трудоустройстве в отдел внедрения (небольшая аналитическая компания), но с обязательным условием – мне дали 4 месяца на то, чтобы я изучил основы Python, Linux и SQL. Сказали, что будут тестовые испытания, и если я их пройду – возьмут в штат на позицию джуна. На тот момент мне было 32 года, согласитесь, возраст весьма солидный, чтобы начать свою карьеру в IT.

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

С чего я начал обучение? Для начала мне нужно было найти список всех доступных учебных материалов по языку Python. Открыл Яндекс, вбил запрос “Python обучение с нуля”, прошерстил с десяток статей, больше всего меня устроила вот эти:

  • https://professii.su/programmirovanie/python-razrabotchik.html
  • https://ru.stackoverflow.com/questions/420125/Книги-и-учебные-ресурсы-по-python

Там много интересной информации по Пайтону + огромный список учебных материалов для самостоятельного обучения, оформленного в удобную табличку. Пересмотрел их все и для себя подобрал следующие обучалки:

  • https://stepik.org/course/58852/
  • https://stepik.org/course/68343/

Это 2 бесплатных курса, которые научат кодить даже домохозяйку (это не шутка, там реально очень разжевано всё расписано). Первый курс прошёл за 2 недели, второй за 3 недели. Чтобы не сдаться, нужно, чтобы у вас вошло в привычку садиться за учёбу хотя бы 1 час в день, тогда вы увидите результаты.

Итак, основы языка были изучены, но знаний всё равно было недостаточно. Много чего не знал (типа ООП и прочих премудростей). А ещё мне хотелось реальной оценке своих знаний. Поэтому подобрал себе платный курс одной известной онлайн-школы, где помимо языка Python обучали Git, SQL и Docker. Это самый простой способ получить структурированные знания за короткий период времени. Время шло, впереди были неизвестные мне тестовые задания и мечта о работе программистом.

Скажу сразу, курс я проходил быстро, так как там не было дедлайнов, а у меня за плечами был кое-какой опыт программирования благодаря Степику и просмотру видео на Ютубе. Крайне советую видеолекции от Тимофея Хирьянова.

Учился по 10-14 часов в день, тратил свободное время на сон и еду, благо моя девушка всё понимала и поддерживала меня во всём. Что не понимал – гуглил, читал официальную документацию, смотрел видео на ютубе, читал статьи на Хабре. Моя задача была овладеть хотя бы 50% курса (он сам длился около года), чтобы не ударить в грязь лицом на собеседовании. Иногда встречались реально тупиковые задачи, над которыми приходилось биться по 2-3 дня. Но вдруг что-то в голове щёлкает и всё становится понятно. Это невероятное чувство, реально кайф!

Можете и не проходить платные курсы, у меня поджимало время и мне надо было быстро получить недостающие знания с проверкой моих знаний грамотным специалистом. Думаю, если вы неспеша будете обучаться по бесплатными материалам, то чтобы устроиться стажёром вам потребуется где то 10-12 месяцев ежедневной учёбы по 3-4 часа. Но лучше не лениться, иначе будет ох как тяжело взять себя в руки. Если хотите отдохнуть – позанимайтесь в этот день хотя бы 1 час и идете отдыхать. Это будет лучше, чем вообще ничего не делать и потом заставлять себя сесть за компьютер.

Через 2,5 месяца обучения нашёл типовые тесты на собеседованиях, и по нескольку раз их прорешал – оставалось пара недель до даты X. Например, это такие вопросы, как:

  • В чём разница между списками и кортежами?
  • Как производится отладка программы на Python?
  • Что такое декораторы и когда их стоит использовать?
  • Что такое @classmethod, @staticmethod, @property?
  • Что значит *args, **kwargs и зачем их нужно использовать?
  • В чём разница между многопроцессорностью и многопоточностью?
  • Как можно использовать тернарные операторы в Python?

… и множество практических заданий по написанию простых программ на Python. Это нужно изучить и прорешать в обязательном порядке, а лучше по 2-3 раза. Вот вам статья для размышления.

Что в итоге? Собеседование прошёл без проблем, вопросы были типовые, а тестовые задания были по аналогии, которые я уже решал несколько раз. Счастья не было предела! На работе меня приняли радушно, я писал код под контролем наставника, который мне очень сильно помог. Разумеется, к основному коду меня не пускали, а всю мою работу проверяли по нескольку раз. Но это было первые 5 месяцев, затем мне начали доверять некоторые куски кода в проекте.

Проработав 7 месяцев мне подняли зарплату – к этому времени у меня на руках был диплом об образовании (я как раз закончил курс) и неплохой опыт разработки. З/п в среднем 100k в месяц, зависит от курса валют. Несмотря на это я до сих пор учусь программированию (изучаю фреймворк Flask, библиотеки NumPy и Retrying, и бэкенд — Django, Модель OSI), так как понимаю, что моих знаний явно недостаточно для позиции мидла, куда я очень стремлюсь.

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

Вакансий на Пайтон-программиста реально много, на март 2023 года на hh.ru опубликовано более 10 000 предложений работы. Так что дерзайте, всё у вас получится!

P.S. Полезные материалы для тех, кто хочет стать Python-программистом:

  • «Официальная документация» — это, понятное дело, твое первое место для ознакомления с Python. Но будь готов, что там можно утонуть в океане технических терминов и синтаксических конструкций.
  • PEP 8. Здесь описаны рекомендации по стилю написания кода на языке Python. Не забывай, что читаемость кода — это очень важно!
  • HackerRank — сайт для тренировки и проверки навыков программирования на Python. Тут тебе и задачки, и курсы, и всякие тесты.
  • PyCheckIO — это как игра на выживание, только на Питоне. Здесь тебе предстоит решать задачи, которые проверяют твои знания языка программирования Python. Если ты не сдаешься перед сложными задачами, то этот интерактивный тренажер — для тебя!
  • CodeWars — это как попасть на поле боя, только вместо оружия — Питон. Здесь тебе будут предложены задачки по программированию на Python. Но осторожно, некоторые из них могут быть очень сложными!
  • Самоучитель Python — это как библия для начинающих программистов на Питоне. Здесь ты найдешь все, что нужно для изучения языка программирования, начиная от основ и заканчивая продвинутыми техниками.
  • https://python-scripts.com/ — здесь много полезных статей про Python, которые помогут тебе разобраться в сложных темах.
  • Адаптивный тренажер Python — это как тренировка на спортивной площадке, только вместо отжиманий — программирование на Питоне. Ты будешь решать задачки, которые будут увеличивать уровень твоих знаний и навыков в Python.
  • Checkio.org — это как путешествие в цифровой мир, где ты будешь решать задачки на Python. Тут есть возможность получить комментарий от самого Гвидо ван Россума! Ты сможешь узнать, что думает создатель этого языка о твоих решениях задач.
  • Projecteuler.net — это как сборная солянка из задач на математику и программирование на разных языках, включая Python. Здесь ты найдешь множество интересных заданий, которые помогут тебе улучшить свои навыки в программировании и математике. Но будь готов к тому, что многие из них будут очень сложными и потребуют от тебя много усилий и терпения.
  • Codingame — это отличный сайт для тех, кто любит игры и хочет научиться программированию. Здесь ты найдешь тысячи увлекательных проектов для начинающих, которые помогут тебе освоить программирование и при этом управлять космическим кораблем и выполнять интересные миссии.
  • LeetCode — еще один крутой сайт для тех, кто хочет улучшить свои навыки в программировании. Здесь ты найдешь множество задач, которые разбиты на три категории сложности.
  • Computer Science Center — это курс видеолекций, который позволит тебе изучить Питон и компьютерные науки. Этот курс предоставляет все необходимые материалы, чтобы выучить Питон, а также затронуть темы, связанные с компьютерными науками. Обязателен к изучению!
  • Видеолекции «Алгоритмы и структуры данных на Python 3»
  • Сборник примеров — это неплохой ресурс для тех, кто хочет научиться программированию на Питоне.
  • informatics.msk.ru — это еще один отличный ресурс для тех, кто хочет научиться программированию на Питоне. Здесь ты найдешь курсы с задачами на Питоне, которые помогут тебе улучшить свои навыки программирования.
  • Сайт с олимпиадными задачами — прокачивай свои навыки и подготовься к собеседованиям.
  • Онлайн-тренажер по Python — получай реальный опыт программирования и тренируйся на практике.
  • Тесты от https://skills4u.ru/school/informatika/python/ — еще один онлайн-тренажер, где ты сможешь проверить свои знания Python.
  • PythonTutor — бесплатный курс для начинающих, работающий прямо в браузере. Ты сможешь изучить Python с нуля.
  • http://www.kodesource.top/python-exercises/ — отличный ресурс для начинающих, где ты найдешь много полезной информации.
  • Сборник задач с решениями — решай задачи и прокачивай свои навыки программирования.
  • Timus Online Judge — архив задач с проверкой решений.
  • Сборник упражнений и задач по основам Python для начинающих — прокачай свои знания Python.
  • Клавиатурный тренажер — попрактикуйся в наборе кода на Python.
  • Хендбук по Python от Академии Яндекс.

Полезные книги:

  • «Изучаем Python» от Марка Лутца — здесь ты найдешь всё, что нужно знать, чтобы стать настоящим Python-гуру! В книге есть и программирование игр, и визуализация данных, и создание веб-приложений. Книга — Библия по Python.
  • «Программируем на Python» от Майкла Доусона — это книга для начинающих. Здесь пошагово описаны основы языка, а также приводятся примеры простых программ.
  • «Программирование на Python 3. Подробное руководство» от Марка Саммерфилда — эта книга написана очень доступно, и в ней подробно описываются основы языка. В книге есть и упражнения, чтобы закрепить знания.
  • «Совершенный код» от Стива Макконнелла — хоть эта книга и не о Python, но здесь есть много полезных советов по написанию хорошего кода на любом языке программирования. Если ты хочешь писать красивый и эффективный код, то обязательно загляни в эту книгу.
  • «Python. Подробный справочник» от Дэвида Бизли — эту книгу можно использовать как справочник, чтобы быстро находить ответы на вопросы. Здесь подробно описаны все функции и методы, которые есть в Python.

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

Как я изучил Python за месяц и сразу заработал 5000 рублей на фрилансе

Скажу вам сразу – выучить основы языка Python за месяц сложно, поэтому не ставьте перед собой именно такой фантастической благородной цели. По мере обучения вы сами поймёте, когда сможете осилить даже самый простой заказ. Поэтому поменьше критики! Если это получилось у меня, то и получится у вас! Итак, начнём!

В современных реалиях Пайтон — это востребованный и популярный язык в мире, но у меня был ещё ряд причин, по которым я решил его освоить. Главная причина – это, что его применяют во многих компаниях и сферах, причём востребованность специалистов растёт из года в год. Например, на дату написания поста требуется более 10 000 Python-разработчиков (данные взял с сайта hh.ru).

Для начала изучения Пайтона желательно, чтобы вы имели базовые навыки программирования (на любом языке) и немного разбирались в английском. Если этого нет, то обучение может занять больше месяца, хотя всё зависит только от вас.
На учёбу я тратил ежедневно по 6 часов без выходных.
Вот какой я написал план для достижения поставленной цели:

1. Изучение основ языка Python (синтаксис, циклы, функции, условные операторы и пр.).
2. Отработка полученных знаний на практике.
3. Разработка 1-2 полноценных проектов.
4. Освоение 2-3 пайтон-фреймворков.
5. Изучить ГитХаб, хостинг и прочие нужные инструменты разработчика.

Первая неделя. Получаем начальные знания.
Изучите документацию, повторяйте пройденный материал, читайте форум ru.stackoverflow.com, задавайте вопросы ChatGPT.
Чтобы успешно изучить базовые понятия языка рекомендую использовать следующие обучающие материалы (они бесплатные):
1. professii.su/programmirov…/python-razrabotchik.html – годная статья про Python (особенности профессии, поиск работы, карьерный рост, большой список полезных ссылок для новичков).
2. ru.stackoverflow.com/ques…учебные-ресурсы-по-python — ссылки на неплохие материалы по языку, собранные опытными разработчиками. Некоторые материалы могут оказаться сложными для начинающих.
3. digitology.tech/docs/python_3/ — документация по Python на русском.
4. github.com/vera-l/python-resources — Обучающие материалы по питону на ГитХабе, кладезь ссылок на учебную литературу, в том числе на англ. языке (пригодится, когда вы освоите начальные навыки).

Параллельно начните читать книгу Укус Питона – перевод здесь + уделяйте изучению английского языка не менее часа в день, например на этом ресурсе.

1 день. Изучение основ языка (3-4 часа): синтаксис, условия, переменные, ввод и печать.
2 день. Продолжаем изучать базовые понятия (5-6 часов): импорт модулей, циклы, функции.
3 день. Решаем простые задачки (4-5 часов): конвертация градусов из одной системы единиц в другую, создание кода простого калькулятора, генерация случайных чисел, поиск повторяющихся значений и т.д.
4 день. Решаем задачки посложнее (5-6 часов): объединение массивов, проверка палиндрома, расчёт GCD, соединение двух массивов.
5 день. Основы структур данных (5 часов): кортежи, словарь, списки.
6 день. Основы объектно-ориентированного программирования (ООП) (5 часов): наследование, классы, объекты, методы.
7 день. Основы алгоритмов (6 часов): виды поиска, сортировок, рекурсия, сложность времени.

2 неделя. Начинаем создавать простые проекты.

1 день. Осваиваем любую IDE (5 часов). Я изучил редактор Visual Studio Code, так как он простой в использовании и абсолютно бесплатен. Дополнительно установите в него плагин для Python, это не сложно. Изучите главные функции и возможности редактора кода, чтобы без писать код, не отвлекаясь на работу с редактором.
2 день. Работаем с ГитХабом (6 часов). Изучите веб-сервис GitHub, зарегистрируйтесь, создайте репозиторий, посмотрите, как работают команды commit, push, pull, branch, fork.
3 день. Создаём свой первый проект (5 часов): калькулятор на Python с Tkinter.
4 -7 день. Делаем более сложный проект (6-7 часов ежедневно): я взялся за создание будильника, использовал библиотеку Gstreamer.

3 неделя. Изучаем базы данных, API, фреймворки, библиотеки.

1 день. Основы SQL (5 часов): базовые запросы, функции, виды соединений и т.п.
2 день. Основы взаимодействия БД с Python (6 часов): SQLite, Pandas, подключение к БД, чтение, создание, вставка.
3 день. Изучаем API (6 часов): Rest API, JSON, вызов API.
4 день. Осваиваем библиотеку NumPy (5 часов).
5 — 6 день. Изучаем фреймворк Django (по 5-6 часов ежедневно). Создание своего первого сайта-портфолио на Джанго.
7 день. Изучаем PyTest (5 часов): отладка, проверка журнала, модульный тест.

4 неделя. Поиск работы на фриланс-биржах.

1-2 день. Создаём резюме (по 4-5 часов каждый день). В резюме обязательно укажите навыки, списки проектов с ссылками на ГитХаб. На свой созданный сайт-портфолио добавляем несколько статей. Создание резюме на hh.ru и career.habr.com.

3-7 день. Регистрация на фриланс-биржах, поиск заказов (freelance.ru, kwork.ru).

Выбрал заказы, с которыми, на мой взгляд, я смогу справиться. Отправил 10 заявок, 1 заявку приняли. Нужно было установить Django с соответствующей настройкой веб-сервера, а модули Python установить в виртуальное окружение. Было очень волнительно выполнять первый свой заказ, думал, что не справлюсь. Пришлось много гуглить, но зато я нашёл все подходящие решения + (спасибо ChatGPT!). Заказчик работу принял, а я заработал свои первые деньги на фрилансе (5000 р.). Важный момент – если вам отказали, то проанализируйте, каких вам навыков не хватает, чтобы взяться за задание и потратьте 4-6 дней на освоение каждой новой технологии/инструмента. Через несколько месяцев это здорово прокачает вас как программиста.

А теперь перейдём к суровой правде: вы никогда на 100% не освоите язык Python ни через 5 или даже 10 лет. Это связано с тем, что некоторые из библиотек могут быть настолько сложными, что учить их вместе с самим языком Python может занять довольно много времени. Например, библиотека Pandas требует значительного времени для ее изучения. Вообще программирование — это не только знание языка, но и понимание алгоритмов, структур данных, архитектуры ПО и других интересных вещей. Поэтому изучение Python — это бесконечный процесс, но со временем вы сможете стать профессионалом в отдельной области применения языка (например, в веб-разработке или ML).

Перейдём к списку учебных материалов, которыми я пользовался во время самообучения:

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

Чтобы максимально хорошо закрепить знания – регулярно изучайте коды Python-библиотек на ГитХабе. Это даст начальное понимание организации проекта, и со временем вы будете лучше воспринимать код и учиться лучшим практикам.

Список полезных советов по самообучению этого языка, которые мне реально пригодились, чтобы я не опускал руки и уверенно двигался к цели (которая успешно была достигнута):

• Сядьте, посидите и подумайте (хотя бы полчаса), действительно ли вам нужно это дело, программирование. Что вы хотите эти добиться и готовы ли вы потратить много месяцев на это дело? Если у вас есть что на это ответить, и вы будете осознанно понимать какой и когда будет результат, то вы сможете долгое время сохранять мотивацию.
• В начале обучения не мучайте себя установкой Python, писать код вы можете даже в браузере, например, здесь.
• Изучайте язык постепенно. Изучите только то, что необходимо для осуществления вашего проекта, иначе в голове будет просто каша, и вы просто бросите обучение.
• Если вы поставили цель изучить Python не для себя, а для работы, то у вас должна быть такая установка: не “надо быстро выучить язык”, а “я умру на месте, если не сделаю всё возможное, чтобы через 3 месяца подавать резюме на джуна”. К примеру, вы бросаете основное место работы и у вас есть денежная подушка на полгода. Здесь вы либо устраиваетесь работать по истечении 6 месяцев, или вы ищете работу на заводе. Без точно обозначенных целей результат будет слабый. Проще и эффективнее всего устроиться на работу стажёром. Да, платят там немного, но зато вы классно прокачаете свои навыки на реальном коммерческом проекте. 1 год работы стажёром даст вам в 3 раза больше, чем самостоятельная учёба в течение тех же 12 месяцев.
• Одновременно учите Python и английский язык. Если вы будете регулярно изучать документацию и туториалы на этом языке, то вы довольно быстро освоите английский для IT. На English в идеале нужно уделять не менее 3 часов в день.

Как вообще правильно читать книги по программированию? Вот самый эффективный способ:
1. Изучаем теорию, пока не появится пример кода.
2. Убираем книгу.
3. Пишем код и практикуемся.
4. Берём книгу и читаем дальше.

А есть ли смысл учиться по видеоурокам? Да, но нужно последовательно повторять за ним все действия, по небольшим кусочкам кода. Что это даст? Вы систематизируете свои знания, поймете, как надо правильно писать код (если автор грамотно будет объяснять что и зачем он делает) и научитесь лучшим практикам Python.

Вывод: если говорить совсем кратко, то алгоритм обучения такой: читаем Майкла Доусона «Программируем на Python» и “Укус Питона” – проходим курсы на Степике / Ютубе – изучаем Django и пилим на нём сайт – параллельно читаем Марка Лутц «Изучаем Python» и учим английский.

В дополнение – список отличных материалов, которые вам точно пригодятся в дальнейшем изучении языка (моя личная подборка):

Как я начал учить Python и ничего не произошло

Вы когда-нибудь видели лендинги курсов по программированию? Наверняка да, ведь времена «мидлов за полгода» и «джунов за три месяца» отгремели совсем недавно. Страницы многих успешных эдтех-компаний здесь похожи. За обещаниями золотых гор на золотых песках удаленки мы вглядываемся в светлые лица преподавателей, и после reasons to believe нас встречает… программа обучения. Двух-, а то и трехуровневая простыня со всеми важными темами. И чем их больше, тем лучше: ведь на другой чаше весов уже поджидает стоимость курса.

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

Немного о себе. Моя работа всегда была связана с текстами. В основном айтишными. Я много пишу с экспертами на разные темы, но никакими системными знаниями о языках программирования в итоге не оброс. До этого курса моим высшим достижением был фан-сайт группы «Кино», написанный на информатике с Dreamweaver. На фоне одноклассников с кодом в блокноте выглядело круто, но в голове осталось немного (спасибо, визивиг).

Перемещаемся лет на 17 вперед. В конце прошлого года я получил для бесплатного знакомства экспресс-курс Python «Программирование — и точка». Не буду ссылаться на создателей, чтобы не обвинили меня в рекламе, по названию найти можно быстро.

А теперь время дневниковых записей: как я провел январь.

Первые «умные слова»

В моем экспресс-курсе не обошлось без обзорной лекции о базовых вещах. Что такое компьютер, я более-менее представлял. Думал, что совсем заскучаю, но получил в свой словарь два новых термина: «компилируемый язык» и «интерпретируемый язык». Следом в зачет пошел одобрительный кивок друга-программиста — когда за пивом поведал ему новость о своем курсе и вывалил эту пару определений. И это мне еще про Python ни слова не сказали!

Среда разработки

На курсе использовали среду PyCharm. Раньше я использовал среды разработки только «в режиме просмотра», чтобы, будучи гострайтером, копипастить чужой и непонятный мне код в чужие же посты. Теперь я встал на место тех самых экспертов и должен сам врубаться, что вижу в редакторе.

Здесь и далее я буду отражать свои эмоции от обучения. Они адресованы в первую очередь тем, кто делает первые шаги в программировании, как я, или вообще сомневается в этой затее. Так вот: современные среды разработки — это восторг. PyCharm сам готовит все необходимое для работы, нужно только скачать Pycharm и установить его (по дефолту это бесплатно). Цветовое выделение кода срабатывает на лету; со временем я запомнил, как должны выглядеть те или иные слова, что я вбиваю, и неправильный цвет мгновенно напоминал мне об опечатке или другой проблеме. А еще PyCharm сразу сообщает об ошибках, причем делит их на фатальные (без которых не заработает) и нефатальные («лучше так не делать, могут быть проблемки»). Максимально дружелюбная среда для работы.

Переменные, числа и математика

Пошли первые темы непосредственно о питоне. Получил пачку советов о том, как называть переменные. Правила здесь несложные, просто учту, что переменных может быть много и поэтому нужно называть их осмысленно. Но при этом не растекаться, потому что писать их придется часто. Написал hello world — бонус к мотивации!

Числа были вынесены отдельной темой. Точнее, типы чисел. Показалось, что это тема, скорее, для общего развития: концепциям, которые я осознавал и раньше, просто дали определения.

Условные конструкции

Начались задачи. Простые математические задачи на базовые арифметические действия и логику. Если понимаешь, как в принципе это делать, то оформить в код будет легко. Любую задачку всегда можно запустить в среде разработки, прежде чем копипастить код для проверки. Когда можешь проверить себя самостоятельно, это успокаивает.

Условные конструкции открыли и мой первый затык. Когда мы утверждаем, что нечто равно чему-то, нужно ставить “=”. Когда мы проверяем, что нечто равно чему-то, нужно ставить “==”. Двойное равно не входило в мой лексикон чуть ли не до финального проекта. А PyCharm не писал, что это ошибка. Много раз я шерстил вроде бы нормальный код вдоль и поперек, пока в голове не улеглось.

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

Списки и циклы

Если мы хотим перебрать что-то в диапазоне, например, от 1 до 5, мы пишем: for i in range(1, 6). Последнее число в диапазон НЕ включается, а первое включается. Ок, смирился. Можно обратиться к элементам диапазона с конца, используя отрицательные числа. Это удобно. Но при этом первый элемент списка — он для питона не первый, он нулевой, счет с нуля идет. Особенности нумерации — это первое, что меня удивило в языке. Вероятно, на более глубоких уровнях познания это имеет логическое обоснование. Привыкаю и смотрю дальше.

Ага, врубился

К этому моменту я уже привык, что в программировании все нужно объявлять и объяснять. Окей, я объявил, например, что ввожу с клавиатуры некоторый диапазон, в котором должен работать обработчик (обработчик?) for, вот этот самый range. Но как обозначить i так, чтобы обработчик понял, что нужно двигаться по диапазону? Да никак! Эта “i” выглядела для меня так, будто появляется из ниоткуда, но при этом подразумевала именно то, что мне нужно. В других примерах я увидел, что вместо “i” можно указать “_”, а потом узнал, что подойдет любой символ.

В этот момент я был как никогда близок к тому, чтобы все бросить. Спасибо, Stack Overflow, ты прекрасен! И спасибо другим ребятам, что проходили курс: в ответ на мое нытье они признались, что до циклов еще не дошли, порадовались моему прогрессу и вовремя приподняли мотивацию.

Функции и рекурсия

Объединил их в один раздел, потому что проскочил обе со всеми домашками быстро. Спойлер: это подвело меня в финальном проекте. Кроме того, я, кажется, не понял до конца, что нужно писать после названия функции в скобках, когда мы объявляем ее через def. Но этот пробел не помешал мне с заданиями, которые, видимо, были слишком простые.

Рекурсия, как концепция, показалась очаровательной. Вдохновила на внеклассное чтение, провел весь вечер, залипая на фракталы 🙂

Структуры данных

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

Классы

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

Модули

Классическое начало Fallout представляете? Вспомните момент, когда вылезаешь из убежища/пещеры в совершенно новый, открытый мир — где не знаешь, чего и ждать, так что ждешь всего и побольше. То же самое и с модулями Python. Целая вселенная возможностей оказалась на расстоянии строчки-двух импорта. Таким же когда-то мне представлялся мир модов на скайрим, но кайфа от побед в питоне я получил больше 🙂

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

Выход из убежища в Fallout 4

Итоговый проект

Курс не включал гайдов по итоговому проекту, но я знал, что согласно плану создателей курса, я должен был сделать тренажер с флеш-картами для изучения иностранного языка. Это когда тебе дают определение слова, а ты должен написать, что это за слово. И так много-много раз в случайном порядке до полного запоминания. К тому моменту я закончил прекрасную игру Yakuza 0, богатую новыми для меня словами и фразами на английском. В итоге выписал штук 80 — база готова.

Tkinter я кое-как осваивал уже сам, по многочисленным гайдам в Сети. Предварительно отрисовал простенькую блок-схему с user journey. Помимо рандомного выбора определений поставил ограничение на 20 карточек за сессию и подсчет правильных ответов — с выдачей какого-нибудь игрового персонажа в зависимости от результата.

Думаю, вы представляете, как это примерно должно работать. У меня получилось где-то 80 строчек кода (не считая словарную базу). В них входило 10–15 модулей (графических элементов) Tkinter и три функции — проверка ответов с подсчетом результата, переход на следующий вопрос с подсчетом показанных карточек, создание финального сообщения на основе числа верных ответов.

Самое классное здесь не то, что я сделал проект сам с нуля, нет. Самое классное — что в начале работы я не имел представления о том, как будет выглядеть большая часть проекта. Всё вырисовывалось постепенно, за каждым поворотом к цели я открывал что-то новое, переписывал, переставлял, стремился к тому, чтобы всё вышло по ТЗ. И оно вышло, да! Я смог сделать из этого готовое приложение — можно было показать его даже без пайчарма.

К чему всё это?

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

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

Надеюсь, и в вашей работе всё еще находится место таким эмоциям. Успехов!

  • python
  • курсы
  • обучение программированию

Моя история в IT: как самостоятельно изучить JavaScript и Python, чтобы осуществить свою мечту

Аватарка пользователя Роман Вагнер

Из этой статьи вы узнаете, как изучить Python и JavaScript самостоятельно. Личный опыт разработчика, рекомендации книг и онлайн-курсов.

Я закончил университет по специальности «Специалист по рекламе и связям с общественностью». Еще во время учёбы меня часто посещали идеи создания различных приложений и даже устройств. В один момент появился друг, который занимался мобильной разработкой. Я ему рассказал о своей идее, мы решили попробовать её реализовать. Я спроектировал UI приложения, придумал рекламу и вариант коммерциализации, на друге была разработка. Продукт, к сожалению, мы не выпустили: не хватило опыта, людей, времени. Однако ещё на этапе проработки идеи у меня всё чаще возникали мысли стать разработчиком.

Но путь к разработке оказался тернистым. Во время обучения в университете и после него я поработал на самых разных позициях.

Промоутер визиток по подъездам -> дворник -> PR -менеджер, менеджер по продажам -> графический дизайнер -> event-менеджер, графический дизайнер -> PR-менеджер, графический дизайнер -> графический дизайнер -> менеджер по проектам -> менеджер по проектам, помощник бизнес-девелопера -> аниматор/инструктор в пейнтбол-клубе -> помощник SEO-специалиста -> разметчик данных -> Python-разработчик.

За 5 лет работы я перепробовал многое, но меня всегда тянуло в программирование, которое я почему-то боялся освоить.

Никогда не хотел стать программистом только из-за того, что платят много (опять же, не везде так). В разработке меня привлекает комьюнити, а также реализация себя и своих идей, которые, возможно, могут помочь другим людям. Деньги — как приятный бонус за потраченное время и достижение определённых целей.

Как я учил JavaScript самостоятельно

Я начал учить JavaScript, пока работал разметчиком данных. Хотел попасть в команду разработчиков, а без знания JS там просто делать было нечего. Сначала очень долго искал информацию о предмете изучения, доставал с вопросами всех, до кого дотянутся руки, и задавал им вопросы касаемо их способов изучения языка. После всё структурировал: сохранял закладки, делал заметки, составлял списки и т.д.

В итоге мне подсказали очень крутую книгу. Я забил на всё, что делал ранее, и начал учиться по ней: «Выразительный JavaScript», автор Марейн Хавербеке. Из этой книги я получил свои основные знания по JS. Также пользовался онлайн-учебником JavaScript. Спасибо Илье Кантору и команде за этот проект — там много полезной теории и куча практики. На YouTube смотрел уроки Владилена Минина — у него классный канал, который поможет как новичку, так и продолжающему изучать язык.

Забавно, но при изучении JavaScript я постоянно поглядывал на Python. Как оказалось, не зря.

Моя история в IT: как самостоятельно изучить JavaScript и Python, чтобы осуществить свою мечту 1

Подготовка заняла 3 месяца. Затем я выполнил задание и прошёл собеседование. Так получилось, что попал в команду, где были одни питонисты. Пришлось учить Python. Понравилась простота языка, большое количество источников для обучения и неограниченность в применении — например, в робототехнике, которая мне интересна как хобби.

Как я учил Python самостоятельно

  • A Byte of Python, автор Swaroop Chitlur (перевод Владимира Смоляра).
  • «Изучаем Python. Программирование игр, визуализация данных, веб-приложения», автор Эрик Мэтиз.
  • «Грокаем алгоритмы», автор Адитья Бхаргава.
  • «Погружение в Python» от МФТИ и Mail.Ru Group на Coursera.
  • «Программирование на Python» и «Python: основы и применение» от Bioinformatics Institute на Stepik.
  • «Python для решения практических задач» от Computer Science Center на Stepik.
  • Adaptive Python от JetBrains на Stepik.
  • Канал Тимофея Хирьянова — это преподаватель кафедры информатики МФТИ, который выкладывает свои лекции и занятия в открытый доступ.
  • Канал АйТиБорода — очень познавательно и вдохновляюще, а также помогает найти источники для обучения. Конкретно по Python рекомендую видео «Олимпиадки, асинхронность и удалённая работа / Всё о Python / Интервью с Python Developer».

Для практики можно попробовать решать на Python задачи из Проекта Эйлера.

Я считаю себя уже опытным новичком, поэтому, думаю, могу дать несколько советов, которые помогут и вам:

  1. Пишите каждый день на том языке, который выбрали для изучения. Что-то небольшое, хоть по функции в день, чтобы выработать привычку писать код.
  2. Читайте чужой код. Тут, как и в дизайне, нужна насмотренность, плюс увиденное можно применить в своей работе.
  3. Учитесь искать ответы на вопросы в интернете. Как сказал мой коллега: «Программист от обычного человека отличается тем, что лучше гуглит». Звучит банально, но зачастую очень сильно помогает в работе, когда нет возможности уточнить у коллег, ну и +100 к самостоятельности.
  4. Окружайте себя программистами. Так у вас появится ещё больше мотивации для развития своих навыков. Возможно, зародятся совместные проекты, где вы сможете применить полученные знания на практике.
  5. Записывайте и структурируйте свои идеи и не бойтесь делиться ими с окружающими.
  6. Не бойтесь показаться глупым. Задавайте вопросы, много вопросов. Это очень крутой способ саморазвития.
  7. Не упускайте возможность и не бойтесь стать ментором для новеньких. Этот шаг очень прокачает ваши навыки объяснения, вы обязательно сами узнаете много нового.

И главное — верьте в себя и не сдавайтесь на пути к своей мечте!

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

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

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