Полезный совет, как начать учиться кодировать

poleznyj sovet kak nachat uchitsya kodirovat

Когда я начал делиться своим путешествием об освоении программирования и хакинге своего образования, люди очень заинтересовались и спрашивали меня о том, как начать учиться кодировать.

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

У меня было время подумать о своем пути, и я спросил опытных разработчиков о программировании, как они начинали, о карьере и всех тех интересных вещах, которые все хотят знать.

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

Надеюсь, это поможет!

Мышление

Когда я начинал, я влюбился в программирование. Мой совет номер один: изучайте его, потому что вам это нравится, вы считаете это интересным или, возможно, считаете это полезным (и это действительно так!).

Почему я это говорю? Я большой поклонник «делай то, что тебе нравится». Это походит на клише, но мне это всегда удавалось. И если вы начинаете заниматься программированием, вам понадобится эта внутренняя мотивация. Страсть и интерес помогают вам быть последовательными и дисциплинированными в учебе.

Помните: это не спринт. Это длинный марафон. Не ждите, что вы научитесь всего за одну ночь. Да не бывает.

ZhKH5GoNGu9rx2rJZ5KxlhxbVcMoBIYO2p48
Научитесь C++ за 21 день (источник)

Совет номер два: продолжайте учиться

Как инженер-программист, одной из моих задач является всегда отслеживать новые вещи, которые появляются в нашем мире: новые библиотеки, такие как ReactJS в 2013 году, веб-приложения, такие как SPA, PWA, технологические тенденции, как- вот машинное обучение, искусственный интеллект, криптовалюта (блокчейн, блокчейн, блокчейн!), и так далее.

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

Говоря о преобладающаявот совет номер три: старайтесь не переутомлять себя. Вам не нужно начинать сначала с трудных концепций или с тяжелейшей книги алгоритмов.

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

Так же и с программированием, вам не нужно кодировать и учиться все свое свободное время, полностью изменяя свой график.

Соблюдайте небольшие изменения, но делайте их регулярно. Один код за раз.

Не сравнивайте себя с «опытными инженерами» или «гений кодера» – совет номер четыре. Во-первых, это совсем не справедливо. Во-вторых, вы только начинаете. Сосредоточьтесь на учебе.

Легко сравнивать себя с товарищами по команде или гением программирования, но это лишь усиливает внутри вас синдром самозванца. Не позволяйте этому остановить ваше путешествие к программированию.

Практика – это ключ. Найдите способы изучить концепции и практикуйте это. Это подсказка пять. Построение фундамента с помощью концепций и теорий важно, но будьте практичными. Попробуй. Экспериментируйте. Мы погрузимся в это позже, но практика является ключевой!

Теория и концепции

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

Когда я начинал, я учился на 2 замечательных онлайн-курсах: Codecademy и CS50 в Гарварде.

Там я научился основам Python на Codecademy и C в CS50. Но мое мнение таково: нужно просто начать. Выберите один язык программирования и начните понимать основные понятия (переменные, if-else, циклы, структуры данных).

Будьте языковым агностиком. Язык – только инструмент. Ценно глубоко знать язык, но также важно изучать новые вещи. Лучшие разработчики, как правило, не идентифицируют себя как разработчика. – Гейл Лаакманн Макдауэлл

Вероятно, когда вы выбираете курс, вас научат конкретным языком программирования. Но не переживай! Сосредоточьтесь на основных понятиях (и, возможно, влюбитесь в язык программирования, как я влюбился в Python и Ruby).

Почему я выбрал эти курсы?

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

Дэвид Дж. Малан, безусловно, один из лучших профессоров, которых я имел. И Codecademy очень помог в том, чтобы быть практичным. Научитесь кодировать все, что я изучал. код код код. Помните пятый совет? Найдите способы изучить концепции и практикуйте это.

Другие ресурсы с отличным содержанием:

Введение в информатику от Udacity. Он охватывает практически все, что вам нужно, чтобы начать понимать программирование. На курсах Udacity всегда есть время для практики после каждой теории и концепции, которую вы изучаете.

Введение в алгоритмы MIT научит вас алгоритмическому мышлению. Понимание алгоритмов и того, как они работают, является важнейшей вещью, которой вы должны научиться, начиная путешествие программирования. Другими замечательными ресурсами являются книги по алгоритмам, такие как «Введение в алгоритм» CLRS и «Алгоритмы» Роберта Седвика.

Здесь вы начнете переполнять себя множеством ресурсов, которые у нас есть в Интернете. но старайтесь не переутомлять себя. Вам не нужно проходить каждый отдельный курс, сосредоточьтесь на одном, учитесь, практикуйтесь, укрепляйте уверенность. Помните, это путешествие. Одна строка кода за раз 🙂

Обучение, практика, кодирование, строительство

Практика Практика Практика. Я не могу сказать, насколько важна практичность, когда вы начинаете учиться кодировать.

Код. Много… Лучший способ стать отличным программистом – это просто много практиковаться. – Гейл Лаакманн Макдауэлл

