메뉴
HN
Hacker News • 4시간 전

LLM 시대에도 프로그래밍의 즐거움을 지키는 법

IMP
6/10
핵심 요약

Haskell 개발자가 AI로 인한 번아웃과 코딩 기술 상실 우려 속에서, LLM을 완전히 의존하지 않으면서도 적절히 활용해 생산성을 높이는 방향을 제시하는 글입니다. 코드베이스의 주인으로 남으려면 직접 코드를 계속 작성해야 하며, 생성된 코드 검토의 지옥에 빠지지 않는 전략이 필요하다고 강조합니다.

번역된 본문

LLM 시대에 프로그래밍 즐거움을 지키는 방법

turion, 2026년 9월 18일 오전 9:56

AI 번아웃으로 향해 가고 계신가요? 프로그래밍 실력은 거의 없고 품질에 대한 열망도 없으면서 Claude 계정만 크게 갖고 있는 사람에게 직업을 빼앗길까 두렵나요? 프로젝트의 코드 품질에, 혹은 더 나쁘게는 '당신 자신'의 코드 품질에 실망하고 있나요? 이 글은 그런 여러분을 위한 것입니다.

빅테크 기업들이 운영하는 프론티어 LLM에는 중대하고 정당한 윤리적 우려가 있으며, 이는 이미 충분히 논의되었습니다. 저도 그 우려를 알고 동의합니다. 이 글은 그런 이야기가 아닙니다. 저를 친(親) LLM 테크브로로 오해하지 말아 주세요. 또한, 제 글이 LLM이 생성한 것으로 오해받은 적이 있어서 말씀드리자면, 이 글은 AI 도움 없이 100% 사람이 직접 쓴 것입니다.

거대 기계 속의 영혼들

Sean McMullen의 이 제목의 훌륭한 책이 있어서 십대 시절 즐겨 읽었는데, 언뜻 보면 우리 상황과 정반대를 묘사합니다. 개별 구성 요소가 인간이고, 그 인간들이 모여 하나의 계산 장치를 이루는 거대한 컴퓨터 이야기입니다. 반면 LLM은 실제 컴퓨터 위에서 돌아가며 (초)인간인 척합니다. 하지만 다시 들여다보면 이야기와 현실이 그리 다르지 않습니다. 소프트웨어 생산 과정에서 우리의 역할은 주체자(행위자)에서 기계의 톱니바퀴로 서서히 강등되고 있습니다. 명세(spec) 주도의 디스토피아는 이렇습니다. 명세를 넘겨받아 LLM에 밀어 넣고, 기술봉건 영주가 토큰을 덜 배급하기로 결정하면 토큰이 떨어져 울고 있는 우리의 모습.

저는 Haskell 프로그래머로서 Haskell을 쓰는 것을 즐깁니다. 물론 직장에서 만드는 제품을 좋아하고, 제 오픈소스 라이브러리로 할 수 있는 일들을 좋아하지만, 정말 즐기는 것은 이 언어로 생각을 표현하는 과정 자체입니다. 대부분의 독자분들도 그럴 거라고 생각하고, 다른 많은 언어에서는 그렇지 않을 거라고 가정합니다. 이것이 어느 정도는 다양한 프로그래밍 언어 애호가들이 LLM 보조 미래를 얼마나 밝게 혹은 어둡게 보는지에 대해 서로 다른 의견을 갖는 이유를 설명해 줍니다.

코드를 생성하면 그 즐거움의 상당 부분이 위험에 빠집니다. 그러니, 하지 마세요, 아마도요.

저는 (적어도 즐거운 부분은) Haskell 프로그램을 계속 직접 작성하고 싶고, (너무 많은) 생성된 코드를 읽고 검토하고 싶지 않습니다. 동시에, 뇌를 서서히 갉아먹지 않으면서 토큰을 유용하게 쓰고 싶습니다. 프로그래밍의 즐거움을 지키면서 동시에 LLM으로 적당히 생산성을 높이는 방법을 보여드리고 싶습니다. 겉보기에 훨씬 생산적인 것처럼 보이지만 모든 즐거움을 잃는 것이 아니라요. LLM을 완전히 끊는 것(abstinent)을 원하신다면 그것도 훌륭하며, 이미 무엇을 하고 있는지 알고 계실 겁니다. 하지만 그러고 싶지 않은 이유가 있을 수 있습니다. 예를 들어 실제로 실질적인 생산성 향상을 보여줘야 하거나, 팀, 회사, 업계 전체가 LLM을 대대적으로 도입하는 흐름 속에서 뒤처지고 싶지 않은 경우죠.

