Transcription
Привет, ребята. Итак, изучение разработки программного обеспечения в 2025, 2026 годах и далее сильно отличается от того, что было даже три или четыре года назад. А я начал примерно в 2007 году, что кажется целой жизнью. И я узнал большую часть того, что я знаю, прямо здесь, на YouTube, с таких каналов, как New Boston, курсы вроде Killer PHP. Я изучал jQuery и JavaScript от Джеффри Уэя на Touch Plus. Я так восхищался этими людьми, что хотел стать одним из них. И хотя я до сих пор не думаю, что я такой же хороший учитель, как некоторые из них, я горжусь тем, чего добился, и тем, что смог помочь стольким людям, но вот в чем дело. Способ, которым я учился, немного устарел. И дело в том, что есть просто так много всего еще, что нужно изучить. Вы знаете, интернет в целом, инструменты, которые мы используем, то, как мы думаем об обучении, наша продолжительность концентрации внимания, так много всего изменилось. Так что, если бы я начинал с нуля сегодня, мой подход был бы совсем другим. И он действительно отличается. И я собираюсь поделиться с вами своим точным рабочим процессом обучения и тем, что я советую людям делать при изучении чего-то нового. Теперь это не относится только к веб-разработке. У меня выйдет руководство по веб-технологиям в январе или феврале. Но это больше для любого, будь то мобильные приложения, системный разработчик, машинное обучение, что угодно. Я немного расскажу об общих категориях того, что вы будете изучать, но моя главная цель — рассказать о том, как изучать эти вещи. Итак, приступим.
Итак, когда дело доходит до разработки программного обеспечения, одним из самых важных вещей, которые мы делаем, являются проверки кода. Но это также очень утомительная задача и склонная к ошибкам, поскольку вы никогда не знаете, насколько хорошо кто-то проверяет ваш код. Так что сегодняшний спонсор, Code Rabbit, делает проверки кода намного проще. Это инструмент для проверки кода на базе искусственного интеллекта, который интегрируется в ваш рабочий процесс разработки, автоматически проверяя ваши pull-запросы, или вы можете даже просто использовать CLI перед фиксацией вашего кода. Так что Code Rabbit не заменяет необходимость в проверках кода. Он просто делает их более эффективными и улавливает вещи, которые люди часто упускают. Так что вместо того, чтобы беспокоить товарищей по команде вещами, которые еще не требуют их внимания, вы можете проверить свой код за минуты и поймать ошибки, прежде чем просить коллегу о финальной проверке. Давайте быстро взглянем на этот PR, где Code Rabbit обнаружил некоторые ошибки. Он обнаруживает, что мы инициировали наш экземпляр клиента для нашего бэкенда Apprite в двух отдельных компонентах, тогда как вместо этого нам следовало создать один, а затем использовать импорт по всему приложению. Так что он немедленно обнаружил эту ошибку и предоставил нам предложения по изменениям, которые мы должны внести.
Одной из самых крутых функций является возможность устанавливать пользовательские правила для вас и вашей команды. Например, у нас есть набор правил, описывающий, как должны быть установлены заголовки в статьях. И когда делается PR, Code Rabbit это обнаружит. Хотя это технически не ошибка, это то, что товарищ по команде мог легко упустить. Так что Code Rabbit также будет учиться на всей вашей кодовой базе и поможет обеспечить соблюдение шаблонов и правил, которые вы и ваша команда установили. Так что это на самом деле довольно здорово. Так что, если вы хотите попробовать Code Rabbit, обязательно перейдите по ссылке в описании ниже.
Хорошо, ребята. Итак, у меня есть этот документ Excaladraw, и я предоставлю его для скачивания в описании, если вы заинтересованы, если вам нужен он как ресурс. И, как я сказал во вступлении, это в основном о том, как учиться, а не столько о том, что учиться, но я добавил очень высокоуровневую область вверху, где мы можем поговорить в целом о том, что вы будете изучать как разработчик программного обеспечения. И это не обязательно должно быть веб-разработка. Это может быть что угодно. Так что, в целом, вы начнете с языка программирования. Если вы изучаете веб-разработку, вы, вероятно, начнете с HTML, CSS, на самом деле не языков программирования, но это, знаете ли, язык разметки и язык стилей. А затем JavaScript и все такое. Или вы можете изучать Python, Go, Rust, PHP, Java, что угодно. Это будет язык. И тогда эти вещи здесь вы будете изучать практически одновременно. Так что какой-то программный фреймворк. В веб-разработке у вас есть фронтенд и бэкенд фреймворки. А затем, знаете ли, у вас есть Django для Python, Laravel, PHP, вы можете изучать .NET, возможно, C#. Так что да, фреймворк, вы одновременно будете изучать базу данных и ORM, то есть способ подключения и взаимодействия с вашей базой данных. Вы можете изучать Postgres или MongoDB, а затем систему контроля версий с Git и GitHub. А затем, как правило, вы будете изучать дизайн и архитектуру. Так что определенные шаблоны, такие как MVC, REST, компонентно-ориентированная разработка, а затем какая-то система развертывания, DevOps. Так что, например, AWS, Vercel, возможно, вы изучите Docker и контейнеры. Так что, в целом, все, что вы изучаете, будет подпадать под эту зонтичную категорию. И это может выглядеть как простой список, но за всем этим стоит многое.
Хорошо. Итак, как только вы определитесь с тем, что изучать, это действительно то, о чем я хочу поговорить — как изучать эти вещи. Так что, прежде чем я перейду к фактическим методам и рабочему процессу, я просто хочу немного поговорить о разнице между тем, когда я учился примерно в 2007-2008 годах, и сейчас, потому что это очень отличается. Так что тогда моя цель при изучении чего-либо заключалась в том, чтобы, по сути, открыть текстовый редактор и просто творить, верно? И это было возможно. Вы могли запомнить не весь, но большую часть синтаксиса, важный синтаксис наизусть, чтобы вы могли просто открыть редактор и кодить, даже не глядя в документацию. И это было возможно, потому что тогда не так много нужно было изучать. У вас были, по крайней мере, для веб-разработки, у вас были HTML, CSS, JavaScript, jQuery, WordPress, PHP. Это были своего рода главные вещи. Возможно, Ruby on Rails. Это были главные технологии тогда. Верно? Так что, и у вас не было действительно, фронтенд был очень простым. Это были, по сути, просто HTML, CSS и немного JavaScript. Верно? Теперь у вас есть все эти фреймворки и различные инструменты, и SSR, и одностраничные приложения. Так что было нормально запоминать такие вещи, как jQuery, или, по крайней мере, все основные методы, верно? Вы могли кодить без документации. Вы могли использовать их время от времени или Stack Overflow, но вам не нужно было их иметь, верно? Потому что у вас был маленький стек. Теперь все намного иначе. Есть так много всего еще, что нужно изучить. Так что я говорю: поймите основы и лежащие в их основе концепции. Это то, на чем вы хотите сосредоточиться больше всего. А затем синтаксис последует, верно? После стольких повторений этот синтаксис начнет встраиваться в ваш мозг. И синтаксис так сильно меняется, особенно с фреймворками и библиотеками, что я не думаю, что это больше так важно, знаете ли, и вы можете просто найти что угодно с помощью ИИ, так что это больше о понимании этих основ. Так, например, React Hooks, если вы изучаете, вы хотите понять это или освоить концепции SSR. Это просто примеры, но что бы это ни было, что вы изучаете. А затем вы хотите использовать ИИ и документацию, и использование их вместе очень мощно. Вы можете поместить документацию в контекст ИИ. И я расскажу гораздо больше о том, как использовать ИИ, через минуту. И у вас просто огромная экосистема. Так что, если вы думаете о React, у вас есть React, React Router, Tanstack, Next.js, Astro, Gatsby, React Native. Там просто так много всего, верно? Так что я бы сказал, что ваша цель сейчас должна заключаться в том, чтобы знать, что строить, как находить ответы и где находить эти ответы, а не просто запоминать весь синтаксис наизусть. Так что это просто своего рода мой взгляд на прошлое и настоящее.
Итак, это фактический рабочий процесс, который я использую, когда что-то изучаю. Я использую смесь основного метода обучения, своего рода традиционного обучения, я полагаю, затем использую ИИ в качестве дополнения. Так что, по сути, вы выберете метод обучения, такой как видеокурс, книга, если вы, знаете ли, если вы предпочитаете книги, видеоуроки на YouTube, что угодно. Это может быть даже, если вы собираетесь в колледж или на буткемп, это может быть ваше основное обучение, верно? Пока у него есть какой-то линейный путь. Он должен быть управляемым. Он должен быть основан на учебной программе. Концепции подкрепляются. У вас есть контекст инструктора, будь то реальный инструктор или кто-то вроде меня через видеокурсы. Кто-то, кто объясняет, почему что-то работает, а не только что работает. И кто-то, с кем вы как бы находите общий язык, кого вы можете легко понять. Это не обязательно должен быть я. Это может быть кто угодно, верно? И тогда одним из, как я считаю, действительно важных аспектов этих традиционных методов являются реальные проекты, верно? У вас есть реальное приложение, а не просто теория. Так что образ мышления для этого — сделать его вашим главным учителем, верно? Так что это обучение, все эти методы — ваш главный учитель. Затем у вас есть ИИ как дополнительный метод обучения, где вы можете получить гораздо более конкретную информацию о теме в целом или конкретных примерах. Вы можете попросить его заполнить пробелы из курсов, которые вы можете пройти, потому что часто курсы не охватывают все аспекты этой технологии. Он поможет вам отладить ваши ошибки. И знаете, раньше, даже не просто, я имею в виду пару лет назад, если у нас были ошибки, которые мы не понимали, нам приходилось находить что-то похожее на Stack Overflow и как бы основываться на этих очень ограниченных примерах. Но теперь мы можем вставить это точное сообщение об ошибке. Но дело в том, что вы не хотите, чтобы ИИ просто давал вам ответ, а вы его просто реализовывали и не понимали, что произошло. Вы хотите, чтобы он объяснил вам все. И также многие курсы очень быстро устаревают, верно? И я знаю это так же хорошо, как и все остальные. Я создал свой курс по React, и через месяц React Router полностью изменился, и мне пришлось его обновить. Так что то, что может сделать ИИ, даже если у него есть дата окончания, которая может быть, знаете ли, месяцы и месяцы назад, он может поместить недавнюю документацию в свой контекст. Так что вы можете взять документацию React или документацию Tailwind и поместить ее в контекст вашего ИИ, чтобы у вас была самая актуальная информация. Так что образ мышления с этим, знаете ли, дополнительным ИИ — это иметь его как вашего помощника в обучении. Так что у вас есть главный учитель, у вас есть помощник в обучении.
Хорошо. Теперь, что касается ресурсов, конечно, для видеокурсов у вас есть Udemy, Pluralsight, своего рода эти большие, знаете ли, большие веб-сайты, а затем у вас есть платформы для создателей, такие как моя, Traversy Media, Laracasts. Есть также интерактивные платформы, такие как freeCodeCamp, boot.dev. И я не буду говорить слишком много, но мы на самом деле находимся в процессе создания нашей собственной интерактивной платформы, которая, надеюсь, будет готова к началу следующего года. Я расскажу об этом подробнее через несколько месяцев. Посмотрим. Если вы используете книги, не используйте аудиокниги для программирования. Я имею в виду, вы не можете по-настоящему научиться программировать с помощью аудиокниг. А затем для ИИ у вас есть браузерные ИИ, такие как ChatGPT или Claude AI, или Grok. И это нормально, потому что вы учитесь, верно? Вам не нужен агент, чтобы создавать файлы для вас и писать ваш код. Но это все равно может быть полезнее, на мой взгляд. Так что IDE, такие как Cursor, или CLI, такие как Claude Code или Gemini CLI. Теперь может возникнуть соблазн, чтобы они просто делали всю вашу работу за вас, но вы должны быть дисциплинированными и не позволять им этого делать. Так что, переведите его в режим плана. Cursor, например, имеет режим запроса, где он не будет изменять ваши файлы. Он просто поместит его в, знаете ли, интерфейс чата. И вы хотите, чтобы он не просто давал вам код, но и объяснял, что происходит, верно? Так что вы можете разместить пример из своего курса, и попросить его, знаете ли, рассказать вам определенные вещи о нем, как он работает, возможно, инструктор не очень хорошо его осветил или что-то еще.
Теперь я не предлагаю просто открывать ИИ и задавать случайные вопросы. Я имею в виду, вы можете это сделать, но вы не получите такого хорошего опыта. Так что я бы предложил ввести такой запрос. Например, он говорит: "Я прохожу курс". Вы указываете название курса, имя инструктора, говорите, чему он учит. Я хочу, чтобы вы действовали как мой личный помощник по программированию и репетитор на протяжении всего курса. Не делайте работу за меня. Это очень важно упомянуть. И не просто давайте мне ответ. Ваша задача — помочь мне понять каждую концепцию. Объясняйте примеры кода, говорите по-английски, но, конечно, на любом вашем языке. Предлагайте небольшие практические задания, отслеживайте, что я узнал, помогите мне применять то, что я узнал, в небольших проектах. И я расскажу больше о проектах через секунду. А затем он говорит: "По мере продвижения я буду вставлять код или концепции из курса. Я хочу, чтобы вы помогли мне отладить, улучшить или модернизировать их с помощью последних лучших практик, а затем начните с создания простого учебного плана и скажите мне, какие инструменты настроить, что мне следует, знаете ли, иметь перед началом". Так что я думаю, что это очень хороший запрос для начала, и просто пусть он работает с вами на протяжении всего курса. Пусть он создает документы, шпаргалки, подобные вещи. Так что да, я имею в виду, вот как я бы предложил использовать ИИ.
Теперь проекты очень важны, и я говорю не только о курсовых проектах. Сами курсы, они очень сильно направляют, верно? Они проводят вас через это, и вы, по сути, это своего рода просмотр и кодирование, просмотр и копирование. Но это хорошо, потому что это структурированное обучение, верно? Оно учит вас основным концепциям и синтаксису, но это не реальная разработка. В реальной разработке у вас нет такого руководства, верно? Так что вам придется отлаживать и рефакторить и тому подобное. Так что вы хотите после вашего курса или это может быть просто после раздела в курсе, построить проект на основе того, что вы узнали, потому что это заставит вас столкнуться с реальными проблемами, которые вам придется решать. Потому что опять же, в реальном мире, когда вы получите работу разработчика или начнете создавать свои собственные проекты, какой бы ни был ваш план, у вас нет такого руководства. У вас есть ИИ, чтобы помочь вам, и вы можете, и я предлагаю использовать ИИ, чтобы помочь, а не давать вам ответ, но чтобы помочь, и это дает вам гораздо более глубокое понимание и, самое главное, помогает вам в решении проблем. Это самое важное в разработке программного обеспечения — способность решать проблемы, и просто делать это без этого не поможет вам с этим. Это научит вас этим основным концепциям и синтаксису, что является фундаментальным, что вам нужно, но это не поможет вам с реальной разработкой, по крайней мере, не со всем этим. Так что это дает вам независимость. Так что проекты действительно важны.
Затем у меня есть несколько общих советов. Так что вы хотите идти в своем темпе. Установите определенное количество времени каждый день. Не выгорайте. Это очень важно. Выгорание может привести к полному отсутствию интереса к программированию. Оно также может привести к депрессии, тревоге. У меня был очень плохой период выгорания. Я говорил об этом в видео. Конкретные измеримые цели, верно? Так что не просто говорите: "О, я хочу изучить React на этой неделе. Я хочу изучить React Hooks или я хочу изучить обработчики событий JavaScript". Что бы это ни было. Учитесь, делая. Это своего рода возвращение к тому, что я только что сказал. Не только делайте курсовые проекты. Создавайте свои собственные вещи. Реальный опыт. Вы хотите праздновать маленькие победы. Это нелегко. Так что, если вы узнали, как создать репозиторий GitHub и коммитить и все такое, это достижение, и вы должны праздновать это. Признавайте свои заслуги. Расскажите кому-нибудь еще, что вы узнали. Я думаю, что это ценно и недостаточно обсуждается. Вам не обязательно быть учителем или создателем контента, но просто сказать это вслух и показать пример кому-то, это помогает вам так же, как и им. Это повторяет то, что вы узнали. Кроме того, вы помогаете кому-то другому, что всегда хорошо. И тогда я бы сказал: стройте и учитесь публично. Так что создайте аккаунт в Twitter или X, Instagram. Публикуйте то, что вы узнали. Вы можете обсуждать с другими. Это всегда помогает вам лучше понять вещи, когда вы говорите об этом с людьми через, вы можете даже присоединиться к Discord. И просто ведение этих чатов о том, над чем вы работаете, может действительно помочь вам учиться и просто привыкнуть к разговорам с другими разработчиками, потому что если вы планируете работать в индустрии, вы будете делать это много.
Итак, опять же, знаете ли, это просто своего рода общий обзор того, как я предлагаю изучать любое kind of разработку программного обеспечения в 2025, 26 годах и далее. Так что надеюсь, вы что-то узнали. И надеюсь, вы что-то из этого примените. Опять же, этот документ будет в описании для скачивания. И это все.