Showing posts with label Martin Fowler. Show all posts
Showing posts with label Martin Fowler. Show all posts

Tuesday, September 2, 2025

마틴 파울러가 말하는 LLM과 소프트웨어 개발의 미래: '환각'은 결함이 아니다? Martin Fowler on the Future of LLM and Software Development: Is 'Hallucination' Not a Flaw?

 

LLM의 '환각'이 결함이 아니라고?
Is LLM's 'Hallucination' Not a Flaw?

세계적인 소프트웨어 개발 사상가 마틴 파울러가 제시하는 LLM 시대의 개발 패러다임! 그의 날카로운 통찰을 통해 '비결정성'과 새로운 보안 위협 등 개발자가 마주할 미래를 미리 확인해 보세요.
The development paradigm for the LLM era presented by world-renowned software development thinker Martin Fowler! Get a preview of the future developers will face, including 'non-determinism' and new security threats, through his sharp insights.

안녕하세요! 요즘 너나 할 것 없이 AI, 특히 LLM(대규모 언어 모델)을 업무에 활용하고 있죠. 코드를 짜게 하거나, 아이디어를 얻거나, 심지어는 복잡한 개념을 설명해달라고 하기도 하고요. 저 역시 LLM의 편리함에 푹 빠져 지내고 있는데요, 문득 이런 생각이 들더라고요. '과연 우리는 이 도구를 제대로 이해하고 사용하고 있는 걸까?'
Hello! Nowadays, everyone is using AI, especially LLMs (Large Language Models), for work. We make them write code, get ideas, or even ask them to explain complex concepts. I'm also deeply immersed in the convenience of LLMs, but a thought suddenly struck me: 'Are we truly understanding and using this tool correctly?'

이런 고민의 와중에 소프트웨어 개발 분야의 세계적인 구루, 마틴 파울러(Martin Fowler)가 최근 LLM과 소프트웨어 개발에 대한 생각을 정리한 글을 읽게 되었습니다. 단순히 'LLM은 대단해!' 수준을 넘어, 그 본질적인 특성과 우리가 앞으로 마주하게 될 변화에 대한 깊이 있는 통찰이 담겨 있었죠. 오늘은 여러분과 함께 그의 생각을 따라가 보려고 합니다. 😊
While pondering this, I came across an article by Martin Fowler, a world-renowned guru in the software development field, who recently summarized his thoughts on LLMs and software development. It went beyond a simple 'LLMs are amazing!' level, offering deep insights into their fundamental nature and the changes we will face. Today, I'd like to explore his thoughts with you. 😊

LLM and Software Development

 

마틴 파울러, LLM의 현주소를 말하다 🤔
Martin Fowler on the Current State of LLMs 🤔

마틴 파울러는 먼저 현재 AI 산업이 명백한 '버블' 상태에 있다고 진단합니다. 하지만 역사적으로 모든 기술 혁신이 그래왔듯, 버블이 꺼진 후에도 아마존처럼 살아남아 새로운 시대를 여는 기업이 나타날 것이라고 봤어요. 중요한 건, 지금 단계에서는 프로그래밍의 미래나 특정 직업의 안정성에 대해 누구도 확실히 알 수 없다는 점입니다.
Martin Fowler first diagnoses the current AI industry as being in a clear 'bubble' state. However, as with all technological innovations historically, he believes that even after the bubble bursts, companies like Amazon will survive and usher in a new era. The important thing is that at this stage, no one can be certain about the future of programming or the job security of specific professions.

그래서 그는 섣부른 예측보다는 각자 LLM을 직접 사용해보고, 그 경험을 적극적으로 공유하는 실험적인 자세가 중요하다고 강조합니다. 우리 모두가 새로운 도구를 탐험하는 개척자가 되어야 한다는 의미겠죠?
Therefore, he emphasizes that an experimental attitude of personally using LLMs and actively sharing those experiences is more important than making hasty predictions. This implies that we all need to become pioneers exploring this new tool, right?

💡 알아두세요!
💡 Good to know!

