Сможет ли программист создать 14 уровней для компьютерной игры за 8 дней
Обновлено: 21.11.2024
Авторские права: © Brown, Wilson, 2018. Эта статья находится в открытом доступе и распространяется в соответствии с условиями лицензии Creative Commons Attribution License, которая разрешает неограниченное использование, распространение и воспроизведение на любом носителе при условии указания автора и источника.
Финансирование: финансирование этой статьи не получено.
Конкурирующие интересы. Авторы заявили об отсутствии конкурирующих интересов.
Это образовательная статья PLOS Computational Biology.
Введение
Исследования в области педагогической психологии показывают, что преподавание и обучение – это предметно-ориентированные виды деятельности [1]: изучение программирования сопряжено с иным набором задач и методов, чем изучение физики или обучение чтению и письму. Информатика — более молодая дисциплина, чем математика, физика или биология, и, хотя исследований о том, как лучше всего преподавать, соответственно меньше, растет число доказательств того, что работает, а что нет. В этой статье представлены 10 простых советов, которые должны стать основой любого обучения программированию, формального или неформального.
Эти советы будут полезны всем, кто обучает программированию на любом уровне и для любой аудитории. Более широкий список, ориентированный в первую очередь на аудиторию K-12, можно найти в [2].
Совет 1. Помните, что гена гика не существует
Гуздиал [3] ссылается на веру в то, что одни люди рождаются программистами, а другие нет, как на «самый устойчивый и разрушительный миф о вычислительной технике». Это часто «подтверждается», если посмотреть на распределение университетских оценок, которое обычно считается бимодальным: горб с низкими баллами у тех, кто никогда не получит этого, и горб с высокими баллами у тех, у кого есть правильные вещи. Наш первый и самый важный совет заключается в том, что это неверно: компетентность в программировании не является врожденной, а скорее приобретенным навыком, который можно приобрести и улучшить с практикой.
Наиболее веские доказательства этого исходят от Patitsas et al. [4]. Они изучили распределение оценок на вводных компьютерных курсах в крупном университете и обнаружили, что только 5,8% из них были на самом деле мультимодальными. Более того, они обнаружили, что преподаватели компьютерных наук с большей вероятностью рассматривали распределения как бимодальные, если считали, что эти оценки получены на уроках программирования, чем если бы считали, что оценки получены на каком-то другом курсе, и что эти преподаватели даже с большей вероятностью видели распределения как бимодальные, если бы они считали, что некоторые учащиеся врожденно предрасположены к успеху в компьютерных науках.
Подобные убеждения, как известно, сильно влияют на результаты образования [5–7]. Если инструкторы считают, что «одни дети понимают, а другие нет», они будут (сознательно или бессознательно) вкладывать меньше средств в тех, кого они относят ко второй категории. В сочетании с культурными стереотипами о том, кто является «прирожденным программистом», а кто нет, нисходящая спираль неуспеваемости, возникающая в результате дифференциации внимания, может быть частично ответственна за гендерный дисбаланс в вычислениях.
Совет 2. Используйте инструкции коллег
Репетиторство один на один, возможно, является идеальной формой обучения: все внимание учителя может быть сосредоточено на одном ученике, и он может полностью адаптировать свое обучение для этого человека и адаптировать индивидуальные отзывы и исправления на основе двух- путь диалога с ними. Однако в реальных условиях один учитель обычно должен обучать несколько, десятки или даже сотни учеников одновременно. Как учителя могут надеяться прояснить различные неправильные представления многих учащихся в этих более крупных условиях в разумные сроки?
Самый лучший метод, разработанный на сегодняшний день для больших классов, — это обучение сверстников. Первоначально созданный Эриком Мазуром в Гарварде [8], он широко изучался в самых разных контекстах, включая программирование [9, 10]. В упрощенном виде одноранговое обучение проходит в несколько этапов:
<р>1. Преподаватель дает учащимся краткое введение в тему. <р>2. Затем инструктор дает учащимся вопрос с несколькими вариантами ответов, который исследует неправильные представления, а не простое воспоминание фактов. (Пример программирования, относящийся к сравнению целых чисел и циклам, приведен в Коде 1.) Вопрос с множественным выбором должен быть хорошо разработан. Нет смысла задавать тривиальный вопрос, на который все учащиеся ответят правильно, или вопрос с бессмысленными неправильными ответами, который ни один учащийся не выберет. Идеальны вопросы, на которые 40–60 % учащихся могут получить правильный ответ с первого раза ([11], с. 23), и те, в которых каждый неправильный ответ соответствует ошибочному представлению, которое приведет к его неправильному пониманию. выбрано хотя бы некоторыми учащимися. <р>3. Затем учащиеся индивидуально голосуют за ответ на вопрос, тем самым формализуя свой первоначальный прогноз. <р>4.Затем учащимся дается несколько минут на то, чтобы обсудить эти ответы друг с другом в небольших группах (обычно 2–4 учащегося), после чего они снова собираются и снова голосуют. <р>5. Затем преподаватель может действовать в соответствии с последними ответами. Если все учащиеся дают правильный ответ, инструктор может двигаться дальше. Если некоторые из неправильных ответов остаются популярными после группового обсуждения, преподаватель может решить эти конкретные неправильные представления напрямую или участвовать в обсуждении в классе.Взаимное обучение – это, по сути, один из способов индивидуального наставничества в масштабируемой форме. Групповое обсуждение значительно улучшает понимание учащихся, потому что заставляет их прояснять свое мышление, чего может быть достаточно, чтобы выявить пробелы в рассуждениях. Затем повторный опрос класса позволяет инструктору узнать, могут ли они двигаться дальше или необходимы дополнительные объяснения. Хотя в большинстве ситуаций оно значительно превосходит обучение на основе лекций, оно может быть проблематичным, если уровни способностей сильно различаются (как это часто бывает на вводных занятиях по программированию из-за разного предыдущего опыта). Чтобы избежать этого, можно использовать парное программирование (совет 5).
Совет 3. Используйте живое кодирование
Вместо того, чтобы использовать слайды, инструкторы должны создавать программы перед своими учащимися [12]. Это более эффективно по нескольким причинам:
<р>1. Это позволяет преподавателям более оперативно реагировать на вопросы «что, если?» вопросы. В то время как слайд-презентация похожа на шоссе, живое кодирование позволяет преподавателям уйти от дороги и следовать интересам своих учеников или отвечать на неожиданные вопросы. <р>2. Это облегчает непреднамеренную передачу знаний: учащиеся узнают больше, чем инструктор сознательно намеревается научить, наблюдая за тем, как инструкторы что-то делают. Дополнительные знания могут быть высокого уровня (например, написана ли программа сверху вниз или снизу вверх) или довольно низкого уровня (например, изучение полезных сочетаний клавиш редактора). <р>3. Это замедляет работу инструктора: если инструктору приходится вводить программу по мере ее выполнения, он может работать только в два раза быстрее, чем его ученики, а не в 10 раз быстрее, чем со слайдами, что может привести к тому, что все останутся позади.< /p> <р>4. Учащиеся видят, как преподаватели диагностируют и исправляют ошибки. Новички будут тратить на это большую часть своего времени, но это не вошло в большинство учебников. <р>5. Наблюдение за тем, как инструкторы допускают ошибки, показывает учащимся, что совершать собственные ошибки — это нормально [13]. Большинство людей моделируют поведение своих учителей: если преподаватель не стесняется делать и говорить об ошибках, учащимся тоже будет спокойнее.Живое кодирование имеет некоторые недостатки, но с практикой их можно избежать или обойти:
<р>1. Преподаватели могут работать слишком медленно, либо потому, что они плохо печатают, либо потому, что тратят слишком много времени на просмотр заметок, чтобы попытаться вспомнить, что они хотели напечатать. <р>2. Преподаватели могут тратить слишком много времени на ввод стандартного кода, необходимого для урока, но не относящегося к нему напрямую (например, операторы импорта библиотеки). Это не только замедляет процесс, но и может отвлечь учащихся от намеченной цели урока. Как говорит Уиллингэм [14], «Память — это остаток мысли»; если преподаватель тратит свое время на набор шаблонов, это может быть все, что учащиеся забирают. Этого можно избежать, начав с частичного скелета, включающего шаблон, или имея его под рукой, чтобы скопировать и вставить при необходимости. (Из двух вариантов мы предпочитаем первый, так как учащиеся могут не справиться с копированием и вставкой.)Обратите внимание, что живое кодирование не всегда должно начинаться с пустого экрана: преподаватели могут дать учащимся начальный код, основанный исключительно на концепциях, которые они уже освоили, а затем расширить или изменить его с помощью живого кодирования. Преподаватели, использующие кодирование в реальном времени, должны следить за тем, чтобы учащиеся имели доступ к справочным материалам после лекций, например учебникам, но также должны учитывать, что учащиеся всех возрастов все чаще обращаются за информацией к сайтам вопросов и ответов, таким как Stack Overflow.
Совет 4. Предложите учащимся делать прогнозы
Когда инструкторы используют живое кодирование, они обычно запускают программу несколько раз во время ее разработки, чтобы показать, что она делает. Удивительное исследование, проведенное сверстниками при обучении физике, показывает, что учащиеся, которые наблюдают за демонстрацией, учатся не лучше, чем те, кто не видел демонстрации [15], и на самом деле многие учащиеся впоследствии неправильно помнят результат демонстрации [16]. Другими словами, демонстрации могут быть бесполезными или активно вредными.
Ключом к тому, чтобы сделать демонстрации более эффективными, является то, чтобы учащиеся предсказывали результат демонстрации до ее выполнения. Крайне важно, чтобы их предсказание было каким-то образом записано или обнародовано, например, путем поднятия рук, поднятия карточек с подсказками, помеченных буквами A, B, C или D, или разговора с соседом.Мы предполагаем, что жало публичной неправоты заставляет учащихся обращать больше внимания и размышлять над тем, что они изучают; независимо от того, верна ли эта гипотеза, преподаватели должны быть осторожны, чтобы не наказывать или критиковать студентов, которые предсказывали неправильные прогнозы, а скорее использовать эти неверные прогнозы как стимул для дальнейшего исследования и объяснения.
Совет 5. Используйте парное программирование
Парное программирование – это практика разработки программного обеспечения, при которой 2 программиста используют один компьютер. Один человек (называемый водителем) печатает, а другой (называемый навигатором) предлагает комментарии и предложения. Эти двое меняются ролями несколько раз в час. Парное программирование является хорошей практикой в реальном программировании [17], а также хорошим способом обучения [18]. Партнеры могут не только помогать друг другу во время практических занятий, но и разъяснять неверные представления друг друга при представлении решения.
Обе стороны, участвующие в парном программировании, учатся в процессе. Более слабый получает индивидуальные инструкции от более сильного, в то время как более сильный учится, объясняя и заставляя переосмысливать вещи, о которых они, возможно, не задумывались какое-то время. Когда используется парное программирование, важно разделить на пары всех, а не только учащихся, которые могут испытывать затруднения, чтобы никто не чувствовал себя выделенным. Также важно, чтобы люди менялись ролями в каждой паре 3–4 раза в час, чтобы более сильная личность в каждой паре не доминировала в сеансе.
Совет 6. Используйте проработанные примеры с помеченными подцелями
Обучение программированию включает в себя изучение синтаксиса и семантики языка программирования, а также обучение созданию программ. Хорошим способом помочь учащимся в создании программ является использование рабочих примеров: пошаговые руководства, показывающие, как решить существующую проблему.
Инструкторы обычно предоставляют учащимся много похожих примеров программирования, на которых они могут попрактиковаться. Но поскольку учащиеся являются новичками, они могут не заметить сходства между примерами: нахождение самого большого количества осадков из списка чисел и нахождение первой фамилии в алфавитном порядке из списка имен могут показаться учащимся совершенно разными проблемами, даже если более продвинутые программисты признать их изоморфными.
Маргюлье, Моррисон и др. [19–21] показали, что учащиеся работают лучше, когда проработанные примеры разбиты на шаги (или подцели), которым даны названия (или ярлыки) — пример приведен в коде 2. Метки подцелей обеспечивают структуру, которая позволяет учащимся увидеть сходства между проблемами кодирования и более эффективно общаться со своими сверстниками и преподавателями. Затем учащиеся могут применять ярлыки к будущим задачам, которые они будут выполнять самостоятельно.
Совет 7. Используйте один язык
Принцип, применимый ко всем областям образования, заключается в том, что перенос приходит только с мастерством [22]. Поэтому курсы должны придерживаться одного языка до тех пор, пока учащиеся не продвинутся в нем достаточно далеко, чтобы быть в состоянии отличать лес от деревьев. В то время как опытный программист может, например, взять то, что он знает о циклах и вызовах функций на одном языке, и повторно использовать это понимание на языке с другим синтаксисом или семантикой, новичок еще не знает, какие элементы его знаний являются центральными, а какие нет. являются случайными. Слишком ранняя попытка форсировать перенос — например, потребовать, чтобы они переключились с Python на JavaScript, чтобы пройти курс веб-программирования на раннем этапе обучения, — может запутать учащихся и подорвать их уверенность.
Совет 8. Используйте аутентичные задачи
Гуздиал и др. обнаружили, что когда учащиеся манипулировали изображениями, аудио и видео в своих ранних заданиях по программированию, они лучше запоминали в двух смыслах: учащиеся запоминали больше материала при повторном тестировании после задержки и с большей вероятностью оставались в компьютерных программах [23]. Это частный случай более широкого наблюдения: учащиеся находят аутентичные задачи более увлекательными, чем абстрактные примеры.
Классический вопрос в компьютерном (и математическом) образовании заключается в том, лучше ли решать задачи с контекстом (например, найти самую высокую оценку учащегося) или без него (например, найти максимум списка чисел). Бувье и др. [24] изучили это в мультиуниверситетском исследовании и не обнаружили различий между ними. Они предполагают, что, поскольку это не имеет значения, приоритет следует отдавать другим соображениям (например, мотивации).
Одно предостережение относительно выбора контекста заключается в том, что контекст может непреднамеренно исключить одних людей и привлечь других. Например, многие преподаватели используют компьютерные игры в качестве мотивирующего примера на уроках программирования, но некоторые учащиеся могут ассоциировать их с насилием и расовыми или гендерными стереотипами. или просто найти их неприятными. Какие бы примеры ни были выбраны, цель должна заключаться в том, чтобы как можно быстрее перевести учащихся от «сложного и скучного» к «легкому и увлекательному» [25].
Чтобы помочь учащимся быстро достичь видимого и удовлетворительного результата, преподаватели могут предоставить некоторые предварительно написанные программные библиотеки или исходный код, которые помогут учащимся приблизиться к конечной цели. Идея о том, что студенты должны начинать с нуля и сами писать весь код, который им нужен, — пережиток ушедшей эпохи домашних микрокомпьютеров (да и тогда это было неправдой). Выберите задание, которое вы действительно хотите, чтобы учащиеся выполняли, и предоставьте все остальное заранее.
Совет 9. Помните, что новички не являются экспертами
Этот принцип тавтологичен, но его легко забыть. Новички программируют иначе, чем эксперты [26], и им нужны другие подходы или инструменты. Если вы попросите профессионального программиста выполнить итерацию по списку целых чисел и вывести среднее значение, он сможет написать код за считанные секунды, используя сохраненные знания о точном требуемом шаблоне. Новички подходят к этой проблеме совершенно по-другому: им нужно помнить синтаксис для разных частей, знать, как перебирать список, знать, как использовать переменную-аккумулятор и т. д.
Новичкам может потребоваться время, чтобы обдумать алгоритм на бумаге (это редко требуется опытным программистам, поскольку они обычно запоминают наиболее распространенные алгоритмические шаблоны). Им может потребоваться построить примеры пошагово. Они могут бороться с отладкой. Отладка обычно включает в себя противопоставление того, что происходит, тому, что должно происходить, но понимание того, что должно происходить, у новичка обычно слабое.
Новички не становятся профессионалами, просто выполняя то, что делают профессионалы в более медленном темпе. Мы не учим читать, беря классический роман и просто продвигаясь медленнее. Мы учим, используя более короткие книги с более простыми словами и более крупным шрифтом. Таким образом, в программировании мы должны позаботиться о том, чтобы использовать небольшие автономные задачи на уровне, подходящем для новичков, с инструментами, которые соответствуют их потребностям и без насмешек.
Совет 10. Не просто программируйте
Наш последний совет по обучению программированию заключается в том, что для этого вам не нужно программировать. Столкнувшись с проблемами изучения синтаксиса, семантики, алгоритмов и дизайна, примеры, которые кажутся инструкторам небольшими, могут легко ошеломить новичков. Разбивка проблемы на более мелкие части, связанные с одной концепцией, может уменьшить когнитивную нагрузку до чего-то управляемого.
Например, все больше педагогов включают задачи Парсонса в свой педагогический репертуар [20, 27]. Вместо того, чтобы писать программы с нуля, учащимся даются строки кода, необходимые им для решения проблемы, но в беспорядке. Переупорядочив их для правильного решения проблемы, они смогут сконцентрироваться на освоении потока управления, не тратя умственных усилий на повторение синтаксиса или специфики библиотечных функций. Они также нравятся учащимся; Эриксон и др. [28] обнаружили, что учащиеся чаще пытались решить задачи Парсонса, чем вопросы с несколькими вариантами ответов в электронной книге.
Заключение
Последнее замечание: не забывайте о человеческом факторе. Программисты имеют репутацию тех, кто высмеивает определенные инструменты программирования (например, высмеивает электронные таблицы) или привратников (например, заявляя, что вы не сможете научиться программированию, если не начали с юных лет). Если вы учите кого-то программировать, последнее, что вы хотите сделать, это заставить его почувствовать, что он не может добиться успеха или что любой имеющийся у него навык (независимо от того, когда и как он был приобретен) бесполезен. Дайте вашим учащимся почувствовать, что они могут быть программистами, и они вполне могут ими стать.
Код 1. Пример вопроса с несколькими вариантами ответов, проверяющий понимание учащимися циклов и сравнений целых чисел
Для участия не нужно регистрироваться! Мероприятия «Часа кода» доступны круглый год. Попробуйте выполнить задание или прочтите наше руководство, чтобы спланировать мероприятие для своего класса. И каждый год, чтобы в декабре, к вашему классу можно было собирать по всему миру, отпраздновать Неделю обучения информатике с Часом Программирования. Мы откроем регистрацию на ежегодное празднование в Октябре.
Невероятная статистика прошлогоднего «Часа кода». Только за одну неделю:
Уроки снижаются на 40
Час кода насчитывает более 100 миллионов учащихся
Сегодня информатика учат больше девушек, чем 70 лет назад
Что такое Час Кода?
Часть чтения читает как одночасовой курс введения в информатику, в сферу которой входит упрощение понимания "кода" и демонстрация того, что все могут изучить основы и углубить свои знания в области информатики.С тех пор Час кода стал всеобщим событием в области информатики. Это были 1-часовые мероприятия, которые расширились до разных типов мероприятий в сообществах. Познакомьтесь с уроками и мероприятиями. Эта пропаганда более чем 400 участников и 200 000 участников связана с общением во всем мире.
Когда проходит Час Кода?
Часто происходит ежегодно во время Недели изучения информатики. Неделя изучения информатики 2021 года пройдет 6–12 декабря, но вы можете рассмотреть Час кода в любое время в течение года. Неделя изучения информатики встречается ежегодно в честь дня рождения женщины, стоящей у истоков компьютерного программирования — адмирала Грейс Мюррей Хоппер (9 декабря 1906 года).
Почему информатика?
Каждый школьник должен иметь возможность изучать информатику. Она помогает приобретать навыки решения задач, развивает логическое и творческое мышление. Начав изучать информатику с пациентами лет, школьники заложат основы успешной карьеры в 21 исследовании в любой сфере деятельности. Дополнительные статистические данные представлены здесь.
Как мне принять участие в Часе кода?
Начните планировать здесь, ознакомившись с практическим отношением. Вы можете исследовать Час кода в вашей школе или в посещаемом сообществе, например, в клубе факультативных занятий, в офисе некоммерческой организации или по причине своей работы. Или просто пройти занятие самостоятельно, когда наступит 6 декабря.
Кто реализует Час кода?
Час событий происходит [Консультативным и Аналитическим комитетом] Час Кода и Недели обучения информатики(/ru/partners), а также небывалым союзом партнеров, поддерживающих Час Кода, включая Microsoft, Apple, Amazon, Клубы мальчиков и девочек Америки и Совет колледжа.
Я не знаю ничего о написании кода. Могу ли я участвовать?
Конечно! Все мероприятия Часа кода имеют индивидуальный характер. Все, что нужно сделать — посмотреть учебные материалы, выбрать заинтересовавший урок и назначить — об остальном бы позаботиться сами. У нас есть варианты проведения уроков для любого возраста и для любого уровня подготовки, от дошкольников до взрослых. намерение планировать мероприятие с прочтением путешествия.
Какие устройства происходят для занятий с моими учениками?
Нужны ли компьютеры для каждого?
Нет. У нас есть уроки, которые работают на ПК, смартфонах, планшетах, а также уроки, для которых совсем не нужны компьютеры! Вы можете участвовать в любом месте и с любого устройства.
Вот несколько вариантов:
Работа в парах.Исследования, что студенты учатся лучше всего в парах, когда они работают вместе на одном компьютере. Поощряйте работу в парах.
Используйте проектор. Если у Вас есть представители и экраны, подключенные к компьютеру с доступом в сеть, вся Ваша группа может заниматься во время Часа Кода вместе. Смотрите видео вместе и решайте задачи или отвечайте на вопросы по очереди.
Работайте без оборудования. Мы предлагаем уроки, для которых вообще не нужны компьютеры.
Я из России. Могу ли я иметь дело на уровне?
Любой человек может путешествовать Час код в любой радости мира. В прошлом году к Часу кода присоединились участники со всего мира. узнать больше можно здесь.
Как я могу создать урок для Часа кода?
Если вы хотите стать нашим партнером по изучению уроков, прочитайте наши знания и инструкции. Мы хотели бы предложить уроки по самым разным направлениям, но основной целью является оптимизация уроков для изучения и без опыта в информатике.
Требуется ли студенческая авторизация в системе?
Где можно напечатать сертификаты для обучающихся?
Перейдите на страницу с сертификатами.Там вы можете найти и предварительно распечатать сертификаты для всех отобранных. Вы также можете распечатать сертификаты отдельных образцов, которые выдаются за прохождение уроков Minecraft.
Какие упражнения стоит выполнять c учащимися средних и старших классов?
Как считать код часов?
Счетчик Часа кода дает не точное число. Это связано с тем, что мы не используем предполагаемых идентификаторов обучающихся при подсчете статистики Часа кода. Это связано с тем, что для входа мы не требуем регистрации или входа в систему. В результате цифры были увеличены, так и занижены. Больше информации см. здесь.
Почему я не могу проводить свое мероприятие на карте?
Нам очень жаль, что вы не можете проводить это мероприятие на карте Часа кода. Это связано с тем, что при регистрации тысяч организаторов несколько мероприятий на карте объединяются в одну точку. Если вы нажмете на странице по ссылке на события, расположенную под картой, вы можете увидеть список всех событий, где появится и свое.Кроме того, поскольку на Час кода регистрируются люди, для обновления карты, как правило, требуется 48 часов. Возьмите карту через пару дней!
Чему можно научиться за 1 час?
Цель Часа код не подходит в том, чтобы сделать из обучающихся опыт в области информационных технологий за один час. Одного занятия хватит только на то, чтобы узнать, что информатика — это веселый и творческий процесс, и она доступна для всех возрастов, независимо от того, насколько глубоко они достигают уровня знаний. Доказательством успеха этого проекта является не то, сколько всего изучили учащиеся, а то, сколько представителей половых, этнических и социоэкономических групп пришли на мероприятие и намерены проводить обучение информатике на всех местах. Миллионами доходов и учащихся было принято решение перейти за один час, и они получили весь день, всю неделю или больше. Многие студенты решили начать обучение, связанное с этой специализацией, в колледже.
Помимо обучающихся, "учеником" можно считать самого учителя, который обретает уверенность в своих силах и в том, что он может преподавать информатику, даже не самое высокое образование по информатике. Десятки тысяч избранных продолжают обучение информатике, посещают курсы повышения квалификации или используют современные онлайн-курсы. Кроме того, Час кода помогает понять руководителям школы, что информатика — это то, что может быть интересно учащимся и преподавателям.
Таким образом, всего за один час все участники могут понять, что они на это собирают.
Как мне продолжить читать после Часа кода?
Провести Час кода может кто угодно и в любое время. Уроки распространены для общего пользования круглый год. Вы можете быть уверены, что материалы на сайте всегда доступны. Просмотрите наши ресурсы, чтобы ознакомиться с мероприятиями по поиску и другим ресурсам, которые успешно проводятся.
Это простая цель карьерного роста, но цель "стать крутым программистом" непростая. Во-первых, высказывание «Я хочу стать лучше» предполагает, что вы понимаете, как выглядит «лучше». Кроме того, слишком многие люди стремятся к совершенствованию, не зная, как этого добиться.
Итак, позвольте мне поделиться восемью полезными рекомендациями, которые могут служить блок-схемой для улучшения ваших навыков программирования. Эти лакомые кусочки мудрости собраны за 35 лет работы в компьютерной индустрии, многие из которых были проведены в качестве скромного кузнечика у ног некоторых людей, которые определили и задокументировали ее.
1. Напомните себе, как многому вам еще предстоит научиться
Первым шагом в изучении чего-либо является признание того, что вы этого не знаете. Это звучит очевидно, но опытные программисты помнят, сколько времени ушло на преодоление этого личного предположения. Слишком много студентов, изучающих компьютерные науки, заканчивают обучение с высокомерной бравадой «я знаю лучше всех», с твердой уверенностью в том, что они знают все, и с острой потребностью доказать это каждому новому коллеге по работе. Другими словами: «Я знаю, что делаю!» отношение может помешать изучению чего-либо нового.
2. Перестаньте пытаться доказать свою правоту
Чтобы стать великим, а не просто хорошим, нужно учиться на собственном опыте. Но будьте осторожны, опыт может научить нас повторять плохое поведение и создавать плохие привычки. Мы все сталкивались с программистами с восьмилетним стажем. тот же год опыта, повторенный восемь раз. Чтобы избежать этого синдрома, смотрите на все, что вы делаете, и спрашивайте себя: «Как я могу сделать это лучше?»
Начинающие разработчики программного обеспечения (и слишком многие опытные) смотрят на свой код, чтобы восхититься его чудесами. Они пишут тесты, чтобы доказать, что их код работает, а не пытаться сделать так, чтобы он не работал. По-настоящему великие программисты активно ищут свои ошибки, потому что знают, что рано или поздно пользователи обнаружат недочеты, которые они упустили.
3. «Код работает» — это не то, на чем вы останавливаетесь; это то, с чего вы начинаете
Да, первым шагом всегда является написание качественного программного обеспечения, соответствующего спецификации. Обычные программисты в этот момент бросают работу и переходят к следующему.
Остановиться после того, как все «сделано», — это все равно, что сделать снимок и ожидать, что он станет произведением искусства. Великие программисты знают, что первая итерация — это всего лишь первая итерация. Это работает — поздравляю! — но это еще не все. Теперь улучшите его.
Часть этого процесса заключается в том, чтобы определить, что значит «лучше». Стоит ли делать это быстрее? Легче документировать? Более многоразовый? Более надежный? Ответ зависит от приложения, но не от процесса.
4. Напишите это три раза
Хорошие программисты пишут работающее программное обеспечение.Великие пишут программы, которые работают исключительно хорошо. Такое редко случается с первой попытки. Лучшее программное обеспечение обычно пишется трижды:
- Во-первых, вы пишете программное обеспечение, чтобы доказать себе (или клиенту), что решение возможно. Другие могут не понять, что это всего лишь проверка концепции, но вы понимаете.
- Во второй раз у вас все получится.
- В третий раз все работает правильно.
Этот уровень работы может быть неочевидным, если посмотреть на работу лучших разработчиков. Все, что они делают, кажется таким блестящим, но чего вы не видите, так это того, что даже разработчики рок-звезд, вероятно, выбросили первую и вторую версии, прежде чем показать свое программное обеспечение кому-либо еще. Отбросив код и начав заново, вы можете включить его в свой рабочий процесс.
По крайней мере, "Напиши это трижды" научит вас тому, как много способов решить проблему. И это не дает вам застрять в колее.
5. Читать код. Читать много кода
Вероятно, вы ожидали, что я буду давать этот совет. Действительно, это самый распространенный и самый ценный совет по улучшению навыков программирования. Что менее очевидно, так это причины, по которым так важно читать чужой код.
Когда вы читаете чужой код, вы видите, как кто-то решил проблему программирования. Но не относитесь к этому как к литературе; Думайте об этом как об уроке и вызове. Чтобы стать лучше, спросите себя:
- Как бы я написал этот блок кода? Что бы вы сделали по-другому теперь, когда увидели другое решение?
- Чему я научился? Как я могу применить эту технику к коду, который я написал в прошлом? («Я бы никогда не подумал использовать здесь рекурсивный спуск…»).
- Как мне улучшить этот код? И если это проект с открытым исходным кодом, и вы уверены, что у вас есть лучшее решение, сделайте это!
- Пишите код в авторском стиле. Практикуя это, вы сможете проникнуть в мысли человека, написавшего программу, что улучшит вашу эмпатию.
Не думайте об этих шагах праздно. Запишите свои ответы, будь то в личном журнале, блоге, в процессе проверки кода или на форуме сообщества с другими разработчиками. Точно так же, как объяснение проблемы другу может помочь вам найти решение, запись вашего анализа и обмен им могут помочь вам понять, почему вы реагируете на код другого человека определенным образом. Все это часть того самоанализа, о котором я упоминал ранее, который помогает вам беспристрастно судить о своих сильных и слабых сторонах.
Предупреждение. Читать много кода, не становясь великим программистом, легко, так же как начинающий писатель может читать великую литературу, не улучшая свою прозу. Многие разработчики смотрят на программное обеспечение с открытым исходным кодом или другое программное обеспечение, чтобы «найти ответ» и, скорее всего, копируют и вставляют код, который, кажется, решает аналогичную проблему. Это может фактически сделать вас хуже программистом, поскольку вы слепо принимаете чужую мудрость, не исследуя ее. (Кроме того, это может быть глючнее, чем летний пикник, но поскольку вы не нашли время, чтобы понять это, вы никогда не узнаете, что только что импортировали фабрику жуков.)
6. Пишите код, а не только как задания
Работа над личными проектами по программированию имеет много преимуществ. Во-первых, это дает вам возможность изучить инструменты и технологии, которые недоступны на вашей текущей работе, но которые делают вас более привлекательным для следующей работы. Независимо от того, участвуете ли вы в проекте с открытым исходным кодом или работаете на безвозмездной основе в местной общественной организации, вы приобретете технические навыки и уверенность в себе. (Кроме того, ваши личные проекты демонстрируют потенциальным работодателям, что вы умеете начинать самостоятельно и никогда не прекращаете учиться.)
Еще одно преимущество написания кода для развлечения заключается в том, что он заставляет вас разбираться во всем самостоятельно. Вы не можете переложить трудные задачи на кого-то другого, так что это убережет вас от обращения за помощью слишком рано.
Совет: не выбирайте только личные проекты, в которых вы никогда не потерпите неудачу. Вам нужно потерпеть неудачу! Но вы, вероятно, не хотите потерпеть неудачу на работе или когда у вас есть крайний срок.
7. Работайте один на один с другими разработчиками любым удобным для вас способом
Полезно слушать других людей. Это может означать парное программирование, участие в хакатоне или присоединение к группе программистов. Когда вы участвуете в проекте с открытым исходным кодом, обратите внимание на отзывы, которые вы получаете от пользователей и других разработчиков.Что общего вы видите в их критике?
Возможно, вам повезет найти личного наставника, которому вы можете доверять, и он поможет вам во всем, от методов программирования до карьерных решений. Не упускайте эти возможности.
8. Изучайте техники, а не инструменты
Языки программирования, инструменты и методологии приходят и уходят. Вот почему стоит получить как можно больше опыта с максимально возможным количеством языков и фреймворков. Сосредоточьтесь на основах программирования, потому что основы никогда не меняются; уделяйте больше внимания архитектуре, чем программированию. Если вы уверены, что есть только один правильный способ сделать что-то, вероятно, пришло время проверить реальность. Догмы могут помешать вам учиться новому и замедлить вашу адаптацию к изменениям.
Я мог бы продолжать, но ключевой принцип самосовершенствования — знать, когда остановиться.
Дальнейшие шаги
Хотели бы стать лучшим программистом JavaScript? Прочтите «10 способов стать лучшим программистом JavaScript» и улучшите свои навыки программирования.
Вы также можете сделать следующие шаги в своем пути к программированию и узнать о DevOps и наблюдаемости:
Если вы хотите попробовать более практичный подход и научиться использовать наблюдаемость в своих собственных приложениях, зарегистрируйте бесплатную учетную запись New Relic One.
Дхавал Шах
Десять лет назад такие университеты, как Массачусетский технологический институт и Стэнфорд, впервые открыли бесплатные онлайн-курсы для широкой публики. Сегодня около 1000 школ по всему миру создали тысячи бесплатных онлайн-курсов.
Я составил этот список из 720+ таких бесплатных онлайн-курсов, которые вы можете начать в этом месяце. Для этого я использовал базу данных Class Central, содержащую более 50 000 онлайн-курсов. Я также включил среднюю оценку каждого курса.
Домашняя страница Class Central
Я отсортировал эти курсы по следующим категориям в зависимости от уровня сложности:
- Новичок
- Средний
- Дополнительно
Курсы, предлагаемые впервые, помечаются как [НОВЫЕ].
Многие из этих курсов предназначены для самостоятельного изучения. Остальные начнутся в разное время в течение года. Вы можете найти полные списки курсов, связанных с технологиями, которые начнутся позже в 2022 году, на страницах Class Central по информатике, науке о данных и программированию.
Я понимаю, что это длинный список, и он может быть пугающим для новичков в программировании. В этом случае вам могут пригодиться рекомендации Дэвида Вентури по лучшим онлайн-курсам по науке о данных, даже если вы не хотите изучать науку о данных. Я надеюсь создать больше таких руководств в будущем.
И, наконец, если у вас возникли проблемы с тем, как зарегистрироваться на бесплатные курсы Coursera, не беспокойтесь — я написал статью о том, как это сделать.
Читайте также: