메뉴
HN
Hacker News • 10일 전

LLM 시대에 프로그래밍을 배운다는 것

IMP
6/10
핵심 요약

베테랑 개발자 마크 시만이 독자의 질문에 답하며, AI 도움으로 자신이 이해할 수 없는 수준의 시스템을 만들어버린 문제를 다룹니다. AI로 무언가를 만들 수 있는 것과 그것을 진정으로 소유하고 이해하는 것 사이의 격차가 핵심 쟁점입니다. 저자는 LLM이 프로그래머 일자리를 없애기 전에 다른 화이트칼라 직종을 없앨 수 있으며, 대량 실업이 지식 기반 사회에 미칠 영향을 경제학자의 관점에서 경고합니다.

번역된 본문

마크 시만(Mark Seemann)의 'LLM 시대에 프로그래밍 배우기' — 독자의 편지에 대한 공개 답변.

최근 한 독자가 LLM이 활개치는 이 시대에 프로그래밍을 배우는 것에 대해 많은 질문을 담은 긴 편지를 보내왔다. 몇 차례 서신을 주고받은 후, 공개적으로 답변을 시도하기 위해 그 편지를 길게 인용할 수 있는 허락을 받았다. 내 답변 중 그 어떤 것도 특별히 엄밀하다고 생각하지 않는다. 상황이 너무 불확실해서 나는 최선을 다해 답할 수 있을 뿐이며, 그것이 어떤 불변의 진리라고 주장하지는 않는다.

"AI를 깊이 이해하는 소프트웨어 사람들이 이 시대의 학습과 역량에 대해 어떻게 생각하는지 이해하려고 합니다. 거의 역사학자처럼 접근하고 있어요. 기술적 전환을 실제로 겪으며 살아가는 사람들에게 직접 어떻게 의미를 부여하는지 묻는 것이죠.

약 1년 전 AI 보조 프로그래밍에 매료됐습니다. 정식 컴퓨터 과학(CS) 배경이 없음에도, LLM을 활용해 API, PostgreSQL, LLM 파이프라인, 리서치 자동화, 멀티 모델 워크플로우를 포함하는 꽤 큰 규모의 TypeScript/JavaScript 시스템을 구축했습니다. 처음엔 거의 마법처럼 느껴졌습니다. 아이디어를 갖는 것과 그것을 만들 수 있는 것 사이의 거리가 AI로 인해 사라지는 것 같았어요.

하지만 지금 그 시스템을 실제 프로덕션 제품으로 만들려고 애쓰고 있는데, 어렵습니다. AI로 한 오류를 고치면 다른 오류가 나타나고, 또 다른 부분이 제가 완전히 이해하지 못하는 방식으로 작동합니다. 몇 달간 리팩토링을 하다 불편한 깨달음에 도달했습니다. 제 자신의 이해 수준을 넘어서는 시스템을 만들어버렸을지도 모른다는 것이죠. 모든 게 잘 작동할 때 그 격차는 거의 보이지 않습니다. 작동하지 않을 때는 아주 현실적으로 다가옵니다.

때로는 다른 모델에게 묻지 않으면 다음에 뭘 해야 할지 정말 모를 때가 있습니다. 그래서 문득 궁금해졌습니다. 저는 1년 동안 제품을 만든 걸까요, 아니면 제품처럼 '보이는 것'을 부분적으로 만든 걸까요? 작동할 만큼 정교하지만, 진정으로 소유할 만큼 깊이 이해하지 못하는 무언가를요.

저는 절대 반(反)AI가 아닙니다. 이 시스템들에 매료됐고 전문적으로 함께 일하고 싶습니다. 하지만 이들과의 올바른 관계가 무엇인지 확신이 서지 않습니다."