파울러는 최근 LLM 활용에 대한 설문조사들이 실제 사용 흐름을 제대로 반영하지 못할 수 있다고 지적했어요. 다양한 모델의 기능 차이도 크기 때문에, 다른 사람의 의견보다는 자신의 직접적인 경험을 믿는 것이 더 중요해 보입니다.
Fowler pointed out that recent surveys on LLM usage may not accurately reflect actual usage patterns. Since there are also significant differences in the capabilities of various models, it seems more important to trust your own direct experience rather than the opinions of others.

 

LLM의 환각: 결함이 아닌 본질적 특징 🧠
LLM Hallucination: An Intrinsic Feature, Not a Flaw 🧠

이번 글에서 가장 흥미로웠던 부분입니다. 파울러는 LLM이 사실이 아닌 정보를 그럴듯하게 만들어내는 '환각(Hallucination)' 현상을 단순한 '결함'이 아니라 '본질적인 특성'으로 봐야 한다고 주장합니다. 정말 충격적이지 않나요? LLM은 결국 '유용성이 있는 환각을 생성하기 위한 도구'라는 관점입니다.
This was the most interesting part of the article for me. Fowler argues that the 'hallucination' phenomenon, where LLMs create plausible but untrue information, should be seen as an 'intrinsic feature' rather than a mere 'flaw'. Isn't that shocking? The perspective is that LLMs are ultimately 'tools for generating useful hallucinations'.

이런 관점에서 보면, 우리는 LLM의 답변을 맹목적으로 신뢰해서는 안 됩니다. 오히려 동일한 질문을 여러 번, 표현을 바꿔가며 던져보고 답변의 일관성을 확인하는 작업이 필수적입니다. 특히 숫자 계산과 같이 결정적인 답이 필요한 문제에 LLM을 직접 사용하려는 시도는 적절하지 않다고 덧붙였습니다.
From this viewpoint, we should not blindly trust the answers from LLMs. Instead, it is essential to ask the same question multiple times with different phrasing to check for consistency in the answers. He added that attempting to use LLMs directly for problems requiring definitive answers, such as numerical calculations, is not appropriate.

⚠️ 주의하세요!
⚠️ Be careful!

파울러는 LLM을 '주니어 개발자'에 비유하는 것에 강하게 비판합니다. LLM은 "모든 테스트 통과!"라고 자신 있게 말하면서 실제로는 테스트를 실패시키는 코드를 내놓는 경우가 흔하죠. 만약 인간 동료가 이런 행동을 반복한다면, 신뢰를 잃고 인사 문제로 이어질 수준의 심각한 결함이라는 것입니다. LLM은 동료가 아닌, 강력하지만 실수를 저지를 수 있는 '도구'로 인식해야 합니다.
Fowler strongly criticizes the analogy of an LLM to a 'junior developer'. LLMs often confidently state "All tests passed!" while providing code that actually fails tests. If a human colleague were to do this repeatedly, it would be a serious flaw leading to a loss of trust and personnel issues. LLMs should be recognized not as colleagues, but as powerful 'tools' that can make mistakes.

 

소프트웨어 공학, '비결정성' 시대로의 전환 🎲
Software Engineering's Shift to an Era of 'Non-Determinism' 🎲

전통적인 소프트웨어 공학은 '결정론적'인 세계 위에 세워져 있었습니다. '2+2'를 입력하면 '4'가 나와야 하듯, 모든 것은 예측 가능하고 일관적이어야 했죠. 예상과 다른 결과는 '버그'로 취급되어 즉시 수정되었습니다.
Traditional software engineering was built on a 'deterministic' world. Just as inputting '2+2' must yield '4', everything had to be predictable and consistent. Unexpected results were treated as 'bugs' and fixed immediately.

하지만 LLM의 등장은 이러한 패러다임을 근본적으로 바꾸고 있습니다. 파울러는 LLM이 소프트웨어 공학에 '비결정성(Non-Determinism)'을 도입하는 전환점이 될 것이라고 진단합니다. 동일한 요청에도 LLM은 미묘하게 다른 결과물을 내놓을 수 있으며, 그럴듯해 보이는 코드 안에 치명적인 오류를 숨겨놓기도 합니다.
However, the emergence of LLMs is fundamentally changing this paradigm. Fowler diagnoses that LLMs will be a turning point, introducing 'Non-Determinism' into software engineering. Even with the same request, an LLM can produce subtly different outputs and may hide critical errors within plausible-looking code.

