Transcription
Мы живём в мире, когда ИИ пишет уже готовый код. Из каждого утюга гремит новость о том, что вышел новый агент. Ты окружён мнениями о том, что программированию капец. Страшно? Наоборот, кайф. Ведь теперь при правильном подходе ты можешь экстремально быстро обучаться и реализовывать проекты.
Я сижу в разработке уже 5 лет, и в ближайшие 10 минут расскажу тебе, как правильно научить программирование в эпоху ИИ и дикого хайпа вокруг этой отрасли. Также укажу на ошибки, которые новички регулярно совершают, и дам лайфхаки, с которыми ты будешь обучаться суперпродуктивно.
В этом видео я хочу опустить тему того, как максимально быстро трудоустроиться либо, не знаю, войти в предпринимательство. Тут немного другие правила будут более эффективными. Сейчас сконцентрируемся именно на том, а как слепить из себя классного инженера по натуре и войти в профессию.
Первое, что ты должен сделать - это сформировать правильный майндсет. В программировании самое тяжёлое - это не алгоритмы какие-то, структуры данных либо элементы синтаксиса. Самое жёсткое - это уметь регулярно, на каждодневной основе решать проблемы, сталкиваться с полным непониманием того, как решить задачу, постоянно учить что-то новое, справляться с синдромом самовозванца. Также, конечно же, практика. Это всё как бы та основа, из которой состоит каждый разработчик.
Очень часто наступают моменты полного отчаяния, когда ты уже сидишь десятые сутки за какой-то сложной проблемой, решаешь сложную задачу, вообще ничего не выходит. Ты уже там и пошёл, спросил у помощи, попросил у кого-то, всё без толку. Крутые специалисты, те, кто по-настоящему добиваются успеха в этой отрасли, умеют, невзирая на эти трудности, планомерно двигаться вперёд, не опускать руки и не сливаться. Остальные же, как только сталкиваются с какой-то там более-менее тяжёлой проблемой, просто бросают это дело и по итогу лишают себя довольно крутых перспектив.
Этот феномен также описан в книге Сета Година "Яма". Это очень дискомфортный этап между началом пути и достижением мастерства. Понятно, что на самом старте энтузиазм бьёт через край. Ты разбираешь лёгкие темы, у тебя куча обучающего материала, тебе всё ровно, всё понятно. Но потом начинаются проблемы, и умение проходить через эту яму отделяет посредственных людей от тех, кто чего-то добивается.
Скажу тебе из личного опыта: любые проблемы, какими бы тяжёлыми и неподступными они не казались, всё равно решались. И вот момент, когда ты понимаешь, как эту проблему решить, дофамин просто бьёт через край. И поверь мне, каждое преодоление того стоит. Изучение программирования должно даваться тяжело. Настоящий рост он происходит через преодоление. Вот. То есть этот путь очень тернист. Если всё, что ты делаешь, не вызывает у тебя какого-либо дискомфорта либо сопротивления, но, вероятно, ты делаешь что-то не так.
Программирование - это не про гениальность, а про усидчивость, силу воли и умение постоянно решать проблемы. Если ты на самом старте снимешь розовые очки и осознаешь эту реальность, тебе будет легче двигаться дальше.
Итак, ты себя проработал. Следующий этап - это понять, что бы тебе хотелось разрабатывать больше всего: игры, мобильные приложения, сайты, какие-то нейронки. В общем, ты должен найти тот продукт, который к тебе ближе всего, потому что процесс изучения программирования должен быть максимально кайфовым, иначе будет большой соблазн всё бросить. Проанализируй мир, пообращай внимание на разные продукты и найди тот, который тебе бы хотелось либо полностью повторить, а либо сделать что-то похожее.
Далее найди язык программирования, который используется в этой нише активнее всего и является одним из лучших. Язык программирования - это всего лишь инструмент. Если ты ещё и найдёшь тот, который хорошо востребован на рынке, ты и работу найти сможешь, что для многих довольно как бы немаловажный фактор. У меня уже было подробное видео, где я объяснял, как правильно выбрать первый язык программирования. Если что, ссылка в описании, советую ознакомиться.
Дальше у нас идёт процесс обучения, который должен быть не только интересным, но и эффективным. Принципы, по которым мы учились в школе, не работают. Пассивное потребление контента не работает. Нам важно реализовывать что-то самостоятельно и постоянно практиковаться. Мы должны придумывать решение сами, пусть не идеальны, но главное, что сами. Таким образом у нас знания попадают в долговременную память и там задерживаются. Это просто необходимо, если мы не хотим быть вот этой вот рыбкой Дори из "Немо". Что-то посмотрела потом? А что? Какой полиморфизм? А я уже всё забыл, уже ничего не помню.
Если бы я начинал с начала, я бы посоветовал себе железобетонно следовать принципу постоянной практики. Это позволило бы мне на самом старте эффективно проходить курсы, не прожигать время и наиболее быстро обучаться. По ходу дела нужно самостоятельно реализовывать фичи, декомпозировать задачи и итеративно их решать, гуглить интернет и собирать с разных источников информацию, также уметь её отфильтровывать.
Настоящий прогресс начинается тогда, когда наш мозг так по-тупому работает и приходит к решению, на которое способен. Давайте отдельно подчеркнём важность декомпозиции задач. Умение итеративно приходить к какому-то результату позволяет нам проще держать мотивацию и заинтересованность. Нам нужно какую-то большую проблему либо задачу дробить на маленькие шаги. Таким образом, по мере нашего прогресса, мы будем регулярно вырабатывать дофамин, который будет нас подбадривать и держать замотивированными на протяжении всего пути.
Теперь, когда мы понимаем, как правильно учиться, нужно разобраться с тем, что учить. Начинать нужно с самых основ: с циклов, функций, с переменных, с базовых принципов ООП. Для этого мы берём самый такой новичковый курс по программированию на выбранном языке и вместе с автором реализовываем всякие там мини-приложения, туду-листы, калькуляторы. Подчеркну, что важно самому практиковаться. Поэтому, если в калькуляторе автор реализовал вычитание, ты будь креативным и реализуй умножение, либо деление, либо сложение.
После прохождения базового курса нужно сделать что-то своё, но полностью самостоятельно, чтобы лучше закрепить материал. По мере прохождения ты будешь учиться читать документацию, рыть недры интернета, возможно, научишься коммуницировать в рамках какого-то комьюнити, если ты там будешь у кого-то помощи просить, да. Тебе нужно как бы научиться искать иголку в стоге сена и всего объёма информации, которую ты в себя впитываешь, которую ты находишь, находить самое нужное и то, что поможет в конкретной задаче именно тебе.
После изучения основ я бы нашёл какой-нибудь курс по прикладной разработке там игр, мобильных приложений, сайтов, дронов, неважно. Параллельно с автором я бы реализовал там один-два простеньких проекта, также дорабатывая их своими фичами. После этого я бы уже всё ушёл бы в свободное плавание и сделал что-то своё полностью самостоятельно и что-то такое глобальное, что-то тяжёлое и не слишком простое и базовое. Вот тут-то и пойдёт настоящий прогресс. Ты научишься декомпозировать задачи, применять и вот так вот между собой увязывать разные технологии. Помимо этого, ты добавишь просто хороший проект в портфолио, что тебе поможет найти работу или трудоустроиться в будущем.
На протяжении всего пути нужно в голове держать мысль, не увязываясь в бесконечном потреблении видеолекций, каких-то курсов и книг, чтобы не было такого: 500 часов материала просмотрены и впитаны, а самостоятельно мы вообще ничего сделать не можем. Короче, важно не увязнуть в так называемом "туториал хел". Я понимаю, что круто, приятно смотреть видеолекции и думать, что ты в моменте всё понял. По факту, бро, ты ничего не понял. И как только дело доходит до какой-то самостоятельной работы, все проблемы вскрываются вообще моментально.
Слишком сильно не уходи в теорию, пока не столкнулся с необходимостью что-то применить на практике. Используй так называемый проблемно-ориентированный подход. Изучи курс по основам, там прикладной курс, а потом точечно разбирай темы по мере реализации своего проекта. Короче, следуй этому популярному правилу 80/20. Изучай 20% фич, которые ты будешь использовать в 80% времени. Конечно, есть такая проблема, что как только ты начинаешь готовиться к собеседованиям, а ты должен будешь начать всякую фигню учить, которая применяется на практике вообще очень редко. Но поначалу я так думаю, что речь о трудоустройстве не идёт. И загружать свою голову только самое нужное и полезное.
Использовать нейронки в обучении - это вообще отдельный вид искусства. Многие просят ИИ просто генерировать за них код, а потом удивляются: "Что ж у меня самому-то сделать ничего не получается, когда заканчивается подписка на ChatGPT или Cursor?" Первое и самое очевидное правило: не используй ИИ для генерации кода в обучении. Сделай что-то сам. Пусть коряво, пусть там не по best practices. Потом попроси GPT-образный, да, свой код продебажить, указать на инструменты, с которыми решение было бы более правильным, улучшить архитектуру приложения. После чего твоя задача - эти как бы советы учесть и им следовать. Только держи в голове, что ИИ тоже бывает бред говорит. И хорошо бы либо просить нейронку давать тебе ресурсы в интернете, на которые она опиралась и базируясь на которых давала тебе советы, либо сам ищи этим рекомендациям подтверждение. И если ты как бы точно знаешь, что то, что тебе предложили, это фактически будет лучше, чем то, что ты сделал сам, тогда, да, тебе нужно проработать эти знания, проработать советы и следовать им.
Ещё один совет. Если столкнулся с какой-то проблемой, не беги сразу и не проси помощи. Такой скилл самостоятельного решения ценится на реальной работе. Ты должен какое-то время сам сам попробовать справиться с задачей, почитать документацию, погуглить, погонять серое вещество по голове и попробовать самому прийти к решению. Но тут важно соблюдать баланс. Если ты будешь неделю сидеть и пытаться найти ответ на вопрос, который тебе могли бы просто коллеги по работе выдать за за секунду, но тоже неправильно. В этой цепи как бы два звена очень важны. Должен и сам уметь какое-то время непродолжительное пытаться справиться с проблемой. Также должен уметь когда нужно просить о помощи. В общем, используй ИИ как наставника. Не проси за тебя генерировать код и перепроверяй ответы. Вот в наше время точно не стоит игнорировать GPT и всякие вспомогательные инструменты. Умея правильно с ними работать, ты будешь прогрессировать кратно быстрее.
Ещё один совет, который я бы себе дал на старте - это изначально начинать вести блог и пытаться обучать людей тому, что изучаешь сам. Одно время я был полностью погружён в системное программирование и Linux. На этой почве и вырос мой телеканал Linux Camp. Я пытался максимально сильно упростить материал. Я очень глубоко уходил в разбор каких-то тем и очень хорошо в этих как бы направлениях прокачивался. Начинал я с того, что писал большие статьи на Хабр. Потом мне захотелось как бы раскрывать более мелкие темы и завёл ТГ-канал. По мере публикации материала я кратно прокачивался не только в знаниях, но и в умении грамотно излагать свои мысли.
Но в чём прикол? Процесс твоего развития не заканчивается на вот публикации контента. Тебе люди будут задавать вопросы, и чтобы на них ответить, тебе нужно, опять же, в материал углубляться, да, и максимально подробно его излагать, так чтобы вот убрать вообще любые недопонимания. Также тебе могут указывать на ошибки, чтобы их исправить, либо там сказать, что нет, я всё сказал верно. Тебе также нужно ещё лишний раз пройтись по материалу и в некоторых моментах копнуть глубже, чем ты копнул изначально. Короче, вести тематический блог - это вообще очень интересная затея и очень интересный процесс. На старте тебе рекомендую этим заняться. Ты будешь и сам прокачиваться, и людям уж помогать, что тебе, конечно же, зачтётся.
Помни, через усилия рождается скилл, а через скилл настоящая свобода. Подписывайся на канал, ставь лайк, пиши в комментариях, с какого проекта ты начинал учить программирование, либо какой проект планируешь вот только сделать, чтобы качнуть свои скилы. Также переходи в мой телеканал ITCamp, где публикую кучу обучающего материала и где собираю комьюнити разработчиков, с которыми ты можешь поделиться своими достижениями, успехами, либо попросить о помощи. Так что будем на связи и увидимся совсем скоро. Пока. [музыка]