Практика не только сделает вас лучшим программистом, но и благодаря этому вы обретете большую уверенность. Синдром самозванца – реальная вещь!

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

Как и я, вы можете начать с Codecademy. Он имеет действительно хорошее содержание и отличный опыт кодирования всего, что вы изучаете.

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

284rQMTMoRmMzdA7GTJqqzQhp2uSsgKfz-J-
Весь рейтинг хакеров

Еще одна вещь, которая меня действительно увлекает, это конкурентное программирование. Я делал это в течение двух лет в колледже для таких соревнований, как ACM ICPC.

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

Я активно пользуюсь Quora, и однажды я прочитал замечательный ответ Вени Иоганны о том, «действительно ли соревновательное программирование помогает улучшить ваши знания и навыки как разработчика?»

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

  1. Вы выработали привычку преобразовывать/моделировать конкретную проблему в абстрактную.
  2. Вы привыкли регистрировать шаблоны и сопоставлять шаблоны со своим банком шаблонов.
  3. Вы умеете сосредотачиваться и работать под давлением.
  4. Вы понимаете и уверены в своих собственных способностях и недостатках как программиста.
  5. Вы научились управлять временем, особенно с точки зрения ваших привычек мышления и программирования.
  6. Вы привыкли к четко определенным проблемам.
  7. Вы привыкли иметь в виду одну цель.
  8. Вы можете застрять в режиме решения проблем.

Мне понравились ее комментарии, я соглашаюсь на 100% с каждым. Посмотрите полный ответ. Ты должен. Это восхитительно!

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

  • Codeforces: это действительно хороший веб-сайт для обучения и обучения. Он содержит множество отличных наборов задач. Редакционная статья является плюсом (*Редакционная статья: автор задачи пишет, как вы должны подойти и решить проблему — какой алгоритм или структуру данных использовать).
  • Topcoder: этот сайт очень похож на Codeforces с точки зрения качества проблем и редакционного оформления. Он также хорошо известен своими учебниками. Каждый учебник обучает определенной технике, алгоритму или структуре данных.
  • Hacker Rank: как я уже сказал выше, Hacker Rank содержит много разных доменов, таких как алгоритмы, структуры данных, математика, языки программирования и т.д. Интерфейс веб-сайта и UX является преимуществом для Hacker Rank, он красив и очень прост в использовании. Я много использовал домен Python, чтобы построить хорошее основание на своих навыках Python.
  • Hacker Earth и Code Chef являются другими хорошими веб-сайтами.

Теперь вы можете выбрать сайт и начать практику 🙂

Проекты зданий

После изучения основ, кодирования и практики я почувствовал, что застрял. Я начинаю искать, как перейти на следующий уровень. Строительные проекты были для меня ответом. Я научился основам Интернета: HTML, CSS, Javascript и веб-фреймворку. Тогда я изучил Ruby on Rails (Ruby Web Framework) и Django (Python Web Framework).

Моим первым проектом был свой сайт. Тогда я создал сайт для маминого ресторана. Затем две игры: крестики-нолики и змейка. Все статичные сайты.

Я почувствовал, что готов создать полноценный веб-сайт. Я создал книжный онлайн-магазин с информационной панелью администратора (администратор мог добавлять новые продукты, редактировать их, удалять их… все, что касается CRUD), и публичной частью — клиент мог зарегистрироваться/войти, искать книги и покупать их. Я был очень счастлив, что смог завершить этот проект. В то время мне было действительно сложно, и я многому научился.

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

Разработайте новые проекты для создания основы кодирования. Создавайте проекты из Ruby и Python One Month Bootcamp.

У моего хорошего друга Дугласа есть отличная история о том, как он начал кодировать и разрабатывать программы. Основные понятия он изучал в колледже, но создание мобильных приложений было тем, что ему всегда интересно. Он пытался создавать много приложений для Android, но вскоре бросил.

«Я просто не знал, с чего начать, потому что мне было многому научиться, и я не чувствовал себя готовым создавать приложение. Надо было научиться столько разных вещей и способов сделать одно и то же, что я застрял, пытаясь выяснить, что было правильным или лучшим. Две важнейшие вещи на этом этапе: 1. Поставьте простую цель и попытайтесь изучить основы ее достижения. 2. Избегайте перфекционизма и просто делайте это». – Дуг

Слушая историю Дага, я почувствовал, что каждый, кто что-то начинает застревать на какой-то части процесса. И это очень нормально чувствовать разочарование или не понимать, с чего начать.

«Мне помог мой друг, который уже создал простое приложение. Я спросил его, знает ли он, какой лучший способ сделать конкретную вещь, и правда в том, что он не знал, но я чувствовал себя увереннее, зная, что мы строим так же». – Дуг

Если у вас есть коллеги или друзья, которые имеют больше опыта, попросите о помощи, вероятно, они как-нибудь помогут. И это круто, как эти «наставники» вдохновляют и мотивируют вас начать и попробовать снова.

