Есть вечная двойственность в продвинутом обучении программированию...
С одной стороны, мы можем сперва мощно прокачивать свою базу (базу в смысле Старкрафта/Варкрафта :), а затем выполнять молниеносный успешный раш вообще на любую проблему. Например прокачавшись как следует в профильной математике, в том же функциональном комбинировании -- развив пресловутое сильное рациональное мышление -- мы будем видеть любые повседневные архитектурные схемы как задачки для третьего класса, которые решаются просто в режиме непрерывного набора идеально работающего кода (Make Illegal States Unrepresentable) даже без особого думания на медленном мышлении S2 по Канеману. Главный минус -- для этого требуется существенное время, и имеет ли ради этого жертвовать несколькими годами карьеры, вопрос открытый.
На другом конце спектра раньше был такой тупой хак, что можно было отшлифовать один стек -- даже один фреймворк, даже его конкретную версию -- не умея особо кодить (физически не умея решать задачки уровня инвертирования связного списка), и влететь в айти. Теперь он к счастью сдулся, хотя совсем не исключено, что с явлением вайб-кодинга снова возродится.
Противоположное Computer Science сегодня -- это когда надо хорошо знать System Design, но тоже больше на уровне "зазубрить шаблоны" и скомбинировать десяток "квадратиков" на диаграмме (и хорошо ещё, если это C4). Уметь красиво рассказать на собесе "как написать свой нетфликс", для чего достаточно изучить три гайда (но технические знания конечно должны быть на уровне). Главный минус -- в результате имеем совсем узенькое системное мышление, крайне хрупкое понимание, сразу ломается на новом проекте, где на 15% другой стек, даже CRUD фиг перенесёшь. Но зато быстро.
=
Ну, так-то меня интересуют исключительно ментаты Лаборатории, есть хорошее понимание уровня их понимания, и их нужды. Тут моя задача конкретная:
повысить производственное мастерство x10..x100, не прокачивая скиллы.
База в cs конечно нужна, но тут вполне достаточно 3-4 первых треков второй части Лаборатории. Более теоретические темки буду постепенно добавлять однозначно (языки вроде Lean4 всё же тяжеловато ребятам осваивать, если в хороших университетах не обучались... хотя вот в SMT-солверы с моего гайда въезжают только так практически все :), но пожалуй
будет мудрее всё же придерживаться подхода, когда всю математику прячем под капотом, даём только соответствующие паттерны, которые надо просто брать и тупо применять (и, да, они могут выглядеть весьма странно и контринтуитивно).
И вот тут стоит добавить два уровня пояснения (опционально!): первый - это какой в них смысл с точки зрения функционального проектирования, что за функциональные паттерны, и второй - а как вообще эта механика устроена детально/формально - на теорем-прувере вроде Lean, или в гомотопической теории.
Post #2047
725

- ⚡ 30
- ❤ 16
- 👍 8
- ✍ 2