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

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

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

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

В этой статье вы найдёте несколько историй и много полезных советов, которые смогут вас вдохновить, мотивировать и помочь сделать первый шаг в мире программирования.

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

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

Мышление

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

Когда я только начинал, я по-настоящему влюбился в программирование. Мой совет #1 — если вам что-то нравится, вы считаете это интересным и полезным, изучите это. Почему я так говорю? Я большой поклонник фразы «Делай то, что тебе нравится». Звучит, как клише, но это всегда работает, по крайней мере для меня. И если вы начинаете изучать программирование, вам понадобится эта внутренняя мотивация. Страсть и интерес помогают вам быть последовательными и дисциплинированными в своем обучении.

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

Комикс в тему

Совет #2: продолжайте учиться. Одна из моих задач как инженера-программиста — всегда следить за новинками, которые появляются в нашем мире разработки: новые библиотеки, веб-приложения, технические тенденции (типа машинного обучения, ИИ, криптовалют) и многое другое.

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

Говоря о подавлении себя, появляется совет #3: старайтесь не подавлять себя. Вам не нужно начинать с жёстких концепций или с самой тяжелой книги по алгоритмам.

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

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

Начинайте с небольших изменений, но делайте их регулярно.

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

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

Практика — это ключ. Учите теорию и отрабатывайте её на практике. Это совет #5. Создание теоретического фундамента важно, но стоит уделять внимание и практике. Пытайтесь. Экспериментируйте.

Теория

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

Я начал учиться с двух больших онлайн-курсов: Codecademy & CS50 от Гарварда.

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

Будьте языковыми агностиками. Язык — это просто инструмент. Знать язык досконально — хорошо, но также полезно изучать новые вещи. Лучшие разработчики, как правило, не идентифицируют себя как ****-разработчик.

 

Gayle Laakmann McDowell

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

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

Когда я искал что-то для начала, я хотел понять теорию и поработать с ней на практике. CS50 казался лучшим ресурсом для создания прочного фундамента. Дэвид Дж. Малан определенно один из лучших профессоров, которого я видел. А Codecademy отлично помог мне с практикой. Я отрабатывал на практике всё, что я изучал. Код, код и ещё раз код. Помните совет #5? Учите теорию и отрабатывайте её на практике.

Другие ресурсы с отличным контентом

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

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

Здесь вы начнёте заваливать себя множеством ресурсов, которые только сможете найти в интернете. Но постарайтесь не подавить себя. Вам не нужно пройти все курсы на свете. Сосредоточтесь на одном, учитесь, практикуйтесь, закрепляйте знания. Помните: это увлекательное путешествие.

Обучение, практика, кодинг, разработка

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

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

 

Gayle Laakmann McDowell

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

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

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

Hacker Rank

Ещё одна вещь, которой я очень увлечён, — это соревнования по программированию. Пока я 2 года был в колледже, я участвовал в таких соревнованиях, как ACM ICPC. В чём суть: у вас есть несколько задач, и вам нужно реализовать алгоритмы для решения каждой из них. Это придаёт большую уверенность в своих навыках программирования и помогате почувствовать, что после тяжёлой подготовки и участия в соревнованиях становишься более сильным разработчиком. (Вот мой репозиторий на GitHub с такими задачами).

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

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

Здесь вы можете взглянуть на полный ответ на этот вопрос.

Ещё я перечислю некоторые прекрасные сайты, которые помогут вам начать обучение с самого начала:

  • Codeforces: это действительно хороший сайт для обучения. На сайте есть множество отличных задач. Причём автор задачи пишет, как вы должны подходить к решению задачи, какой алгоритм или структуру данных использовать.
  • Topcoder: этот сайт очень похож на Codeforces с точки зрения качества задач. Он также хорошо известен своими туториалами. Каждый туториал рассказывает о некоторой технике, алгоритме или структуре данных.
  • Hacker Rank: как я сказал выше, на Hacker Rank есть много разных тем, таких как алгоритмы, структуры данных, математика, языки программирования и т.д. У Hacker Rank очень хороший UI и UX, он красив и очень прост в использовании.
  • Hacker Earth и Codechef – также хорошие сайты.