Еще один урок, который мы можем извлечь из истории Дуга: он поставил цель впервые создать простейшее приложение.

«Я построил первая версия программы и опубликовал его в Play Store. Затем я все больше узнавал о Java/Kotlin/Android и мог реализовать больше функций в этом приложении. Но это был трудоемкий процесс. Мне нужно было много упорства», — Даг

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

Сейчас Дуг работает Android-разработчиком. Он имеет 2 личных проекта (мобильные программы), опубликованные в Play Store, и возглавляет Android-приложение Worldpackers.

«Я научился программировать, работая над многими разными веб-проектами, начиная с довольно молодого возраста. Лучший способ освоить новые навыки – это практиковаться, практиковаться, практиковаться. Неважно, что вы строите, если вы выбираете что-то и начинаете». — Ферос Абухадиех

В ответе Феросса на Quora он рассказывает, как научился кодировать, создавая много побочных проектов. Его история так вдохновляет. Вы замечаете, как он продолжает прогрессировать по проекту. Его советы по обучению программированию:

  • Делайте сайд-проекты.
  • Купите и читайте книги по программированию.
  • Делайте сайд-проекты.
  • Посещайте уроки информатики.
  • Делайте сайд-проекты.
  • Читайте блоги о программировании.
  • Делайте сайд-проекты.

Прочтите его полную историю здесь!

Вот список дополнительных проектов, которые вы можете сделать.

Пора помочь вам начать создавать вещи!

  • Если вы любитель игр, возможно вы можете начать с Tic-Tac-Toe, Sudoku или Flappy Bird.
  • Если вы любитель данных, вы можете сделать веб-сборки или работать с торговым биржевым API, чтобы создавать и анализировать биржевые диаграммы.
  • Если вы хотите лучше понять интерфейс, создайте свой сайт/портфолио.
  • Если вы хотите создать полноценный продукт, начните с онлайн-книжного магазина, списка продуктов или блога.

Этот список можно продолжать до бесконечности. Вот еще один список, который поможет вам выбрать проект. Но я согласен с Ферроссом, неважно, что ты строишь, если ты что-нибудь выберешь и начнешь. Так что начинайте строить! У вас будут проблемы, вы застрянете. Но ты МНОГО узнаешь!

Я знаю, что поддерживать ваш проект достаточно сложно.

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

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

Ища истории кода за 100 дней, я нашел «Как я кодировала каждый день в течение 365 дней» Эмили. Такова вдохновляющая история о дисциплине и желании научиться кодировать.

Это очень круто, как она пишет о своих проектах и ​​о том, как научилась в течение года. Проекты были от приложений для iOS с использованием языка программирования Swift к веб-разработке с использованием всего стека (HTML, CSS, JS, Flask – веб-фреймворк Python). Прочтите статью полностью.

Сохраняйте мотивацию, продолжайте строить, продолжайте кодировать! 🙂

Некоторые полезные ресурсы

Хорошие веб-сайты, статьи и видео:

Веб-сайты

  • freeCodeCamp — отличный веб-сайт, посвященный веб-разработке и JavaScript. Совершенно бесплатно (ДА!).
  • Udemy, CodeSchool и Khan Academy очень схожи с точки зрения разновидностей курсов, но Udemy имеет платные курсы, Khan Academy являются бесплатными, а CodeSchool является смесью обоих (платных и бесплатных курсов).
  • Не забывайте о MOOC: Udacity, Coursera и edX. На всех этих веб-сайтах есть отличные курсы. Попробуй! 🙂

Следите за людьми в Twitter

Люди, документирующие свое путешествие на Medium

Видеоблоги и каналы YouTube

Мне очень нравится смотреть видеоблоги и наблюдать за стилем жизни людей на YouTube.

  • Fun Fun Function – это канал, которым управляет Маттиас Петтер Йоханссон, бывший инженер Spotify. Началось с JavaScript, но в последнее время он говорит о разработке в целом. Мне очень нравится, как он излагает свои идеи и дает каждую тему.
  • Маюко – разработчик программного обеспечения iOS, работающий в Patreon. Она также рассказывает об инженерии и стиле жизни в целом.
  • CS Dojo действительно сосредоточена на советах по программированию собеседований, алгоритмам и структуре данных. Этот канал от YK Sugishita, бывшего инженера Google в Канаде.
  • Joma Tech – это самый смешной и интересный канал YouTube среди всех. Джонатан Ма – специалист по обработке данных в Facebook. Он ведет видеоблог о своей инженерной жизни, а также дает советы по программированию на собеседовании на основе опыта стажировки во многих технологических компаниях.

Это все!

Надеюсь, эта статья поможет вам начать.

Вы можете просмотреть документацию моего полного пути изучения и овладения программированием здесь, в моей публикации Renaissance Developer.

весело провести время! Продолжайте учиться и кодировать.

Посмотрите мой Twitter, Github. ☺

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

Ваш адрес email не будет опубликован.