메뉴
HN
Hacker News 30일 전

AI 시대의 소프트웨어 엔지니어링

IMP
7/10
핵심 요약

AI가 코드 작성을 주도하게 되면서 소프트웨어 엔지니어의 역할은 직접 코드를 짜는 '창작자'에서 AI가 생성한 코드를 검토하고 수정하는 '감독관' 및 '편집자'로 변화했습니다. 특히 시니어 개발자는 AI를 훌륭하지만 시스템 전체를 보지 못하는 주니어 개발자처럼 취급하며, 법적 문제나 보안, 시스템 아키텍처 충돌 등을 방지하기 위해 철저한 검증과 교정 작업을 수행해야 합니다.

번역된 본문

AI 시대의 소프트웨어 엔지니어링 (2026년 6월 28일)

여러분 중 모르시는 분들을 위해 말씀드리자면, 제가 소설을 쓰지 않을 때는 소프트웨어 엔지니어로서 코드를 작성하며 하루를 보냅니다. 요즘 소프트웨어 산업은 인공지능에 크게 의존합니다. AI는 수조 줄에 달하는 공개된 소스 코드를 학습했고, 코드는 테스트를 통해 옳고 그름을 명확히 증명할 수 있는 방식으로 문제를 해결하며, 컴퓨터가 이해할 수 있도록 특정 구조를 갖추고 있기 때문에 코드 작성에 매우 능해졌습니다.

프로그래머들이 AI를 사용하기 전의 전형적인 업무 흐름은 이랬습니다. 누군가 기존 프로그램에 새로운 기능을 추가해 달라고 요청합니다. 개발자는 그 기능이 무엇을 해야 하고(혹은 하지 말아야 하고), 사용자가 어떻게 접근할 수 있으며, 제대로 작동하는지 어떻게 테스트할지 설명하는 공식적인 명세를 작성합니다. 그런 다음 이 기능을 구현하는 데 가장 적합한 데이터 구조, 알고리즘, 코드 라이브러리 및 외부 서비스가 무엇일지 조사하는 데 시간을 씁니다. 이어서 새로운 기능을 구축할 코드, 예상대로 작동하는지 확인할 테스트 코드, 그리고 사용자에게 사용법을 알려주고 다른 엔지니어들이 향후 유지보수 및 디버깅을 위해 알아야 할 사항을 적은 문서를 작성합니다. 마지막으로 조직 내 다른 엔지니어들에게 새 코드를 검토하고 의견을 달라고 요청하며, 궁극적으로 제품에 적용할 수 있도록 승인을 받기 위해 '풀 리퀘스트(Pull Request)'를 생성합니다.

이제 AI가 꽤 괜찮은 품질의 코드를 일관성 있게 생산해낼 수 있게 되면서, 소프트웨어 개발자의 업무 흐름은 다음과 같이 변했습니다. 개발자는 AI에게 새로운 기능을 만들어 달라고 요청하는 프롬프트를 작성합니다. AI가 작성한 결과물을 검토하면서 적절하다고 생각하는 부분은 직접 수정하거나, AI 에이전트에게 대신 수정해 달라고 요청합니다. 그런 다음 새 코드를 직접 기존 코드베이스에 병합하거나, 다른 누군가가 검토하고 병합할 수 있도록 풀 리퀘스트를 생성합니다.

과거의 업무 방식에서는 창의적인 과정이 대부분 개발자의 머릿속에서 일어났습니다. 하지만 새로운 프로세스에서는, 개발자는 AI의 내부적인 연산 과정 속에서 전개되는 창의적 과정을 '감독'하게 됩니다. AI가 작업을 시작할 수 있도록 간결하고, 사려 깊고, 정확한 프롬프트를 만드는 데는 어느 정도 노력을 기울이지만, 예전처럼 직접 코드를 작성하며 해야 했던 고된 사고 과정은 더 이상 거치지 않습니다.

