Написать пост

Как эффективно изучать языки программирования? Отвечают эксперты

Аватар Никита Прияцелюк

В изучении нового языка программирования есть много спорных моментов. Сначала теория или практика? Использовать книги или курсы? Выясняем в этой статье.

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

Как эффективно изучить новый язык программирования? Вопрос, с которым сталкивается каждый разработчик. За 11 лет в ИТ я сам изучал 10 языков и на практике понял, какие моменты нужно учесть для лучшего освоения.

Цель первична

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

Язык может быть нужен, чтобы:

  • устроиться на работу в компанию, где основной язык C#;
  • написать ПО для межконтинентальной ракеты;
  • создать свой сайт;
  • оптимизировать запрос к базе данных на PostgreSQL в чужом проекте;
  • получить статус Senior-разработчика.

Конкретно сформулированная цель позволит достигнуть желаемого результата.

Теория и практика

Теория нужна, чтобы как можно быстрее перейти к практике!

  • Первым делом установите среду разработки — так будет проще писать код и запускать свои новые программы.
  • Затем возьмите учебник. Не важно, из серии «для чайников» или толстенный справочник — ориентируйтесь на свой уровень и цели.
  • Если учебники навевают тоску и воспоминания о школе — в сети есть огромное количество видеокурсов, лекций и вебинаров (ищите в YouTube).
  • Ещё один хороший инструмент для изучения — интернет-площадки, которые предоставляют полноценные курсы с теорией и практическими заданиями. Например SoloLearn с мобильными приложениями.

Было бы желание, а способ изучения и материалы найдутся.

Окружение

Окружение становится турбокнопкой к эффективности.

  • Идеальный вариант — работать вместе с людьми, которые уже имеют богатый опыт в разработке на интересующем языке программирования. Какими бы бесконечными ни были ресурсы сети Интернет, консультацию опытного коллеги переоценить сложно. При каждом удобном случае нужно демонстрировать свои решения, отправлять код на review, внимательно слушать обратную связь и обсуждать вопросы.
  • Если более продвинутого коллеги рядом нет, то на помощь придут профильные ресурсы в сети. Плюс можно подписаться на каналы, новостные группы и рассылки по выбранному языку.

Изучать синтаксис языка программирования исключительно в теории не стоит. Помню, когда я учился в 9-ом классе, когда у меня даже не было компьютера, я прочитал книгу про Algol-60 и ничего не понял. В освоении языков самое важное — практика! Поэтому на первых этапах надо изучать не синтаксис, а идиоматику — средства, которыми принято выражаться в этом языке. Надо научиться понимать, как правильно формулировать. Без этого код будут плохо понимать другие программисты, даже если синтаксис будет правильным.

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

  1. Сначала почитать об этом языке: его истории, синтаксисе и основных инструментах. На это человеку, который уже знает основы программирования, достаточно будет потратить один вечер.
  2. Начать читать чужой код. Если надо научиться языку Scala или Clojure, я иду на GitHub, нахожу работающие проекты или известных людей, заслуживающих доверия, и изучаю их код. Как художник вдохновляется шедеврами признанных мастеров, программист может учиться идиоматике языка, читая код более опытных специалистов.
  3. Уже через пару дней можно начать экспериментировать и делать попытки создать что-то своё. Если язык позволяет написать web-сервис, можно сделать записную книжку, прогноз погоды, что-то несложное. Меняя код, искать наилучшие варианты, постепенно усложняя задачи.
  4. После этого нужно начать применять новый язык в решении реальных задач, углубляя в процессе его понимание и способы применения. Тут уже нет предела совершенству!

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

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

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

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

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

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

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

Несколько слов стоит сказать о практической задаче. Лучше всего пробовать решать какую-то свою актуальную задачу (например реализовать приложение для управления компонентами «Умного дома»), максимально её упростив для начала. Как показывает мой опыт, это отлично мотивирует, ведь на выходе удаётся достичь сразу двух целей: и язык/технологию новую изучить, и реализовать давнюю идею.

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

Вы начинающий программист