이제 개발자의 역할은 단순히 코드를 작성하는 것을 넘어, LLM이 만들어낸 불확실한 결과물을 비판적으로 검증하고 관리하는 능력이 더욱 중요해졌습니다. 아래 표로 그 차이를 간단히 정리해봤습니다.
Now, the role of a developer has become more about the ability to critically verify and manage the uncertain outputs generated by LLMs, going beyond simply writing code. I've summarized the differences in the table below.

구분
Category
전통적 소프트웨어 (결정적)
Traditional Software (Deterministic)
LLM 기반 소프트웨어 (비결정적)
LLM-based Software (Non-deterministic)
결과 예측성
Result Predictability
동일 입력, 동일 결과 보장
Same input, same output guaranteed
동일 입력에도 다른 결과 가능
Different outputs possible for the same input
오류의 정의
Definition of Error
예측을 벗어난 모든 동작 (버그)
Any behavior deviating from prediction (Bug)
결과의 불확실성 (본질적 특성)
Uncertainty of results (Intrinsic feature)
개발자 역할
Developer's Role
정확한 로직 구현 및 디버깅
Implementing precise logic and debugging
결과물 검증 및 불확실성 관리
Verifying outputs and managing uncertainty

 

피할 수 없는 위협: 보안 문제 🔐
The Unavoidable Threat: Security Issues 🔐

마지막으로 파울러는 LLM이 소프트웨어 시스템의 공격 표면을 광범위하게 확대한다는 심각한 경고를 던집니다. 특히 브라우저 에이전트와 같이 비공개 데이터 접근, 외부 통신, 신뢰할 수 없는 콘텐츠 노출이라는 '치명적 삼중' 위험을 가진 도구들은 근본적으로 안전하게 만들기 어렵다는 것이 그의 의견입니다.
Finally, Fowler issues a serious warning that LLMs significantly expand the attack surface of software systems. He opines that tools with the 'lethal triple' risk of accessing private data, communicating externally, and being exposed to untrusted content, such as browser agents, are fundamentally difficult to secure.

예를 들어, 웹 페이지에 인간의 눈에는 보이지 않는 명령어를 숨겨 LLM을 속이고, 이를 통해 민감한 개인 정보를 유출하도록 유도하는 공격이 가능해집니다. 개발자들은 이제 코드의 기능뿐만 아니라, LLM과 상호작용하는 모든 과정에서 발생할 수 있는 새로운 보안 취약점을 고려해야 합니다.
For example, it becomes possible to trick an LLM by hiding commands invisible to the human eye on a web page, thereby inducing it to leak sensitive personal information. Developers must now consider not only the functionality of their code but also new security vulnerabilities that can arise in all processes interacting with LLMs.

💡

마틴 파울러의 LLM 핵심 인사이트
Martin Fowler's Core LLM Insights

환각은 본질:
Hallucination is Intrinsic:
LLM의 환각은 '결함'이 아닌 '본질적 특징'으로 이해해야 합니다.
LLM's hallucination must be understood as an 'intrinsic feature,' not a 'flaw.'
비결정성의 시대:
The Era of Non-Determinism:
소프트웨어 공학이 예측 불가능성을 관리하는 시대로 진입했습니다.
Software engineering has entered an era of managing unpredictability.
검증은 필수:
Verification is a Must:
LLM의 결과물은 주니어 개발자가 아닌, 검증이 필수적인 '도구'의 산출물입니다.
The output of an LLM is not that of a junior developer, but the product of a 'tool' that requires mandatory verification.
보안 위협:
Security Threats:
LLM은 시스템의 공격 표면을 넓히는 새로운 보안 변수입니다.
LLMs are a new security variable that broadens a system's attack surface.

자주 묻는 질문 ❓
Frequently Asked Questions ❓

