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

При написании постов в блоге я буду использовать принципы техники Фейнмана. Итак, что же такое техника Фейнмана? Техника Фейнмана была разработана Ричардом Фейнманом (1918–1988), известным писателем, интеллектуалом, философом и физиком. Этот метод обучения и общения направлен на передачу информации с использованием очень краткого и легкого для понимания (простого) языка.

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

Суть метода Фейнмана заключается в следующем:

  1. Определите тему, о которой вы хотите узнать, и изучите
  2. Преподать тему ребенку
  3. Размышляйте, уточняйте и упрощайте
  4. Организуйте и проанализируйте

ШАГ ПЕРВЫЙ: ОПРЕДЕЛИТЕ ТЕМУ

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

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

ДЕРЕВО

  • Он имеет один корень, который является началом
  • Имеет ответвления, отходящие от корня
  • Может отображать иерархию или родительские и дочерние отношения
  • Имеет узлы, которые содержат значения

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

ШАГ ВТОРОЙ: УЧИТЕ, КАК РЕБЕНКА

Затем учите тему так, как будто вы учите ребенка. Позвольте мне быть откровенным. Есть темы, которые ребенок до десяти лет не поймет, как бы просто ты ни объяснял. Или, чтобы объяснить эту тему, вы должны упростить ее настолько, что теряется основной смысл. Когда вы учите ребенка, вы вынуждены использовать более простые термины, быть краткими и использовать простые схемы. Почему? Потому что ребенок не поймет, о чем вы говорите, если он не знает, что означают слова, которые вы используете. Они также теряют внимание — БЫСТРО. Наконец, они теряют интерес, если у них нет наглядного изображения, которое легко понять и привлечь. Мне повезло, что у меня есть дочь (10 лет), которая с удовольствием слушает меня, когда я преподаю структуры данных и другие темы программирования, так что я получаю возможность лично испытать трудности объяснения концепций, чтобы она поняла.

ШАГ ТРЕТИЙ: РАЗМЫШЛЯЙТЕ, УТОЧНЯЙТЕ И УПРОЩАЙТЕ

Следующий шаг — это то, где все становится весело. Здесь вы начинаете глубоко копать то, чего НЕ ЗНАЕТЕ. Выделив пробелы в своих знаниях, вы сможете начать собирать воедино известные вам фрагменты. Медленно, но верно ваше понимание темы становится более законченной головоломкой, а не отдельными кусочками. Если вы чего-то не понимаете, продолжайте исследовать этот предмет, пока не поймете!

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

О чем я хочу узнать больше:

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

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

ШАГ ЧЕТВЕРТЫЙ: ОРГАНИЗАЦИЯ И ПРОСМОТР

Наконец, попросите отзыв о вашем объяснении. После того, как вы кого-то научили (в моем случае, мою дочь), попросите отзыв. Понял ли человек, что вы сказали? Были ли в вашей истории неясные моменты? Иногда человек не дает отзыва, что может быть предупреждающим признаком того, что ваше сообщение не возымело действия. Спросите, есть ли у них вопросы, что они помнят, а что еще не понимают. Делайте заметки и продолжайте пересматривать, чтобы прояснить эти темные области.

Ведите записи того, что вы узнали, и обратной связи, которую вы получаете. Раньше я использовал переплеты, но в последнее время мне нравится использовать Документы Google, потому что я могу быстро искать темы. Какой бы носитель для заметок вы ни использовали, создайте структуру, которая вам подходит, и начните ее использовать!

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

ПОЯСНЕНИЯ БУДУТ В JAVASCRIPT

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

ПОЧЕМУ ДАННЫЕ СТРУКТУРЫ И АЛГОРИТМЫ?

Я знаю, что многие веб-разработчики утверждают, что ключом к тому, чтобы быть хорошим веб-разработчиком, является создание веб-сайтов. Я согласен — вам нужны знания, необходимые для создания сложных веб-приложений. Быть ниндзя в проблемах LeetCode не обязательно сделает вас лучшим веб-разработчиком. Тем не менее, вы научитесь решать сложные алгоритмические задачи, связанные с созданием лучших приложений. Кроме того, вы узнаете больше о том, что происходит «под капотом» в языке программирования и какие факторы могут резко повысить или понизить эффективность вашего кода. Хотя я не рекомендую ТОЛЬКО изучать структуры данных и алгоритмы в качестве веб-разработчика, я рекомендую каждый день посвящать часть вашего времени практике и обучению решению сложных задач кодирования, подобно тому, как музыкант ежедневно отрабатывает свои гаммы.

ЧТО Я ПОКРЫВАЮ

Я начну с нотации Big O, алгоритмов сортировки и общих структур данных. Оттуда варианты широко открыты. Я надеюсь осветить темы программирования на JavaScript, веб-разработки и многого другого! Моя цель — помочь другим понять темы, с которыми я действительно боролся.

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