솔직히 나도 확실하지 않다. 계속하기 전에 내 입장을 밝히는 것이 가장 투명한 방식이라고 생각한다. 나는 아직 AI에 대한 최종 입장을 정하지 않았지만, 그것이 멈출 수 없을 수도 있다는 것을 충분히 알면서도 싫어하는 쪽으로 기우는 편이다. 나는 AI로 작업하고 실험하며, 종종 감탄하게 된다. 다른 순간에는 좌절한다. 가장 인상적일 때 가장 크게 원망하는 것 같다. 형편없을 때는 답답할 수 있지만, 적어도 내가 30년 넘게 배워온 것이 여전히 의미 있다는 환상 속에서 따뜻한 불씨 정도는 얻을 수 있다. 최고의 모습을 보일 때는 이렇게 생각할 때가 있다. 버틀러리안 지하드(Butlerian jihad, 소설 '듄'의 기계 파괴 성전) 어디서 신청하나?

LLM에 대한 내 입장은 부분적으로 내 사회경제적 지위에 기반한 것이다. 나는 충분히 나이가 들었고 이미 어느 정도 성공을 거두었기에, 다른 조건이 같다면 실업을 견딜 수 있다. 반면 지식 기반 사회 전체가 그럴 수 있을지는 확실하지 않다. LLM이 다른 화이트칼라 일자리를 없애기 전에 프로그래머 일자리를 없앨 수도 있다. 프로그래밍은 검증(verification)이 예컨대 보험 청구 관리보다 쉬운 분야일 수 있기 때문이다. 그래도 지식 노동자들의 대량 실업에 도달한다면, 우리가 아는 사회가 살아남을 수 있을지 모르겠다.

보통 경제학자로서의 내 배경에 대해 잘 이야기하지 않지만, 이 맥락에서는 언급할 필요가 있다고 본다. 경제학자로서 30~40%의 대량 실업이 경제에 상당한 영향을 미치지 않을 것이라고는 상상할 수 없다. '이런 일이 과거에도 있었다'는 주장을 고통스럽게도 잘 알고 있다. 일자리는 사라질 수 있지만, 기술의 발전은 오늘날 상상조차 못할 새로운 일자리를 만들어낸다는 것이다. 편직기(스타킹 제조기), 증기 기관, 내연 기관, 컴퓨터 등의 도입 때도 그랬다. 이건 부분적으로만 사실이다. 그렇다, 새로운 일자리는 생겨났다. 하지만 종종 그 일자리를 잃은 사람들에게 돌아가지는 않았다. 탄광 노동자들이 하룻밤 사이에 프로그래머가 된 것은 아니었다. 같은 종류의...