AI로부터 전달받은 코드를 다룰 때, 개발자는 본질적으로 '편집자' 역할을 하게 됩니다. AI가 코드를 작성할 수는 있지만, 개발자처럼 프로젝트의 전체적인 큰 그림을 항상 볼 수 있는 것은 아니기 때문입니다. 따라서 이 새로운 코드가 문제를 일으키지 않을지 확인해야 합니다. AI는 자신이 방금 추가한 코드가 제품이 준수해야 할 법적 규제를 위반하는지 알지 못합니다. 외부 시스템에 보내는 요청을 처리하는 데 10밀리초가 걸릴지 10분이 걸릴지도 알지 못합니다. 코드의 동작이 3주 뒤에 팀 동료가 추가할 새로운 기능과 충돌할지 여부도 모릅니다. 또한 방금 작성한 함수가 지난달에 직접 작성했던 민감한 정보를 처리하는 다른 함수와 상호 작용할 때 새로운 보안 문제를 일으킬지에 대해서도 알지 못합니다. 시니어 개발자는 이러한 사항들을 잘 알고 있으며, 이것이 바로 겉보기에는 '그냥 잘 작동하는' 것처럼 보이는 AI 코드를 엄격하게 검토하고 종종 수정해야만 하는 이유입니다.

시니어 개발자에게 AI는 유능하고 일 처리가 빠른 주니어 또는 미드 레벨 개발자와 같습니다. 적절히 지시만 하면 대체로 훌륭한 결과물을 내놓지만, 과거 20년 동안 시니어 개발자가 쌓아온 조직 내 지식 및 깊고 폭넓은 시스템 수준의 지식은 결여되어 있습니다.

이제 잠시 뒤로 물러나 비유를 하나 들어보겠습니다. 여러분이 역사 소설 작가라고 가정해 봅시다. 작가의 업무 방식은 어떤 모습일까요? 아마도 대략 이런 식일 것입니다. 1760년 런던의 성 바울 대성당 밖에서 두 정치가가 논쟁을 벌이는 장면을 상상합니다. 이 장면을 정확하게 묘사하기 위해 알아야 할 정보들, 즉 복장, 거리의 분위기, 정치적 상황 등을 고려합니다. 그런 다음 몇 권의 책을 펴고 다음과 같은 사항들에 대해 노트를 작성하기 시작합니다. (본문 생략)