계속 코드를 작성하라

코드베이스의 주인으로 남고 싶다면, 코드를 계속 직접 작성해야 합니다. 전부 생성하게 두면 코드베이스는 코딩 에이전트만 활개 칠 수 있는 LLM 황무지로 변할 것입니다. 그러니 계속 코드를 작성하세요. 그렇지 않으면 결국 코드베이스를 잃게 됩니다.

코드를 계속 작성해야 하는 또 다른 이유는 좋은 프로그래머로 남기 위해서입니다. 기술은 연습하지 않으면 상실될 수 있으며, 코딩 작업을 포기하고 에이전트에게 넘기는 문턱이 정말 낮기 때문에 여기서는 그 위험이 특히 큽니다. 코딩을 하지 않고 모든 것을 에이전트에게 맡긴 지 몇 주만 지나도 직접 코딩으로 돌아가기 어려워지는 것을 스스로 느끼게 될 것입니다.

LLM은 광고만큼 좋고 사람이 읽기 쉬운 코드를 만들지 못합니다. LLM 자신이 이후에 단독으로 작업할 코드를 만드는 데는 그럭저럭 괜찮습니다. 하지만 어딘가에 분명 버그가 있을 완전히 생성된 파일을 보며, 그 낯선 풍경 때문에 인간으로서 도저히 버그를 찾을 수 없을 것 같은 절망을 이미 경험해 보셨을 겁니다.

그렇다면 에이전트에게 코딩을 맡기지 않고 어떻게 생산성 향상을 얻을 수 있을까요? 만들기를…

