TGViewer
HowProgrammingWorks - JavaScript and Node.js Programming HowProgrammingWorks - JavaScript and Node.js Programming @howprogrammingworks · 6.52K subscribers
Post #1153 5.86K
Расскажу, как я придумал учить начинающих программировать: исходим из того, что главные навыки это чтение кода и написание такого кода, который хорошо читается, это основной критерий качества, а значит и учить нужно не столько писать, как читать и исправлять.

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

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

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

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

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

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

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

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

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

Я уже собираюсь переписывать свои лекции и примеры кода. Те, что сейчас - не годятся, сильно сложно.
More from @howprogrammingworks
  1. Oct 9, 2026Если взять одно, что я хочу в JavaScript, то это будет Block Expression. При чем в V8 все…
  2. Oct 7, 2026Post #2189
  3. Oct 6, 2026Post #2188
  4. Oct 4, 2026На кого учиться, если все профессии отберут роботы? Где пределы экспансии искусственного и…
  5. Oct 4, 2026Объем текста и объем кода должны заставлять нас не махнуть рукой, а заставлять ии делать м…
  6. Oct 3, 2026https://youtu.be/I5ILntVSjkQ
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →