Просто написать код недостаточно

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

Чем осознанная практика отличается от простой практики?

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

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

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

Определение преднамеренной практики

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

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

Отличное программирование через осознанную практику

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

Преднамеренная практика требует усилий за пределами вашей текущей зоны комфорта.

Допустим, вы изучаете циклы и массивы. Вы уже написали несколько программ, отображающих элементы массива или суммирующих элементы числового массива. Вам нужны более сложные задачи. Одним из мест для поиска является codingbat.com и раздел AP-1. Здесь вы найдете несколько задач, которые сложнее, чем в большинстве вводных учебников. Решения задач находятся на Java или Python, но задачи подходят для любого языка программирования. Они предоставляют образцы входных и выходных данных (обратная связь), чтобы вы могли знать, работает ли ваша программа или нет. Есть также много отличных книг, в которых представлены задачи по программированию для работы. Осторожно: впереди корыстная реклама. У меня есть несколько таких книг в работе, которые я называю серией Рабочие задачи. Смотрите мой сайт thelearningprogrammer.com для получения дополнительной информации.

Преднамеренная практика имеет четко определенную цель.

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

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

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

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

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

Преднамеренная практика требует использования эффективных ментальных репрезентаций навыка.

Наименее конкретным из всех принципов преднамеренной практики является концепция ментальных репрезентаций. Одним из определений эксперта в какой-либо области является наличие превосходных мысленных представлений о предмете. Классический пример — шахматисты. Шахматисты уровня мастера запомнили тысячи шахматных досок на разных этапах шахматной партии посредством тщательного анализа различных частей шахматных партий, сыгранных другими игроками-мастерами. Они не развивают этот навык, играя больше партий в шахматы. В программировании вы можете изучить, как великие программисты пишут программы, изучая программы с открытым исходным кодом и читая книги по написанию хороших программ. Две такие книги — Красивый код под редакцией Энди Орама и Грегори Уилсона и Чтение кода Диомидиса Спинеллиса. Учиться программировать, читая отличные программы, недостаточно, и каждый программист должен тратить время на чтение примеров отличных программ, особенно в тех областях, которые выходят за рамки вашего обычного опыта программирования. Изучение этих программ поможет вам разработать хорошие ментальные представления для использования в вашем собственном программировании.

Всегда учитесь

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

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

Первоначально опубликовано на http://thelearningprogrammer.com