Очень часто людям, которые только начинают свой путь в программировании, сложно освоить весь объём новой информации, который они получают из книг и видеолекций. Они не могут категоризировать весь объём поступающих данных самостоятельно. В этом случае поможет ментор: человек, который сможет скоординировать процесс обучения, обратить внимание на важные вещи, стать проводником в мир ИТ. Поэтому если у вас есть знакомый программист, который готов стать ментором, то вполне возможно изучать язык по видеолекциям и книгам, периодически консультируясь с ним. Пусть он даст вам вектор движения и будет корректировать его по мере надобности — а с самостоятельным изучением темы вы справитесь своими силами.

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

Вы уже знаете один или несколько языков программирования

В этом случае достаточно прочитать книгу или посмотреть видеолекции по нужному языку программирования. Проходить курсы вряд ли необходимо, так как они в подавляющем случае разработаны для начинающих программистов, и темп изучения покажется вам слишком медленным. Единственное, что нужно помнить — в каждом языке есть свой подход к написанию кода. Например, если вы изучали JavaScript, а потом захотели освоить Golang, не пытайтесь писать код на Golang, используя практики программирования на JavaScript. Лучше потратить дополнительное время для изучения best coding practices изучаемого языка, чтобы не быть «белой вороной» и не вгонять в ступор других людей, когда они увидят получившийся код.

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

Сам я по образованию программист, много лет занимался разработкой на С++. По опыту скажу: нельзя найти универсальный и единственно правильный путь изучения программирования. Если кому-то «заходит» только практика, это не значит, что другой, прикладывая максимальные усилия, тем же путём освоит язык.

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

  • Определитесь с областью разработки и той сферой, где бы вы хотели в дальнейшем применять полученные знания. Заранее настройтесь морально, что как минимум полгода вы будете тратить свободное время на изучение языка.
  • Не бросайтесь как в омут с головой в практику и непонятные километры кода, изучите теоретические основы, коих сейчас масса. Важно проследить развитие языка и понять стек технологий, фишки и особенности синтаксиса.
  • Подтяните английский язык, расширяйте словарный запас. Незнание иностранного значительно сужает рамки возможностей программиста, лишает общения с коллегами и получения информации из оригинальной технической документации, поскольку всё будет доходить постфактум и с искажениями в переводе.
  • Получив первичное представление о технологиях и особенностях языка, приступайте к практике: выполняйте задания из видеокурсов и книг, поищите интересные YouTube-каналы, на базе примеров составляйте и решайте свои задачи, усложняя вводные. За основу возьмите задания, например с бирж фриланса. Не следуйте слепо тому образцу, который будет «подан» и «разжеван».
  • Начните работу над собственными проектами. Пусть простыми, даже элементарными, но это даст толчок к развитию в профессии. В данном случае лучше заранее собрать все «грабли», чем спотыкаться в дальнейшем.
  • Если будут возникать вопросы — а они будут возникать — не ленитесь обращаться к специализированным ресурсам и книгам более продвинутого уровня, чтобы повышать скиллы.

И запомните одну вещь — учиться и совершенствоваться необходимо на протяжении всего своего пути. Это аксиома.

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

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

Как для обучения, так и для развития новых компетенций у работающих программистов отлично подходят различные практические тренажёры. Например, полезно решать задачи по олимпиадному программированию, где знания определённого языка накладываются на решение задач с использованием другого. Среди резидентов технопарка популярна площадка Timus Online Judge — крупнейший архив задач по программированию с автоматической проверяющей системой. Особенность таких тренажёров в том, что для решения задач не используются фреймворки, сторонние библиотеки и методы сортировки. Ты должен сам писать код от и до. Отлично прокачивает умение строить алгоритмы.

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

Отличный вариант «прокачки» компетенций в том или ином языка — стажировка в сильной проектной группе, в IT-компании, специализирующейся на этом языке. Это самый экстремальный, но, пожалуй, самый эффективный способ быстро освоить язык программирования.

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

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

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

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

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

Какой бы способ изучения вы не выбрали, самым важным является практика! В программировании совершенно не важно, какие курсы или учебные заведения вы окончили. На любом собеседовании вам будут задавать предельно практичные вопросы. Поэтому во время или после прохождения какого-либо курса или по ходу изучения языка самостоятельно практикуйтесь как можно больше. Если перевести соотношение теории к практике в проценты, то, на мой взгляд, оно составит примерно 20/80. Работодателю важно сразу после найма получить работоспособного программиста, а не тратить время на перевод теоретических знаний в практические навыки и умения.

