Кирилл Мокевнин: джунов учат писать код, а надо учить работать с неопределённостью

Автор: Кирилл Мокевнин · TechLead Channel

Кирилл Мокевнин — основатель Hexlet, образовательной платформы для разработчиков. Он не просто учит программировать — он годами наблюдает, где люди застревают, и думает о том, чему именно нужно учить. Доклад на TechLead Conf.

Название доклада намеренно отсылает к «Гарри Поттеру и методам рационального мышления» — книге о применении научного мышления к реальным задачам. Мокевнин идёт тем же путём: берёт «Прагматичного программиста» Ханта и Томаса и разбирает, что за этим словом стоит на практике. Вывод неудобный: большинство обучающих материалов учат решать задачи с известным правильным ответом — алгоритмы, паттерны, синтаксис. Реальная работа — это задачи с неизвестным правильным ответом, где нужно выбрать направление при неполных данных, попробовать, получить обратную связь и скорректироваться. Этот навык почти нигде не преподают явно — и именно поэтому технически грамотные разработчики застревают на одном уровне годами.

Ценный угол: Мокевнин смотрит на обучение не теоретически, а через реальные данные — он видит, где именно тысячи студентов Hexlet теряются.

Кому смотреть: разработчикам, которые чувствуют, что технических знаний уже достаточно, но чего-то важного всё равно не хватает — и не могут точно назвать, чего.

Из этого можно взять в работу: найди задачу, которую откладываешь из-за «недостаточно знаю». Запиши письменно, что именно ты не знаешь. Скорее всего обнаружишь, что это не вопрос знаний, а вопрос принятия решения с неполной информацией — а это совсем другая проблема.

Мокевнин начинает с диагноза образования: разработчиков учат решать задачи с известным правильным ответом. Алгоритмы, паттерны, синтаксис — у всего есть «верное» решение. Реальная работа устроена иначе: задача часто плохо сформулирована, требования меняются, правильного ответа не существует до тех пор, пока ты его не выберешь и не проверишь. Это другой навык, и его не тренируют.

Прагматизм в его понимании — три вещи одновременно. Первое: честность о том, что знаешь и что нет. Опытные разработчики быстро говорят «я не знаю» — и это точность, а не слабость. Начинающие тратят время, притворяясь, что понимают больше. Второе: ориентация на результат, а не на инструмент. Прагматик не влюбляется в технологию — он спрашивает, решает ли она задачу. Третье: дешёвое экспериментирование. Маленькие, быстро проверяемые шаги вместо больших долгих ставок.

Про Hexlet: платформа построена на идее, что программирование — это навык работы с абстракциями, а не запоминание API. Поэтому много практики через REPL и маленькие задачи с немедленной обратной связью. Мокевнин объясняет, что это не педагогический приём — это следствие того, как устроено человеческое обучение. Обратная связь должна быть быстрой, иначе связь между действием и результатом не формируется.

Про карьерный рост: Junior знает, как написать функцию. Senior знает, нужно ли её вообще писать. Карьерный рост разработчика — это не про количество известных технологий, а про умение работать с неопределённостью, с людьми и с большими системами, где никто не знает всего целиком.