원문 보기
원문 보기 (영어)
How to keep enjoying programming in a world of LLMs Uncategorized turion September 18, 2026, 9:56am 1 Are you steering towards AI burnout? Afraid of loosing your job to someone with little programming skills, no aspirations to quality, and a huge Claude account? Disappointed about the code quality in your projects, or worse in “your” own code? This is for you. There are significant and legitimate ethical concerns about frontier LLMs run by big tech companies, these have been discussed at length, I’m aware and agree, this post is not about them. Please don’t mistake me for a pro-LLM techbro. Also: Since people have mistaken my texts for LLM-generated before, I’ll tell you that it is 100% human written without any AI-assistance. Souls in the Great Machine There is a great book of this title by Sean Mcmullen that I enjoyed reading as a teenager, and at the first glance it describes the opposite of our situation: A big computer where the individual components are human, and work together to form a calculating unit. On the other hand, LLMs are themselves running on actual computers and pretending to be (super-)humans. At a second glance, story and reality are not so far apart though: Our role in the process of producing software is being degraded slowly from being actors to cogs in a machine. The spec-driven-dystopia is that we just get handed down some spec, hammer it into the LLM, and weep when our tokens run out because a technofeudal lord decided to hand out fewer of them. As a Haskell programmer, I enjoy writing Haskell . Yes, I like the product we make at work a lot, I like what you can do with my open source libraries, but I really enjoy just the process of expressing my thoughts in this language. I’m assuming this to be true for most of you, and also it not to be true in many other languages, which explains to some amount why enthusiasts of different programming languages have different opinions on how bright or dark the LLM-assisted future is. When I generate code, a lot of that enjoyment is at risk . So, don’t, maybe. I want to keep writing (at least the enjoyable parts of) Haskell programs, and not having to read and review (too much) generated code. At the same time, I want to put those tokens to some good use that doesn’t slowly burn my brain away. I want to show you a way to keep enjoying programming, and at the same time becoming moderately more productive with LLM, instead of appearing to be much more productive and losing all the joy. If you want to just be LLM-abstinent, that’s great as well, and you already know what you’re doing. But there might be reasons you don’t want to be, e.g. you actually need to bring some real productiveness gain to the table, or you don’t want to be left behind while the rest of your team, your company, your industry, is moving towards heavy LLM adoption. Keep writing code If you want to keep owning your codebase, you need to keep writing some code. If you let it all be generated, it will turn into an LLM wasteland that only your coding agents can thrive on. So you should keep writing code, otherwise your codebase will eventually be lost. Another reason to keep writing code is to keep being a good programmer. Skills can be lost by not practising, and here the risk is particularly high because there is a really low threshold to giving up your coding work and hand it to an agent. After just a few weeks of not coding and handing everything to agents you’ll notice that you have a hard time returning to coding yourself. LLMs are way worse at producing good, human-readable code than advertised. They are somewhat ok at producing code they themselves later work on exclusively. But I’m sure you’ve already experienced the despair of looking at a completely generated file that must contain a bug somewhere, and your perceived inability as a human to find it yourself, because the landscape is just so alien. So how to get to those productivity gains if not by letting agents do the coding? By making them do nearly everything else. Especially the boring work that is a nuisance to you. Ideally those tasks that are not too hard to get right, and easy to check. Planning Since the earliest history of computers, they’ve been always used as bookkeeping tool. Use LLMs that way. Amongst other things, it’s a bookkeeping tool that you can address in natural language instead of a formal interface. Convert a huge written conversation between domain experts into actionable todos. Test something, write down the test results, let it organise them into a plan how to fix the defects. Use tools like a todo tool, or better even markdown files with frontmatter to make it track planning items properly. LLMs can have a huge context, but still if it is too full it can silently lose information. But don’t let it make any crucial decisions. Make it ask you. If you don’t understand the question, it’s the LLMs fault not to give you the relevant context (or you might be exhausted and need a break). If you return to the same issues again and again, take a step back from the screen and think about it yourself, and return when you have a clear picture of what you want. Researching When you give a researching task to an agent, it’s tempting to watch it querying and “thinking”, to kick off some other agent in another project, or to make a coffee. Of these three, making the coffee is the best option. The one better option is: Research yourself in parallel using a good ol’ search engine. At least roughly know everything the agent will know. Don’t just let it research something, accept its results as facts and plan from there. This will lead to embarrassing technical dept. The point of making an agent research is not for it to present all the relevant knowledge to you, or make a better decision than you could have made. The point is that you don’t have to go “Let Me Google That For You” on it. You should understand the domain you’re modelling as good as the agent does, ideally even better. Make your agents write down their research results somewhere, with links to their used resources. When it comes back to you later and presents you with a weird proposal, ask it about what the research says and which resource says so. 50% chance says it will discover its own mistake. In the other 50%, read it, now you’re in a position to make a good decision yourself. You are the coder This is the game changer. The typical coding harnesses lure you into “plan first, then let the agent code”. Refuse. Plan together, but then you code. Tell the LLM to research your code base, let it tell you the current todo and bring up all the places you need to edit, make it mention potential pitfalls, let it remind you of relevant background research. I work with this workflow, and it is a lot of fun. I’m enjoying my work. Sometimes even more than before LLMs. I always have a clear todo, I don’t need to worry about the overall plan, I can focus, I’m done with the todo quickly because it is well-planned. It’s like agile but without all the annoying processes. Make the agents group around your way to work, not the other way around. Maybe you’re an experienced programmer who already knows how you work best. Let the agents do all the incidental work around you that you enjoy less. There are multiple advantages to this workflow: You keep doing what you enjoy. If you like programming, do it. You always know what state your code base is in. Been surprised by some weird generated stuff coming from your own vibe coding sessions? Needed to rewrite LLM slop? Lost track of where you are in a session? This way you never have to again. You discover a bad plan early. An agent coder might just go on forever with something that you’ll recognize very quickly as a bad idea. You keep honing your skills. Obviously. You’ll stay a good programmer, or even go on improving. Rare cases when a coding agent is useful Ideally for cleanup, small tasks, routine work, low-risk refactorings. You left FIXMEs in your code (