GN⁺: 채팅(Chat)은 개발 도구에 적합하지 않은 UI 패턴임
(danieldelaney.net)-
Chat은 개발 도구로서의 나쁜 UI 패턴임
- 코드가 인간에게 정확성을 요구하는 것은 좋음. 컴퓨터는 정확성을 필요로 하기 때문임
- 그러나 이는 인간이 기계처럼 생각하도록 강요함
- 수십 년 동안 프로그래밍을 더 인간 친화적으로 만들기 위해 노력했음. 고급 언어와 시각적 인터페이스가 그 예임
- AI는 이러한 문제를 해결할 것으로 기대되었음. 영어로 프로그래밍이 가능해질 것이라는 기대였음
-
AI 코딩 도구의 첫 번째 물결
- 첫 번째 AI 코딩 도구들은 기회를 낭비했음. 화려한 데모를 만들지만 쓸모없는 소프트웨어를 생산함
- “프로토타입 용도” 정도로만 언급되지만, 실제로 활용하기엔 정확도가 부족함
- 많은 사람들이 AI 모델을 비난하며 더 똑똑해져야 한다고 주장함
- 그러나 중요한 소프트웨어를 구축할 때는 추측이 아닌 명확한 이해가 필요함
-
소프트웨어 작성은 대화가 아님
- 소프트웨어 작성은 법률 작성과 같음. 영어를 사용하지만 용어를 정의하고 규칙을 설정하며 복잡한 상호작용을 관리함
- 채팅 메시지로 세금 코드를 작성할 수 없음. 문서가 필요함
- 문서는 복잡성을 조직화하고 특정 지점을 참조하며 체계적으로 변경 사항을 추적할 수 있게 함
-
문서 기반 프로그래밍의 중요성
- 의도가 문서에 있을 때 영어는 실제 프로그래밍 언어가 됨
- 전체 시스템을 한눈에 볼 수 있음
- 의도를 명확히 하고 개선할 수 있음
- 변경 사항을 적절히 추적할 수 있음
- 팀이 시스템을 함께 작업할 수 있음
- 요구 사항이 자체 품질 검사가 됨
- 변경 사항이 명확한 사양에서 시작됨
-
다음 단계 AI 개발 도구의 핵심
- 문서 기반으로 사용자 의도를 표현하고 관리하는 방식이 중요해짐
- 대화형 프로토타입이 아닌, 실제 소프트웨어 개발에 필요한 정밀함을 제공하는 도구가 필요함
- 이 관점을 제대로 도입하는 기업이 AI 개발 도구의 미래를 주도할 것임
Hacker News 의견
-
한 사용자는 o3-mini와 o3-mini-high를 사용하여 코드 생성 프로젝트를 진행했으며, "페어 프로그래밍" 접근 방식이 중요하다고 언급함
- 코드 리뷰와 피드백 제공의 중요성을 강조하며, 단순히 코드를 수용하는 것은 좋지 않다고 설명함
- 유닛 테스트 생성의 중요성을 언급하며, 코드의 핵심을 파악한 후 스모크 테스트를 요청함
- 긴 문맥에서 모델이 혼란스러워질 수 있으므로 새로운 대화를 시작하는 것이 좋다고 조언함
- 코드 예제를 제공하고 영어로만 프롬프트하지 말라고 권장함
-
다른 사용자는 채팅이 UI 패턴으로서 부적절하다고 주장하며, 기록으로서는 좋지만 작업을 수행하기에는 좋지 않다고 설명함
- 내러티브 방식이 물건을 만드는 데 적합하지 않다고 언급함
-
또 다른 사용자는 Cursor가 언급되지 않은 것에 놀라움을 표하며, Cursor가 코드 작성 속도를 크게 향상시켰다고 설명함
- git-diff 스타일로 파일에 적용되는 출력물로 변경 사항을 승인하거나 거부할 수 있다고 설명함
- 코드베이스의 문맥을 어느 정도 이해하고 있어 명시적으로 파일을 태그할 때 가장 잘 작동한다고 언급함
- 터미널 로그나 타입 오류를 채팅 인터페이스에 직접 삽입하는 것이 매우 편리하다고 설명함
-
한 사용자는 "채팅을 UX로 사용하는 것"이 막다른 길이라고 주장하며, SQL의 사례를 들어 설명함
- LLM 기반의 채팅 인터페이스가 사용자에게 노출되지 않을 것이라고 예측함
- 자연어 인터페이스가 기계와의 상호작용에서 예외적인 경우에만 사용될 것이라고 언급함
-
자연어가 정확성을 위해 만들어지지 않았으며, AI와의 소통을 위해서는 프로그래밍 언어의 하위 집합이 필요하다고 설명함
-
Daniel의 의견에 대해, 채팅이 일반적으로 불편한 UI라고 주장하는 것이 아니라, 컴퓨터 프로그램을 완전히 명시하기 위해서는 많은 세부사항이 필요하다고 설명함
- LLM이 모호성을 좋은 기본값으로 채워주며, 일반적인 로그인 화면을 제공한다고 설명함
-
Cursor와 같은 경험을 음성으로 구현하여 코드 변경을 논의할 수 있는 기능을 기대한다고 언급함
-
요구사항 문서를 기반으로 AI 기반 소프트웨어 개발을 추진하는 접근 방식을 설명하며, 요구사항을 체크리스트로 변환하여 추가 지침으로 사용하는 예시를 제공함
-
첫 번째 물결은 채팅이 아닌 완성이었으며, 채팅이 더 직관적이고 노력이 적게 든다고 설명함
- 문서가 고정된 것이 아니라 AI를 통해 반복적으로 수정할 수 있다고 설명함
-
새로운 언어를 발명하여 컴퓨터 프로그램을 설명할 수 있는 구조화된 언어 모델을 기대한다고 언급함