Периодически вижу одно и то же: «Выучил Python, что дальше?» Начинаешь выяснять, что значит «выучил». Ну переменные знаю, циклы знаю, функции знаю, классы проходил. Списки, словари, кортежи - всё было. Отлично. Открываем пустой файл и говорим: ну сделай теперь хоть что-нибудь сам. И тут всё, приехали. Белый экран смотрит на тебя, ты смотришь на белый экран.
Python в этом плане вообще подлый язык. Он слишком быстро создаёт ощущение, что ты уже программист. print() написал - работает. Цикл написал - работает. Функцию сделал - вообще красавец. А потом пытаешься написать не очередное «угадай число от 1 до 100», а какую-нибудь нормальную фигню для себя, и внезапно оказывается, что сам Python был самой простой частью.
Допустим, захотел сделать скрипт, который раз в час дёргает API, смотрит, что там поменялось, и кидает тебе сообщение. Казалось бы - ну что там писать. А потом полезли запросы, JSON, авторизация, база, даты, таймауты, логирование. API один раз вместо нормального ответа прислал какую-то хрень. Интернет моргнул. База залочилась. Скрипт ночью сдох. И вот ты в три часа дня следующего дня смотришь лог и пытаешься понять, почему эта зараза 14 часов ничего не делала и даже не удосужилась нормально упасть.
Вот где, по-моему, и начинается настоящее обучение. Не когда ты знаешь, что у списка есть .append(), а когда перед тобой какая-то непонятная хрень и ты способен её постепенно расковырять. Загуглил. Документацию прочитал. Попробовал. Сломал. Получил traceback на пол-экрана. Матернулся. Прочитал traceback ещё раз. Оказалось, что там буквально написано, где ты обосрался.
При этом если открыть вакансии, там тоже довольно быстро становится понятно, что одного «я знаю Python» всем как-то маловато. Полез смотреть ради интереса - даже в обычной выборке вакансий рядом с Python довольно быстро появляются базы, Git, API, Docker, фреймворки, тесты и ещё вагон всякого добра. То есть работодателю почему-то недостаточно знать, что ты умеешь написать красивый list comprehension. Вот сволочи.
Поэтому после первого курса я бы вообще не шёл на второй курс «Python PRO SUPER MEGA DEVELOPER». Лучше сделать какую-нибудь свою бесполезную фигню от начала до конца. Бота, парсер цен, сортировщик фоток, счётчик расходов, программу, которая переименовывает 300 файлов, потому что руками лень. Вообще неважно. Главное - чтобы не было видео, где мужик впереди тебя пишет ровно тот же самый код.
И пусть сначала это будет один файл на 500 строк. Плевать. Пусть там будет if внутри if, внутри ещё одного if, переменная a2_final_new и функция на 80 строк. Говнокод, который ты написал сам и понимаешь, полезнее идеального проекта, который ты перепечатал за чуваком с YouTube. Потом сам же задолбаешься искать нужный кусок - поймёшь, зачем нужны модули. Скопируешь одну функцию пятый раз - поймёшь, зачем её вынести отдельно. Поломаешь уже работающий код - внезапно появится интерес к тестам.
Меня вообще всегда веселит обучение в обратную сторону. Сегодня изучаем декораторы. Зачем? Ну потому что глава 14. Завтра генераторы. Послезавтра какой-нибудь __slots__. Человек всё это честно конспектирует, а потом ему надо прочитать JSON из файла, и он идёт гуглить «python open json example». Не потому что тупой. Просто мозг довольно плохо хранит инструменты, которыми ни разу не пришлось реально воспользоваться.
Поэтому для меня «знает Python» - это вообще не человек, который на память расскажет разницу между list, tuple и set. Это человек, которому можно сказать: вот задача, вот документация, интернет не отключаем - иди сделай. И он не обязательно сделает красиво. Может сначала написать лютую дичь. Но через пару часов оно хотя бы заработает, а когда сломается - он не удалит Python и не уйдёт выращивать картошку.
Вот и интересно: что бы вы дали сделать человеку, который говорит «Python знаю», чтобы минут за 20-30 стало понятно - реально знает или просто курс досмотрел до конца?