О том как уроки программирования помогают понять природу достижения поставленных целей
Еще в первый год обучения я взял 6.009 (теперь уже 6.101) Fundamentals of Programming.. Несмотря на безобидное название, курс — самая настоящая прожарка, которая полностью тебя ломает, но если ты сможешь собрать себя заново, ваша жизнь разделяется на «до» и «после».
Потом весной 2020 и вот теперь еще в этом семестре я подрабатываю Lab Assistant на этом курсе. Моя задача прорешивать programming assignments (которые называются лабами, hence the name) до того как они выдаются студентам, а потом помогать с выполнением во время Office Hours.
Так вот, опыт помощи с программированием в рамках класса, который берет 300-500 студентов это прям чуть ли не аккуратная модель всей жизни. Настоятельно рекомендую попробовать — после этого у вас вообще не останется никаких вопросов о том почему кто-то может и достигает чего-то, а кто-то нет. И вряд ли вы позволите себе обманывать себя мыслями «вот я работаю, работаю, а ничего не получается». Просто потому, что вы увидите как это «работаю, работаю» выглядит со стороны.
Пара примеров. Вы удивитесь как много людей элементарно не умеют или не хотят читать. Пожалуй на полном серьезе можно сказать, что умение читать является сильнейшим фактором, позволяющим предсказать оценку за курс. И я не говорю о каких-то скрытых приемах чтения, речь просто о том, чтобы прочитать каждое предложение и понять его смысл (а не пробежаться глазами, ничего не понять, начать сразу кодить, застрять, а потом ныть о том, что задание сложное).
Это, кстати, забавно. С кем не поговори, со стороны все рациональные: ну как можно начинать выполнять задание не прочитав инструкцию? И тем не менее, процентов 30 взаимодействий со студентами ограничивались тем, что я открывал инструкцию на сайте и говорил: прочитай, пожалуйста, вот этот параграф вслух.
С умением читать по своей предсказательной способности сравнится только готовность продумывать свои действия прежде, чем бежать их выполнять. Некоторые любят подшучивать над студентами, кто делает письменные заметки по программированию, но в других 30% случаев ошибка возникает из-за того, что у студента нет никакого плана, нет понимания общей картины, и он даже не старается ее сформулировать, а тупо сразу начинает кодить. А если что-то не работает, вместо того, чтобы вернуться к планированию, начинаются механические попытки добавить/убрать единицу там или тут, изменить indentation, добавить какую-нибудь неосмысленную команду.
А вот те, кто перед написанием кода нарисует схемки, разберет несколько простых примеров, напишет план — заканчивают задание сильно быстрее и сильно с меньшим количеством багов.