원문 보기
원문 보기 (영어)
Software Engineering in the Age of AI June 28, 2026 For those of you who don’t know, when I’m not writing novels, I spend my days as a software engineer, writing code. The software industry these days relies heavily on artificial intelligence. Because it has studied trillions of lines of publicly accessible source code, because code solves problems with testable right and wrong solutions, and because code is structured specifically to be understood by computers, AI has gotten very good at writing code. Before programmers started using AI, a typical workflow looked like this: Someone asks you to add a feature to an existing program. You write up a formal definition of that feature describing what it should (and should not) do, how users can access it and how to test that it’s working correctly. You spend time researching which data structures, algorithms, code libraries and external services might serve best to implement this feature. You write the code to build the new feature, the tests to make sure it works as expected, and the documentation telling users how to use it and telling other engineers what they’ll need to know to maintain and debug it. You create a “pull request,” asking other engineers in your organization to review and comment on your new code, and ultimately to approve it for use in the product. Now that AI can consistently produce pretty good code, the software developer’s workflow looks like this: You write a prompt asking AI to create the new feature. You review what the AI wrote, making changes as you see fit or asking the AI agent to make those changes for you. You either merge the new code into the existing codebase yourself, or you create a pull request for someone else to review and merge it. In the old workflow, the creative process happened mostly in your mind. In the new process, you supervise the creative process that unfolds inside the AI’s internal machinations. You’ve put some effort into creating a concise, thoughtful, accurate prompt to get the AI started on its work, but you haven’t done any of the hard thinking you would normally do in writing the code yourself. When you get code back from the AI, you’re essentially acting as an editor because, while AI can write code, it cannot always see the big picture of your project the way you can, and you need to make sure this new code won’t cause problems. AI does not know whether the code it just added violates some legal requirement to which your product is subject. It does not know if the request it makes to an external system is going to take ten milliseconds or ten minutes to fulfill. It does not know whether the actions of its code will conflict with some new feature that you know your teammates will be adding three weeks from now. It does not know whether the function it just wrote might introduce a new security problem when interacting with another function you wrote last month that handles sensitive information. A senior developer does know these things, and this is why he or she needs to vet and often correct the AI code that appears to “just work.” To a senior developer, AI is a competent, fast-working junior or mid-level developer that, when properly directed, produces mostly solid work but lacks the institutional knowledge and the deep and broad systems-level knowledge that you have developed over the past twenty years. Now, let’s back up for a second and make an analogy. Let’s say you’re a writer of historical novels. What does your workflow look like? Probably something like this: You picture a scene in which two statesmen are arguing outside St. Paul’s Cathedral in London in 1760. You consider what you need to know to write this scene accurately, including clothing, the atmosphere on the street and the political situation. You crack open a number of books and start taking notes on the following, among other things: Based on their socioeconomic positions and their roles in society, what would your characters be wearing? Who else is on the street with them? Vendors? Cabbies in horse-drawn carriages? What did those look like? Were the chimney sweeps out at that time of day? What about prostitutes and law officers? Who are the primary political figures about whom your characters argue, and what are their positions at the moment? What historical events from recent weeks or months are relevant, and how will they influence your characters’ argument? You go back to your writing, weaving the historical facts into a scene that you spin from imagination. The novelist and the software developer have a lot in common here. In reality, the novelist will have done much of her historical research before she begins writing, just as the software developer already knows from years of prior work which data structures and algorithms and which types of caches and databases will be suitable for the new feature he’s about to write. What both workers have in common is a deep feeling of engagement with the material they’re creating. They are entirely immersed in their work, to the point where they often lose track of time. In both novel writing and software development, it’s common for me and many of my peers to check the clock, dive into a problem, and then look at the clock ten minutes later to discover that four hours have passed. This is the state of “optimal experience” that psychologist Mihaly Csikszentmihalyi described in his bestselling 1990 book, Flow . Writers, software developers, painters, musicians and all other creative types enter this state when time and circumstances permit. Many software engineers work after hours at home precisely because the lack of meetings and other interruptions outside normal business hours permit them to enter this state. Now, let’s put the historical novelist in the position of the software developer. She gets a call from her publisher saying they’ve found a way for her to bring four books to market each year instead of one book every two years. They’ve recruited a bunch of top-notch high school and college students who can each crank out five pages a day of competent writing for dirt cheap. The publisher wants the historical novels to maintain the original writer’s level of excellence, or to at least be close, so they’re retaining her services as an editor. The novelist’s job is now to edit the work of the students, each of whom has been carefully prompted to write pages that should, with a little work, be stitched together into coherent chapters. Anyone who has ever graded the work of high school and college kids knows that this is generally not rewarding work. If you’ve ever had to grade a hundred papers in a week, you know what a grind that is. The novelist, like the software engineer, is no longer deeply engaged in her work. Editing is not creating. You do not give yourself over to your imagination. You do not immerse your mind and feelings in the process of invention. Instead, you’re rooting out problems, trying to clean up clumsy wording and redundant descriptions instead. The flow state is gone. You are now a cog in a larger process that doesn’t really value your creativity or your need to exercise it. Worse still–and I have felt this personally after months of reviewing AI-generated code–your skills drop off sharply. When a new issue arises–a feature to be implemented, or a tricky bug to fix–the idea of wasting several hours on it feels insulting. Why should I dig through all that code when Claude can locate the bug in five minutes and start drafting a fix? Why indeed? Why should you or I invest mental energy in something we used to actually like doing, something that now feels like a chore, when the bot can do it for us? Months of working with AI have made me noticeably lazier and stupider, at least when it come