Вопрос достаточно сложный. Нельзя выбирать между теорией и практикой, должна быть гармония. Нужно учить синтаксис и понимать алгоритмы и основы. При этом без практики эти знания не имеют ценности. Нужно чередовать — прочитали некоторую часть, затем опробовали на практике. При этом, на мой взгляд, совсем не обязательно покупать платные подписки на курсы. Очень много материалов есть в открытом доступе. Большое количество интересных практических задач можно получить, задав в Google вопрос «олимпиадные задачи по программированию». На них вам придётся поискать и почитать теорию про алгоритмы, их сложность, структуры данных и прочее. При этом они дают возможность писать свой код, и потом при разборе увидеть свои ошибки и варианты решения из best practice.

Как только почувствовали уверенность — нужно браться за боевые задачи, чтобы увидеть реальный мир и реальные проблемы. Зачастую в учебнике и обучающих задачах многие сложные и интересные практические моменты пощупать не получится. Начните писать свой проект на GitHub. Ещё очень важный момент: ваш шанс на успех сильно повысит наличие ментора — более опытного друга/коллеги/наставника, который может помочь, если у вас «затык», что-то объяснить, проверить результат вашей работы и дать правильный вектор вашему развитию. Никогда не останавливайтесь на достигнутом. Удачи.

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

Следующие шаги помогут вам сделать это правильно.

Определитесь с конечной целью

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

А может, вы хотите уметь делать и то, и другое, и третье?  Такое тоже возможно.

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

Учите синтаксис небольшими порциями

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

Сразу применяйте знания на практике

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

Решайте задачи по программированию

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

Переходите к созданию проектов

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

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

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

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

Алгоритм может быть следующий:

  1. Выбор языка (например Python), на основе широты его применения, актуальности и прогноз, где язык может быть использован (например Data Science).
  2. Просмотр нескольких скрин-кастов (от простого к сложному), оценка барьера вхождения (достаточно ли у меня скилов на освоение языка, например хватит ли мне знаний математики для программирования на Python).
  3. Поиск готовых решений и наработок для примера.
  4. Подбор литературы (в рамках данного примера масса бесплатных вариантов).
  5. Финальный шаг: идём в сторону Coursera, а потом уже наступает «инженерка» с реальными задачами и решением проблем в обнимку со StackOverflow.

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

Если говорить о фронтенде, то обязательные основы — HTML и CSS, нужные для вёрстки, и язык программирования JavaScript, который делает сайт интерактивным. Фронтенд-разработчику важно понимать на базовом уровне, как устроен бэкенд, поэтому нужно изучить, как происходит сборка проекта — подключение сайта к серверу и его «доставка» до пользователя.

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

Через месяц-полтора уже получится сверстать несложный сайт, ещё через два месяца — «оживить» сайт при помощи JavaScript и адаптировать его для разных устройств.

Чтобы учиться было интереснее, придумайте себе проект (сайт) и начните его воплощать — верстать, писать код. Дело пойдёт быстрее, потому что код не будет абстрактным, перед вами будут стоять конкретные задачи, решение которых вы будете искать. В Яндекс.Практикуме мы предлагаем студентам сделать пять проектов: четыре шаблонных и одна полностью индивидуальная дипломная работа. Эти проекты они смогут сразу положить в своё портфолио.

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

  1. Изучение базового синтаксиса.
  2. Некая математическая база (линейная алгебра), которая даёт понимание для пространственного мышления — помогает разбираться в матрицах, массивах, объектах, строить алгоритмы. Если база есть — двигаемся дальше, т.к. она одинакова для всех языков.
  3. Далее уже изучаем архитектуру языка для написания классов, объектов.
  4. Попутно узнаём методы отладки и дебага.
  5. Те, кто дожил до этого момента, приступают к изучению паттернов, применяемых к архитектуре именно этого языка.
    Но перед всей этой кухней идёт очень важная вещь — настройка рабочей среды. В каждой ОС по-своему: установка самого языка, поиск удобного текстового редактора, установка всяких побочных программ типа Docker, веб-сервера и пакетных установщиков.

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

Ещё один вариант. Придумываете для себя простой, но интересный проект, а далее начинаете его пытаться делать, параллельно задавая вопросы в Google или StackOverflow. Там можно прояснить вопросы простого характера и найти в комментариях полезные мнения. Но тут есть и минус. Без понимания базовых концепций программирование может превратиться в «загугли решение». Некоторые девелоперы так и копируют асинхронные функции, не понимая, что такое вообще асинхронность.

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