원문 보기
원문 보기 (영어)
On learning programming in an age of LLMs by Mark Seemann Open answers to a reader's letter. A reader recently wrote me a long letter with lots of questions about learning programming in this age of LLMs. After a bit of back-and-forth, I got permission to quote extensively from the letter in order to attempt some answers in public. None of my answers I consider particularly rigorous; the situation is so uncertain that I can only answer to the best of my abilities, but I don't claim them to hold any kind of immutable truth. "I'm trying to understand how people who deeply understand software think about learning and competence in the age of AI. I'm approaching it almost as a historian would: asking people directly how they make sense of a technological transition while actually living through it. "About a year ago I became fascinated by AI-assisted programming. Despite having no formal CS background, with LLMs I managed to build a fairly large TypeScript/JavaScript system involving APIs, PostgreSQL, LLM pipelines, research automation and multi-model workflows. At first it felt almost magical: AI seemed to collapse the distance between having an idea and being able to build it. "But now I'm trying to turn that system into a real production product, and I'm struggling. I fix one error with AI, then another appears, then another part behaves in a way I don't fully understand. After months of refactoring I had an uncomfortable realization: I may have built a system that is above my own level of understanding. When everything works, that gap is almost invisible. When it doesn't, it becomes very real. "Sometimes I genuinely don't know what to do next without asking another model. That made me wonder whether I spent a year building a product, or partly building the appearance of one: something sophisticated enough to work, but which I don't yet understand deeply enough to truly own. "I'm not anti-AI at all. I'm fascinated by these systems and want to work with them professionally. But I'm unsure what the right relationship with them should be." Indeed, I'm not sure either, but before proceeding, I find it most transparent to reveal my position. I haven't yet decided on AI, but I lean toward disliking it , knowing full well that it may be unstoppable. I do work and experiment with it, and it often impresses me. At other times, it frustrates me. It's usually when it impresses me the most that I resent it maximally. When it's bad, it can be frustrating, but then at least I can absorb an ember of warmth in the illusion that what I've spent more than thirty years learning is still relevant. When it's at its best, I sometimes think: Where do I sign up for the Butlerian jihad ? My position on LLMs is only partly based on my own socio-economic status. I'm old enough, and have had enough success already, that all other things being equal, I can survive unemployment. I'm not sure, on the other hand, than any knowledge-based society can. It may be that LLMs will take programmer jobs before they take other white-collar jobs. After all, programming may be a discipline where verification is easier than, say, insurance claims management. Still, if we reach a point of mass unemployment among knowledge workers, I'm not sure society as we know it will survive. I usually don't talk much about my background as an economist, but in this context I find it relevant to mention. As an economist, I can't imagine that mass unemployment of 30-40% will not have a significant impact on the economy. I'm painfully aware of the arguments that this has happened before: There may be job loss, but the advance of technology leads to new jobs we can't even imagine today. It was like that with the introduction of the stocking frame , the steam engine, the internal combustion engine, computers, etc. This is only partly true: Yes, new jobs were created, but often not for those people who lost their jobs. Coal miners didn't just become programmers overnight. The same kind of argument was used when China was admitted to the World Trade Organization . And indeed, lots of new jobs were created, just not in the Western world. So, based on lived and historical experience, I'm sceptical of arguments that all will be fine. But I sincerely hope that I'm wrong. I love to program, and wouldn't mind doing it for another ten years. Perhaps more importantly, I have young adult children. I hope that there's a world for them, too. "So I'd really like to know how you think about this. Are you glad you learned programming fundamentals before LLMs existed? If you were starting today, would you still seriously study languages, data structures, databases, networking, operating systems, debugging and architecture? Do you think AI can let people become capable of building much faster than they become capable of understanding?" Am I glad that I learned programming before LLMs? Yes, of course. Those skills served me well for thirty years. If I was starting today, I'd seriously consider learning carpentry, metalworking, gun-smithing, or something else that requires hand-eye coordination. I know that advances are made in robotics, too, but replacement of manual labour seems to lie farther in the future. But to address the question: I am, personally, currently learning data structures, language semantics, etc. as part of a university programme. I do that because I'm curious, however, and not because I expect to get much monetary reward out of it. Do I think that AI enables people to develop faster than they can keep up? This remains to be seen. Software developers have already, for decades, been working on top of abstractions they didn't understand. If you were a web developer, you didn't know much about compiler programming. If you were a compiler programmer, you didn't know much about integrated circuit design. And if your job was to engineer integrated circuits, you wouldn't know much about the levels of abstraction above you. A good rule of thumb was: Understand the level of abstractions directly below the one you work in, as well as the one above. That would enable you to troubleshoot most problems. "And how do you personally deal with that? When AI can solve something immediately, how do you decide when to use it and when to work through the problem yourself? If you were in my position, with a substantial AI-built project but weak foundations underneath it, would you step back and systematically learn those foundations, keep building and learn as problems appear, or combine the two?" That's two radically different questions, because I no longer have a weak foundation in software development. Even if I were dealing with something far from what I usually do, I can ramp up leveraging what I already know. Let's imagine that someone tasked me with maintaining an application written exclusively in RISC-V assembly code. That's the most alien software environment I can imagine for myself. Adapting to such a development environment would be difficult for me, but still not as difficult as it would be for someone new to programming in general. Believe it or not, I have written small exercise programs in RISC-V, as well as an exercise compiler that compiled to RISC-V. But what if I had virtually no software background? Well, once upon a time, I was in exactly that situation. When I started my career, for years I balanced a knife's edge of getting things done while learning on the job. Beginning in 1999, I wrote COM components in C++ , not understanding much of what I was doing. Somehow, I still made it work, even to a degree that I managed to eliminate any obvious memory leaks. I was, however, never happy just slapping things together without understanding how they worked. So I did, as suggested by the question, step back to systematically learn fundamentals . This worked well for a career launched in the mid 1990s. Will it work well today? I'm not so sure: Reaching a level of competency high enough to recognize your past confiden