HOWPROGRAMMINGWORKS Telegram 1153
Расскажу, как я придумал учить начинающих программировать: исходим из того, что главные навыки это чтение кода и написание такого кода, который хорошо читается, это основной критерий качества, а значит и учить нужно не столько писать, как читать и исправлять.

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

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

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

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

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

Ну и снижение языкового фанатизма достигается параллельным изучением с самого начала трех языков и переводами с одного на другой. Между JavaScript и Python переводить очень просто, ну C++ посложнее, но эти три языка, какие бы они ни были, нельзя не включить в курс.

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

Снижение парадигмального фанатизма - заставлять комбинировать процедурное, функциональное, ООП, реактивное и автоматное программирование, показать: как эта комбинация позволяет упростить паттерны и принципы из GoF и SOLID.

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

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



tgoop.com/HowProgrammingWorks/1153
Create:
Last Update:

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

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

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

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

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

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

Ну и снижение языкового фанатизма достигается параллельным изучением с самого начала трех языков и переводами с одного на другой. Между JavaScript и Python переводить очень просто, ну C++ посложнее, но эти три языка, какие бы они ни были, нельзя не включить в курс.

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

Снижение парадигмального фанатизма - заставлять комбинировать процедурное, функциональное, ООП, реактивное и автоматное программирование, показать: как эта комбинация позволяет упростить паттерны и принципы из GoF и SOLID.

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

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

BY HowProgrammingWorks - JavaScript and Node.js Programming


Share with your friend now:
tgoop.com/HowProgrammingWorks/1153

View MORE
Open in Telegram


Telegram News

Date: |

"Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn. The visual aspect of channels is very critical. In fact, design is the first thing that a potential subscriber pays attention to, even though unconsciously. ‘Ban’ on Telegram How to create a business channel on Telegram? (Tutorial) Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link).
from us


Telegram HowProgrammingWorks - JavaScript and Node.js Programming
FROM American