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

Это меня удивляет, потому что программирование - это навык. А формирование любого навыка требует много работы - и времени.

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

Скорость придет со временем. Не делайте это своей основной целью.

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

Это того стоит

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

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

Быстрее? Полегче? Почему нет?! Потому что это иллюзия.

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

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

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

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

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

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

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

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

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

Постройте ствол, затем добавьте листья

Думайте об основах как об основных принципах технологии или концепции, которую вы изучаете.

Основы придают знаниям структуру. Эту мысль разъяснил Илон Маск [1]:

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

Когда у вас есть прочная база знаний («ствол»), у вас есть предыдущие знания, на которые можно ссылаться, когда вы добавляете к нему новые («листья»).

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

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

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

Заложить фундамент

Вам знакомы имена Энди Уорхол или Джексон Поллок?

Мы помним этих художников за их новаторские работы. Однако они были классически обучены. Другими словами, они изучили основы искусства до революции в мире искусства.

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

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

Пусть процветает творчество

Согласно методике легендарного тренера и учителя по баскетболу Джона Вудена, овладение основами закладывает фундамент, на котором может развиваться творчество. [2]

«[Вуден] хотел освободить своих игроков от размышлений о вещах, которые они могли бы оставить автоматическим действиям, чтобы они могли думать, выбирать, быть изобретательными и изобретательными, а также проявлять инициативу», - вспоминает бывший игрок. [2]

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

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

Будьте готовы к повороту

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

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

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

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

Развивайте интуицию программиста

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

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

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

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

Как сделать сдвиг

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

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

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

Начните с общей картины

Узнавая что-то новое, начните с общей картины. Это взгляд с высоты птичьего полета на все, что вы собираетесь узнать.

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

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

При этом задайте себе следующие вопросы:

  • Какие из повторяющихся тем?
  • На чем делается акцент?
  • Какое краткое изложение некоторых основных идей?

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

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

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

Определите основы, а затем сосредоточьтесь на них. Оттуда все взлетает.

Сноски:

  1. Reddit. Https://www.reddit.com/r/IAmA/comments/2rgsan/i_am_elon_musk_ceocto_of_a_rocket_company_ama/cnfre0a/
  2. Натер, Свен. Не учили, пока не научились: принципы и методы преподавания Джона Вудена. Моргантаун, Информационные технологии для фитнеса, 2006 г.

Я пишу об обучении программированию и о том, как это лучше всего делать на amymhaddad.com.

Первоначально опубликовано на amymhaddad.com.