Разумные советы для начинающих программистов

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

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

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

Мотивация

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

Почему я так говорю? Как вы уже могли понять, мой девиз: «делать то, что в кайф». Когда вы начнете изучать программирование, вам понадобится внутренняя мотивация. Поймите, это не спринт. Это длинный-длинный марафон. Не думайте, что вы всё выучите за одну ночь. Так не бывает.

Непрерывное обучение

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

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

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

Это как с желанием похудеть. Вы же не начинаете с марафона, чтобы добиться желаемого. Вместо этого можно начать с 15 минутной пробежки каждый день. Так же и с программированием, не надо учиться сутками напролет. Занимайтесь хотя бы по часу, но каждый день!

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

Практика - это ключ к успеху. Изучайте теорию и применяйте на практике. Это совет номер пять. Пытайтесь. Ошибайтесь и пытайтесь снова. Экспериментируйте! Мы поговорим об этом позже, но запомните, практика - самое главное!

Теории и Концепции

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

Я начинал с изучения 2 крутых курсов Codecademy и CS50 at Harvard

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

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

Крутые курсы

Introduction to Algorithms про алгоритмы. Понимание алгоритмов и как они работают - это самое важное, что вы должны узнать, начиная изучать программирование. Вот еще парочка хороших книг: Introduction to Algorithm by CLRS and Algorithms by Robert Sedwick.

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

Практика, практика, практика

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

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

По моему примеру вы можете начать с Codecademy.

Другой классный сайт Hacker Rank. Большой выбор языков программирования, интересные упражнения и тестирования.

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

Моя цель - дать вам эффективные советы, поэтому я перечислил некоторые отличные сайты, чтобы вы начали учиться прямо сегодня.

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

Создание проектов

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

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

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

В конце, хочется поделиться с вами советами моих друзей, которые помогли им добиться успехов в программировании:

Начинайте с простых целей и проектов и определите основные шаги для их достижения.

Забудьте про перфекционизм.

Покупайте и читайте книги по программированию.

Проходите курсы.

Читайте блоги, смотрите видео, посвященные программированию.

Практикуйтесь, много-много практикуйтесь.

Еще больше полезных рекомендаций :)

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

freeCodeCamp классный сайт, посвященный веб разработке и JavaScript. Совершенно бесплатно!

Udemy CodeSchool Khan Academy очень похожи между собой, но на Udemy есть платные курсы, на Khan Academy всё бесплатно, на CodeSchool есть как бесплатные, так и платные курсы.

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

Fun Fun Function канал Маттиаса Петтер Йоханссона. Раньше он рассказывал только о JavaScript, но в последнее время говорит о разработке в целом. Мне очень нравится, как он ведет свой канал.

Mayuko канал посвящен iOS разработке.

CS Dojo много информации об алгоритмах, структурах данных. Канал ведет инженер -программист из компании Google.

Joma Tech самый смешной и интересный канал из всех. Джонатан Ма-специалист по данным в Facebook. Он рассказывает о жизни программиста, дает дельные советы, основанные на его опыте.

Надеюсь, эта статья была полезной!

Перевод статьи Actionable advice to start learning to code от Digital Skynet ;)

0
13 комментариев
Написать комментарий...
Pavel Anpleenko

Согласен с автором!! Молодец!
Самое, что прям раздражает и останавливает — не решаемые ошибки в ide, прям рыдать хочется :(((((

Ответить
Развернуть ветку
Denis Kiselev

IDE? Она одна на рынке?)) Сейчас куча хороших дешевых или бесплатных инструментов почти подо всё. VS Code, Atom, Jetbrains прекрасную линейку делает! Было бы желание...

И у кого не решаемые ошибки? Issue tracker даже у эппла есть - и даже обновляется: вполне можно баги репортить и вполне вероятно получить их исправление!

Ответить
Развернуть ветку
Shoo

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

Ответить
Развернуть ветку
Denis Kiselev

Эппловский рынок не так велик, к сожалению! Поэтому вряд ли что то появится сильно альтернативное икскоду. Много поделок знаю - Fire от RemObjects, Xamarin Studio и тп.

К слову, икскод довольно хорош, кмк, только падает регулярно (хотя его и чинят). Но все инструменты разработчиков по смыслу - не очень стабильные: слишком быстрое развитие

Ответить
Развернуть ветку
Эдвард Даньковский

Visual studio?

Ответить
Развернуть ветку
Shoo

Эмулятор умеет? Нибы? Сториборды? Segue?

Ответить
Развернуть ветку
Alexey Bolshov

Очень хорошие и правильные советы. Только тем, у кого голова устроена правильно они не нужны, а остальным - не помогут. Я сам всю жизнь (уже полтинник) учусь и все осваивал практически самостоятельно.
С программированием я так поступал:
- брал хороший справочник (по рекомендациям или сам просматривал несколько книг в магазине перед покупкой);
- читал от корки до корки (иногда садясь за компьютер и реализовывая свои собственные идеи, которые рождались при чтении);
- практика, практика, практика (при возникновении проблемы уже знал, где искать в справочнике нужное).
Так и освоил HTML, JS, PHP, CSS, MySQL, Access (VBA) (не в совершенстве, но свои задачи решаю вполне успешно), французский и английский языки...

Один из сложных навыков - это учить других учиться.

Ответить
Развернуть ветку
Alexandr Petrov

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

Вот сайт с материалами: lesson-web.ru. Может быть тоже кому-то тут пригодится))))

Ответить
Развернуть ветку
Anton Smets

Есть ещё приложение SoloLearn. Можно выучить основы + встроенная песочница.

Ответить
Развернуть ветку
Pavel Anpleenko

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

Ответить
Развернуть ветку
Anton Smets

Ну так там и не учат создавать реальные проекты. На примерах учат в Udemy и в некоторых книгах Орейли.

Ответить
Развернуть ветку
Denis Kiselev

Мастерство приходит с практикой, ничего страшного - было бы желание развиваться!

Ответить
Развернуть ветку
Витя Понедельник

Ребят, мне страшно. Все, что я знаю из мира программирования - это английский язык, и тот на среднем уровне. Начинал с языка Java, дошел до создания своего проекта - не получилось, бросил. Как побороть страх перед программированием? :)

Ответить
Развернуть ветку
10 комментариев
Раскрывать всегда