Как учить программирование — метод автора

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

Суть

Программирование молодое (~80 лет), за это время не сложились единые методы обучения. У всех языков и стран разные подходы. Главное — не учить «правильно» с первого раза, а строить навык дифференциации решений.

Главный принцип

«Учить не парадигмой, а навыком мышления и оценки.»

Декарт для программистов

  • Открыть «Рассуждение о методе»
  • В голове заменять «математика»/«наука» на «программирование»
  • Классические методы мышления работают
  • Декомпозиция, абстракция, последовательность — оттуда

Программирование как лингвистика

  • Не математика и не парадигмы
  • Особая форма общения друг с другом
  • Нужны Хомский и Витгенштейн (а не Дейкстра)
  • Культура мышления через язык
  • В философии этого нет — нужно самим

Топология вместо диффуров

  • Диффуры на практике не пригодятся 99% разработчиков
  • Топология помогает понять зацепление модулей
  • Теория графов — для связности кода
  • Нужен инструмент мышления каждый день

Роль преподавателя

  • Важнее программы — плохой препод убьёт любую программу
  • Главное — не убить интерес
  • На первом курсе подавай предмет с любовью
  • На третий раз чтения предмета уже хорошо
  • Не читать один предмет больше 3 раз — оно мертвеет

Метод обучения

  • Подбадривать, не давить — атака → защита плохого кода
  • Самокритика автора — лучше внешней критики
  • Хвалить, но подводить к выводам — не льстить
  • Личный пример — критичен к своему коду
  • Доброжелателен к чужому коду (закон Постела)

Парадокс критичности

  • Слишком сильная самокритика → бесконечный рефакторинг
  • «Теперь знаю как лучше» → начать с нуля
  • Колебания должны сходиться — амплитуда уменьшается
  • Это переходный процесс

Цикл обучения по автору

  1. Получить навык писать «как-то»
  2. Самокритика — увидеть проблему
  3. Переосмыслить, написать чуть лучше
  4. Цикл повторяется
  5. Каждые 3-4 года — полный пересмотр

Где и чему учить (предложение а)

  • Программная инженерия — общие навыки, не язык
  • Парадигмы программирования — несколько, для дифференциации
  • Структуры данных и алгоритмы — обзорно, не зубрить
  • Computer Science — паттерны, SOLID, GRASP, DDD
  • Архитектура — слои, абстракции, моделирование
  • Сети и протоколы — фундамент
  • Базы данных — моделирование, не SQL-синтаксис

Антипаттерны обучения

  • Учить «правильно» сразу
  • Одна парадигма как «единственно верная»
  • Зубрить термины и определения
  • Давить и унижать («негативная фиксация»)
  • Учить только под собес
  • Не обновлять знания

🎓 Источники

  • 🎓 [🧑‍🎓 Как научить программиста включать мозг] + Брагилевский · 2025-11-27 · YouTube
    • Тезисы: нельзя сразу правильно; Декарт через замену слов; топология вместо диффуров; программирование как лингвистика; роль преподавателя
  • 🎓 [💡 Про педагогику и образование] · 2025-02-21 · YouTube
    • Тезисы: подбадривать; самокритика > внешняя; парадокс критичности; сходящийся процесс
  • 🎓 [🎈 Программирование — это удовольствие] · 2025-12-02 · YouTube
    • Тезисы: культура мышления; токсичность изживать; негативная фиксация
  • 🎓 [🎧 Карта специальности инженер-программист] · 2018-09-20 · YouTube