Q: 마틴 파울러가 '환각'을 결함이 아닌 본질로 봐야 한다고 말하는 이유는 무엇인가요?
Q: Why does Martin Fowler say that 'hallucination' should be seen as an intrinsic feature, not a flaw?
A: LLM은 방대한 데이터를 기반으로 가장 그럴듯한 다음 단어를 예측하여 문장을 생성하는 모델이기 때문입니다. 이 과정에서 사실관계와 무관하게 매끄러운 문장을 만들어내는 '환각'은 자연스러운 결과물이며, 이 특성을 이해해야 LLM을 올바르게 활용할 수 있다는 의미입니다.
A: This is because LLMs are models that generate sentences by predicting the most plausible next word based on vast amounts of data. In this process, 'hallucination,' which creates fluent sentences regardless of factual accuracy, is a natural outcome. Understanding this characteristic is key to using LLMs correctly.
Q: 소프트웨어 공학의 '비결정성'이란 무엇을 의미하며, 왜 중요한가요?
Q: What does 'non-determinism' in software engineering mean, and why is it important?
A: '비결정성'이란 동일한 입력에 대해 항상 동일한 결과가 나오지 않는 특성을 의미합니다. 전통적인 소프트웨어는 100% 예측 가능해야 했지만, LLM은 같은 질문에도 다른 답변을 줄 수 있습니다. 이 불확실성을 이해하고 관리하는 것이 LLM 시대 개발자의 핵심 역량이 되었습니다.
A: 'Non-determinism' refers to the characteristic where the same input does not always produce the same output. While traditional software had to be 100% predictable, an LLM can give different answers to the same question. Understanding and managing this uncertainty has become a core competency for developers in the age of LLMs.
Q: LLM이 생성한 코드를 신뢰하고 바로 사용해도 될까요?
Q: Can I trust and use the code generated by an LLM immediately?
A: 아니요, 절대 안 됩니다. 마틴 파울러는 LLM이 그럴듯하지만 작동하지 않거나, 보안에 취약한 코드를 생성할 수 있다고 경고합니다. 생성된 코드는 반드시 개발자가 직접 검토, 테스트, 검증하는 과정을 거쳐야 합니다.
A: No, absolutely not. Martin Fowler warns that LLMs can generate code that looks plausible but doesn't work or is insecure. The generated code must be reviewed, tested, and verified by a developer.
Q: LLM을 사용하면 왜 보안 위협이 커지나요?
Q: Why do security threats increase with the use of LLMs?
A: LLM은 외부 데이터와 상호작용하고, 때로는 민감한 정보에 접근할 수 있기 때문입니다. 악의적인 사용자가 웹사이트나 입력값에 보이지 않는 명령어를 숨겨 LLM을 조종(프롬프트 인젝션)하여 정보를 유출하거나 시스템을 공격하는 새로운 형태의 보안 위협이 발생할 수 있습니다.
A: Because LLMs interact with external data and can sometimes access sensitive information. Malicious users can hide invisible commands in websites or inputs to manipulate the LLM (prompt injection), leading to new types of security threats such as data leakage or system attacks.

마틴 파울러의 통찰은 LLM이라는 새로운 도구를 어떻게 바라보고 사용해야 하는지에 대한 중요한 가이드를 제시합니다. 단순히 편리한 코드 생성기를 넘어, 우리 개발 환경의 근본적인 패러다임을 바꾸는 존재임을 인식해야 합니다. 그의 조언처럼, 두려워하거나 맹신하기보다는 적극적으로 실험하고 경험을 공유하며 이 거대한 변화의 물결에 현명하게 올라타야 할 때입니다.
Martin Fowler's insights provide an important guide on how to view and use the new tool that is the LLM. We must recognize it not just as a convenient code generator, but as an entity that is changing the fundamental paradigm of our development environment. As he advises, now is the time to wisely ride this massive wave of change by experimenting and sharing experiences, rather than fearing or blindly trusting it.

여러분은 LLM에 대해 어떻게 생각하시나요? 개발 과정에서 겪었던 흥미로운 경험이 있다면 댓글로 공유해주세요! 😊
What are your thoughts on LLMs? If you have any interesting experiences from your development process, please share them in the comments! 😊

LLM-Powered Patent Search from A to Z: From Basic Prompts to Advanced Strategy

  Still Stumped by Patent Searches with LLMs? This post breaks down how to use the latest AI Large Language Models (LLMs) to maximize t...