Учиться кататься на велосипеде ужасно в первые несколько часов. Как бы вы ни старались, вы не можете сбалансировать свой вес. Вы падаете, получаете синяки, может быть, даже кричите от боли. Но ты встаешь и пытаешься снова. Потому что вам нравится свежий летний ветерок, проносящийся мимо ваших ушей на долю секунды, когда вы добиваетесь успеха.

Обучение программированию не сильно отличается. За исключением того, что вы продолжаете падать (и ваш код продолжает падать) в течение, может быть, недель или даже месяцев, прежде чем вы научитесь что-то делать. Авария — это не езда на велосипеде. Борьба за что-то не означает, что вы не можете испытать возбуждение, которое это обещает. Вещи улучшаются по мере того, как вы совершенствуетесь. Разочарование, гнев и боль означают только то, что вы растете. Рост должен быть неудобным.

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

Оглядываясь назад на свой опыт, от ничего не зная о программировании до посещения курсов ИИ в Стэнфорде, я хотел бы поделиться некоторыми советами с новыми программистами ниже —

Концепции важнее языка

В мире технологий постоянно появляются новые фреймворки и библиотеки. Отдача от изучения каждого нового популярного языка невелика. Вы должны сосредоточиться на твердых основах. Сосредоточьтесь на широких концепциях и овладении структурами данных, алгоритмами и объектно-ориентированным программированием. Как только у вас появится хорошая интуиция в основах, вы сможете быстро освоить новые языки. Например, цикл for в каждом языке записывается по-разному, но концепция перебора вектора конечной длины остается неизменной. Точно так же, вместо того, чтобы пытаться одновременно изучать React, Vue, Gatsby, Next.JS, вы должны начать с глубокого понимания JavaScript, а затем выбрать дополнительные фреймворки.

Установите границы

Это важно, когда вы только начинаете. В STEM нам говорят долго думать о проблеме, прежде чем просить о помощи. Но когда вы начинаете изучать синтаксис нового языка, вы не должны терять более 15 минут, прежде чем обратиться за помощью. Новички часто не знают чего они не знают. И, следовательно, им нужен совет извне, чтобы выйти из тупика.

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

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

Воспринимайте школу как временное вложение. Вы хотите максимизировать знания и навыки за фиксированный промежуток времени.

Количество проблем важнее качества

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

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

Получите помощь раньше

Если вы находитесь в школе, выберите путь с наименьшим трением, чтобы помочь. Если в вашем классе есть Пьяцца или Эд, задавайте вопросы. Убедитесь, что Google проблема в первую очередь. В 2022 году вам никогда не следует задавать вопрос тому, кого вы можете сначала погуглить. Лучшее объяснение, вероятно, там. Перейти к рабочему времени. Напишите профессору, Т.А. Сформируйте учебные группы и отправьте им сообщение.

Посещайте уроки, основанные на проектах

Если ваша школа предлагает занятия по веб-разработке, React Native (для кроссплатформенной мобильной разработки), разработке для Android или iOS, я бы рекомендовал начать их как можно раньше. Это повысит вашу мотивацию к изучению CS, когда вы увидите прямое применение своего кода. Во-вторых, это даст вам портфолио, которое поможет вам пройти стажировку или помочь людям. Наконец, это прекрасный способ оставаться на связи с основами структур данных, алгоритмов и объектно-ориентированного программирования.

Удачного кодирования! Напомните себе, что вы экспоненциальная функция, и медленное начало не означает медленное окончание. Вы больше, чем ваши оценки.

(Свяжитесь со мной по адресу [email protected])