Ответ во многом зависит от языка программирования и сферы его применения.

Допустим, человек занимается научными исследованиями, и сотрудники его лаборатории в проектах используют Fortran — это одна ситуация. Другой вариант — студент, изучающий машинное обучение, который хочет писать проекты на Python. Ещё вариант: разработчик решил изучить С++, чтобы устроиться на работу в коммерческую компанию. Эти и другие ситуации требуют разного подхода и объёма прилагаемых усилий для изучения языка.

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

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

2. Практика. В каждом языке есть свой «Hello, world!». Пытайтесь сразу же применять полученные знания на практике, закрепляйте освоенные конструкции языка.

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

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

5. Старайтесь, чтобы ваш код увидело как можно больше коллег, чтобы как можно раньше получить фидбэк на то, как вы пишете или оформляете код. Оформление кода или code style в крупных проектах — отдельная тема, и её тоже следует изучить. Также как и процесс code review.

6. Если вам требуется глубокое понимание языка (например если вы разработчик в крупной коммерческой компании), не ограничивайте себя изучением только его одного. Посмотрите вокруг на остальное: скриптовые языки, ассемблер. Задайте себе вопрос, чем они отличаются, почему устроены иначе, какую цель преследовали авторы этих языков? Изучайте различные фреймворки, библиотеки, погрузитесь немного в теорию компиляции, разберитесь с тем, как устроен процесс «сборки» проектов в разных средах.

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

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

9. Посещайте различные мероприятия, конференции, семинары. Они могут быть посвящены дальнейшему развитию языка или различным сферам его применения.

10. Помните, что нельзя «изучить» какой-то язык «от и до». Язык не монумент, он живёт и развивается, это же справедливо и в отношении естественных языков. И если язык «живой», востребованный в мире, то процесс изменений в нём со временем становится всё более интенсивным.

На этом у меня всё. Ищите свой путь, не бойтесь наступать на «грабли». Чем раньше вы их «соберёте» — тем меньше «мин» будет в проектах, которые вы после себя оставите.

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

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

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

Следующий важный этап — выбор специализации и последовательное её освоение. Разные языки программирования позволяют писать код под разные платформы. Так, используя Java, можно создавать серверные и мобильные решения (например для Android). C# позволяет писать практически всё: серверные, мобильные, десктопные и веб-решения. Здесь также будет эффективным самообучение по книге. Однако параллельно с этим нужно задумываться о развитии собственных навыков с точки зрения архитектуры написания кода. Изучать мануалы по паттернам проектирования и пытаться применять знания на практике. Это, пожалуй, самый простой и надёжный алгоритм.

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

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

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

Итак, как лучше изучать язык программирования?

Каждый эксперт рекомендует свой алгоритм, но мы выписали и объединили общие пункты:

  1. Определитесь, как и когда вы будете изучать язык: настройтесь на то, что на изучение в свободное от работы время уйдёт минимум несколько месяцев и старайтесь определить для себя постоянный график: лучше заниматься по часу каждый день, чем по 12 часов раз в неделю.
  2. Если есть возможность, найдите себе ментора — более опытного программиста, который поможет определиться с планом изучения, будет отвечать на вопросы и делать code review.
  3. Выберите и начните изучать курс или книгу с объяснением основ языка.
  4. Параллельно с изучением выполняйте все предложенные практические задания и пробуйте себя на платформах вроде Codewars. Делайте упор на практику, а не теорию, потому что без решения задач вы не сможете разобраться в работе языка программирования.
  5. Когда освоитесь с основами, придумайте какой-нибудь интересный лично вам проект, желательно имеющий практическое применение, и попытайтесь его реализовать. Его же потом можно будет сразу включить в своё портфолио.
  6. Поищите в открытом доступе, например на GitHub, проекты других людей на выбранном языке и разберитесь, как в них всё устроено. Обращайте внимание на оформление кода и шаблоны его построения — это поможет писать более качественный и понятный другим людям код в будущем. Попробуйте изменить функциональность конечной программы, редактируя чужой код или дополнив программу своим.
  7. Расширяйте кругозор: обращайтесь к другим книгам и людям на форумах, ищите нужную вам информацию в разных источниках.

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Следите за новыми постами
Следите за новыми постами по любимым темам
74К открытий74К показов