Теперь вы можете выбрать сайт себе по душе и начать практиковаться :)

Мои первые проекты

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

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

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

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

История Дугласа

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

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

 

Дуглас

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

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

 

Дуглас

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

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

Я разработал первую версию приложения и опубликовал ее в Play Store. Затем я дальше изучал Java/Kotlin/Android и смог реализовать больше функций в этом приложении.

 

Дуглас

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

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

Делайте сторонние проекты

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

 

Feross Aboukhadijeh

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

  • Делайте сторонние проекты.
  • Покупайте и читайте книги по программированию.
  • Делайте сторонние проекты.
  • Ходите на занятия по компьютерным наукам.
  • Делайте сторонние проекты.
  • Читайте блоги о программировании.
  • Делайте сторонние проекты.

Полную историю вы можете прочитать здесь!

Идеи для разработки

Самое время начать что-нибудь разрабатывать. Вот небольшой список сторонних проектов, которые вы можете сделать:

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

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

Я знаю, что очень сложно продолжать учиться изо дня в день

Я нашёл один интересный проект, который нужно делать ежедневно. Он называется 100 дней кода. Вот он. Просто каждый день вам нужно заносить данные о своём прогрессе и мыслях о проекте, который вы делаете, в журнал.

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

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

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

Сохраняйте мотивацию, продолжайте разрабатывать, продолжайте кодить! :)

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

Cайты

  • freeCodeCamp — отличный сайт, ориентированный на веб-разработку и JavaScript. Полностью бесплатный.
  • Udemy, CodeSchool и Khan Academy очень похожи по разновидностям курсов, но на Udemy больше платных курсов, на Khan Academy — бесплатных, а на CodeSchool есть и те, и другие.
  • Конечно, нельзя забыть о таких сайтах, как Udacity, Coursera и edX. Там тоже отличные курсы. Попробуйте!

Подписывайтесь на конкретных людей в Twitter

Если вас интересует машинное обучение, то Andrew Ng — это тот, кто вам нужен. Для освещения каких-то конкретных технологий я люблю читать твиты от David Hansson (создатель Ruby on Rails), Dan Abramov (соавтор Redux), Tracy Chou (создатель Quora, Pinterest), Quincy Larson (создатель freeCodeCamp), Preethi Kasireddy (блокчейн), Dan Bader (Python), и это далеко не весь список.

Люди, которые ведут личные блоги на Medium

Влоги и каналы YouTube

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

  • Fun Fun Function — это канал, который ведёт Mattias Petter Johansson, бывший инженер Spotify. Он начинал с JavaScript, но в последнее время он рассказывает о развитии в целом. Мне очень нравится, как он формулирует свои идеи и раскрывает каждую тему.
  • Mayuko — iOS-программист, работающая в Patreon. Она также рассказывает об инженерии и образе жизни в целом.
  • CS Dojo фокусируется на советах для собеседований, алгоритмах и структурах данных. Этот канал ведёт YK Sugishita, бывший инженер Google из Канады.
  • Joma Tech — самый смешной и интересный YouTube-канал среди всех, что я знаю. Jonathan Ma — научный сотрудник в Facebook. Он рассказывает о своей инженерной жизни, а также даёт советы по программированию, основываясь на своём опыте работы в группе технологических компаний.

Заключение

Я надеюсь, что эта статья поможет вам начать работу.

Другие мои статьи о моём обучении программированию вы можете найти в моём блоге Renaissance Developer.

Удачи! Не останавливайтесь в обучении и программировании.

Перевод статьи «Actionable advice & Stories to start learning to code»

ПОХОЖИЕ ПУБЛИКАЦИИ

660
06/12/2018

0 комментариев к статье "Полезные советы и истории, которые помогут начать изучать программирование"

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