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

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

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

Блок 1: Алгоритмы и структуры данных

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

Так что делать?

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

Вы можете углубиться в этот блок и пройти полный курс по структурам данных и алгоритмам или решить просто поискать самые основные моменты, чтобы быстро пройти по всем хорошо известным структурам данных и алгоритмам. Для быстрой прогулки я рекомендую книгу наподобие Cracking the Coding Interview: 189 вопросов и решений по программированию.

Это не рекомендация аффилированного лица, у меня просто есть эта книга, и мне очень понравилось, как выглядят главы. Это просто дает вам несколько проблем по каждой известной теме. Так что, если вы раньше не изучали алгоритмы, вы можете отсканировать названия этой книги и выбрать одно из них, чтобы продолжить поиск в Google. Так, например, в главе «Деревья» вы начинаете углубленно изучать деревья из статей и быстрых видеороликов на YouTube. Затем вернитесь к книге, проверьте проблемы в этой теме, и теперь вы можете написать код решения.

Блок 2: Анализ алгоритмов

Итак, теперь вы знаете, что основные структуры данных и алгоритмы доступны, пора научиться анализировать то, что вы применили. Анализировать так же просто, как понять время выполнения и необходимое хранилище для каждого алгоритма. Обычно люди используют терминологию Big O для времени бега.

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

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

Блок 3: Соревновательное программирование

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

На этом этапе я не хочу, чтобы вы получали медаль в Google CodeJam или каких-либо реальных соревнованиях по программированию. Вы только новичок, и цель этого шага не в том, чтобы стать победителем, а в том, чтобы узнать больше за меньшее время.

Все, что вам нужно сделать, это зайти на такие сайты, как Codewars, HackerOne и Leetcode. Решать проблемы, доступные на этих веб-сайтах, и соревноваться с другими. Чем больше вы практикуетесь, тем быстрее вы научитесь. Большинство этих веб-сайтов помогут вам шаг за шагом перейти от задач базового уровня к более высоким.

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

Блок 4: Базы данных

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

Итак, пройдите краткий курс по базам данных. На данный момент SQL является наиболее известным. Неважно, что вы в конечном итоге будете использовать, это может быть SQL, MongoDB или даже такие сервисы, как firebase store. Важно понимать, что такое базы данных, как хранятся данные и как их получить, используя ваш язык. Инструкции CRUD - создание, чтение, обновление, удаление - хороши вначале. Затем вам нужно закодировать алгоритмы поиска и сортировки в своей базе данных.

Блок 5: объектно-ориентированное программирование

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

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

Блок 6: Инструменты программиста

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

В принципе, для этого блока я рекомендую три вещи:

  1. IDE - интегрированная среда разработки: это зависит от языка, который вы изучаете, но вам необходимо изучить среду, в которой вы хотите работать. Это может быть Visual Studio, Android Studio или что угодно, что вам больше нравится. . IDE предоставляет множество инструментов, которые помогут вам быстро кодировать и упростить отладку. Если вы не чувствуете, что вам нужна IDE, это нормально, но посмотрите, что есть в наличии. Лично я больше всего занимаюсь JS, и мне достаточно текстового редактора вроде Sublime. Тем не менее, попробуйте IDE, прежде чем вы решите изучить инструменты, которые использует большинство программистов.
  2. Система контроля версий: это обязательно. Возможно, вы слышали о Github раньше. Github использует git так же, как Bitbucket. Очень важно использовать контроль версий и понимать его роль. Это не только поможет вам в управлении своим кодом и работе с другими; это также поможет вам открыть для себя открытый исходный код. Так что просто перейдите к любому основному материалу по git и начните его использовать.
  3. Сборка, упаковка и развертывание. Скорее всего, вы с самого начала работали локально. Пришло время узнать, как вы можете поделиться своей программой с пользователями. Итак, разберитесь, как собрать, упаковать и развернуть вашу программу. Это зависит от языка, который использует ваша программа, но для начала вы можете проверить что-нибудь вроде Docker. Google будет вашим лучшим другом на этом этапе.

Блок 7: Выберите свой трек

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

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

Сначала перечислите треки и конечные продукты, которые могут там присутствовать:

  • Веб-разработка
  • Backend разработка
  • Фронтенд разработка
  • Нативная мобильная разработка
  • Кросс-платформенная разработка
  • Разработка расширений Chrome

Всегда есть что-то большее. Google, чтобы узнать больше. Некоторые видео и статьи на YouTube пытаются обобщить тренды текущего года. Некоторые специальности будут проще, чем другие, более интересными для вас, чем другие, или высокооплачиваемыми, чем другие. Смотрите все, что вам больше нравится, и выбирайте. После того, как вы выберете поле, постарайтесь не сомневаться, так как несколько испытаний потеряются в этом блоке.

Допустим, я выбрал разработку расширений для Chrome. Пришло время углубиться в то, чему мне нужно научиться, чтобы хорошо в этом разбираться. Для начала это будут HTML, CSS, JS и Chrome Extension API. И теперь я знаю свой план.

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

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

Это ваш выбор, и вы к нему готовы.

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

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