Марк Симан об изучении программирования в эпоху LLM

· 1 мин чтения
llm opinion learning software-engineering ai-coding

Марк Симан (Mark Seemann), автор блога ploeh и книги «Code That Fits in Your Head», опубликовал ответы на длинное письмо читателя. Автор письма — человек без формального CS-образования, который за год с помощью LLM построил довольно большую систему на TypeScript/JavaScript: API, PostgreSQL, LLM-пайплайны, мульти-модельные воркфлоу. Сначала это казалось магией, но при попытке довести систему до продакшена начались проблемы: один чинится — ломается другое, и часть кода ведёт себя непонятным образом.

Ключевое признание читателя:

Возможно, я построил систему выше моего собственного уровня понимания. Когда всё работает, этот разрыв почти невидим. Когда не работает — становится очень реальным.

Позиция автора

Симан честно раскрывает свою позицию: он ещё не решил окончательно, но склоняется к неприязни к AI, признавая, что процесс, возможно, неудержим. Он работает и экспериментирует с LLM, и они его нередко впечатляют — но именно тогда, когда они впечатляют сильнее всего, он ненавидит их максимально. В его формулировке: когда LLM плохи, можно греться иллюзией, что тридцать лет опыта ещё актуальны; когда они хороши — хочется записаться в бутлерианский джихад.

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

Стоит ли учить основы сегодня

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

Но Симан не драматизирует и сам вопрос. Разработчики десятилетиями работали поверх абстракций, которых не понимают: веб-разработчик не знает внутренностей компилятора, разработчик компилятора — проектирования микросхем. Рабочее правило звучало так:

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

Можно ли ускорить обучение

Читатель спрашивает: стоит ли ему отступить и системно выучить основы или продолжать строить, учась по ходу. Симан напоминает, что сам когда-то был в похожей ситуации: с 1999 года он писал COM-компоненты на C++, не понимая многого из того, что делал, — и всё же добивался результата, вплоть до отсутствия явных утечек памяти. Но его не устраивало собирать вещи вслепую, поэтому он отступил и системно выучил основы.

Сработало ли бы это сегодня? Он не уверен. Достичь уровня компетентности, на котором собственная прежняя самоуверенность распознаётся как донышко кривой Даннинга — Крюгера, у него ушли десятилетия. Есть ли сегодня столько времени?

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

Как он учится и как задаёт вопросы LLM

Короткий ответ на вопрос «как вы учились программировать»: медленно, методом проб и ошибок, иногда с книгой. Первые проекты — расчёт бифуркационных диаграмм и аттрактора Лоренца для магистерской по экономике, написанные на QBasic по примерам из поставки. В 1990-е и 2000-е он учился в основном по документации и примерам кода. Книгами же он обязан F# и Haskell — и вообще активно учится по книгам до сих пор.

Сегодня, повидав десятки языков, новый язык он подхватывает чтением существующего кода. Но это работает только для «нормальных» языков: возвращаться к APL пришлось бы с туториалом.

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

  • «Можно сделать это Haskell-выражение короче?» — ответ либо работает, либо нет; он короче или нет. Легко проверить.
  • «Что мне учить дальше?» — проверяемого ответа не даёт. Такие вопросы он LLM не задаёт.

Итоговый принцип: задавать LLM фальсифицируемые вопросы.

Зачем это читать

Письмо читателя — почти хрестоматийная ситуация 2026 года: человек построил работающий продукт быстрее, чем понял, как он устроен, и теперь решает, что с этим делать. Ответ Симана не даёт рецепта — он честно говорит, что сам не знает правильного ответа, — но полезно очерчивает рамку: разрыв между «уметь построить» и «уметь понять» существовал всегда, просто LLM радикально его расширили. А правило с фальсифицируемыми вопросами — конкретный практический вывод, применимый вне зависимости от вашего отношения к AI.

Источник: https://blog.ploeh.dk/2026/09/16/on-learning-programming-in-an-age-of-llms/