Learning Programming in an Age of LLMs
Автор делится размышлениями о том, как меняется процесс обучения программированию в эпоху больших языковых моделей (LLM). Он отвечает на письмо читателя, который, несмотря на отсутствие формального образования в области CS, смог создать сложную систему на TypeScript/JavaScript с использованием LLM, но теперь сталкивается с трудностями при попытке превратить её в надёжный продукт. Читатель ощущает, что построил нечто, что работает, но не полностью понимает, и зависит от ИИ даже для базовых решений, что вызывает вопрос: действительно ли он владеет навыком или лишь создал иллюзию компетентности?
Автор признаёт, что сам не имеет чёткой позиции по поводу LLM, но склонен к скептицизму, несмотря на их полезность. Он отмечает, что когда LLM работают хорошо, это вызывает раздражение, поскольку ставит под сомнение ценность десятилетий накопленного опыта. Когда они ошибаются, хотя и раздражают, хоть что-то остаётся под контролем человека. Он связывает своё отношение не только с личным опытом, но и с экономическими рисками: если LLM вытеснят программистов раньше других профессий, это может привести к массовой безработице в знаниевой экономике, которую общество, возможно, не выдержит.
Что касается обучения, автор подчёркивает, что его собственный путь — через книги, документацию и примеры кода — сегодня неприменим для новичков. Он сам теперь может быстро осваивать новые языки, читая чужой код, но это возможно только благодаря глубокому фундаменту, построенному без ИИ. Для изучения чего-то действительно необычного, например, APL, всё равно нужны учебники. Он избегает использования LLM для открытых вопросов вроде «что изучать дальше?», предпочитая задавать только проверяемые, фальсифицируемые вопросы — например, можно ли сделать код короче — чтобы ответ можно было немедленно проверить на практике. В итоге он выступает за осознанное, критичное использование LLM: как инструмента для уточнения, а не замены понимания.