GN⁺: Devin과 함께한 한 달에 대한 소회
(answer.ai)Devin이란 무엇인가
- 2024년 3월, Founders Fund와 Collison 형제, Elad Gil 등 여러 테크 업계 리더들의 후원을 받아 총 2,100만 달러 규모의 시리즈 A 투자를 유치한 새로운 AI 회사가 등장했음
- 이 회사 팀은 IOI 금메달리스트들로 구성되어, 복잡한 프로그래밍 문제를 스스로 해결할 역량을 갖췄다고 소개함
- 이들의 제품인 Devin은 인간 동료처럼 대화하며, 새로운 기술 학습, 기존 코드 디버깅, 전체 애플리케이션 배포, AI 모델 훈련 등 소프트웨어 엔지니어링 전 과정을 자율적으로 처리할 수 있다고 주장함
- 공개된 데모 영상에서 Devin은 Upwork 현상금을 스스로 해결하고, PyTorch 프로젝트를 설치 및 실행했음[1]
- 회사 측은 SWE-bench 기준으로 실제 GitHub 이슈의 약 13.86%를 완전히 해결한다 주장하며, 이는 이전 시스템 대비 약 3배 나은 성능이라 강조함
- 초기에는 선택된 사용자만 액세스할 수 있었고, SNS를 통해 소프트웨어 개발을 혁신할 것이라는 기대감이 확산되었음
- Answer.AI 팀은 AI 개발 도구를 자주 실험하는데, Devin이 기존과는 다른 무언가를 보여줄 것 같다는 직감을 받았음
- 실무 환경에 Devin을 직접 적용해 여러 가지 과제를 시도하며 사용기를 정리하게 되었음
초기 성공 사례
- 첫 번째로 시도한 작업은 Notion 데이터베이스의 정보를 Google Sheets로 가져오는 것이었음
- Devin은 Notion과 Google API 문서를 탐색하고, Google Cloud Console에서 필요한 자격 증명 설정을 순차적으로 안내해 주었음
- API 사용법만 단순히 던져주는 것이 아니라 실제 메뉴와 버튼 클릭 위치까지 안내해주어 번거로운 작업 시간을 크게 줄여주었음
- Devin이 작성한 코드는 다소 장황했지만 정상 작동했음
- 이 경험으로 “글루 코드”를 대신 처리해줄 AI의 가능성을 엿볼 수 있었음
- 다른 팀원 역시 휴대폰만으로 Devin과 상호작용하며, 목성·토성의 과거 위치를 추적하는 응용 프로그램을 만들 수 있었음
테스트 확장
- 초기 성공에 고무되어, Devin에게 문서 작성을 맡기거나, 우리가 디자인 작업 중일 때 디버깅을 부탁하는 등 비동기 활용을 시도해보았음
- 그러나 점차 Devin이 단순해 보이는 작업에서도 기술적 막다른 길에 빠지거나, 쓸모없는 복잡한 코드를 만들어내는 문제가 드러났음
- 특히 실제로 불가능한 작업(예: Railway에서 하나의 배포에 여러 앱을 동시에 올리는 것)도 무작정 시도하며 기능을 ‘환각(hallucination)’하는 상황을 자주 맞닥뜨렸음
- 문제는 단순히 실패가 아니라, 불가능한 해결책을 시도하느라 시간을 허비하게 된다는 점이었음
문제점에 대한 심층적 관찰
- Devin이 어떤 작업에서는 상당히 유능해 보이는데, 또 다른 작업에서는 왜 실패하는지 의문이 들었음
- 한 달간 사용하며 다음 세 가지 범주로 분류해 총 20가지 작업을 시도했음
- (1) 새 프로젝트 생성
- (2) 연구 작업
- (3) 기존 프로젝트 분석 및 수정
- 결과적으로 20개 작업 중 14개가 실패, 3개가 성공(초기 성공 사례 포함), 3개가 불확실(Inconclusive)로 나타났음
- 실패와 성공을 가늠할 뚜렷한 패턴이 없어, 비슷해 보이는 작업이라도 예기치 못한 방식으로 실패하는 모습을 보임
- 세부 사례는 본문 말미 부록에 정리되어 있음
1. 새 프로젝트 생성
- 회사의 데모 영상이나 초기 성공 사례를 볼 때, 새 프로젝트를 완전히 만드는 것은 Devin이 잘할 것이라 기대했음
- 하지만 실제로는 과도하게 복잡한 코드 구조를 만들거나, 간단한 웹 스크래핑조차 해결하지 못하는 문제가 많았음
- 예를 들어, Braintrust에 합성 데이터를 업로드하는 작업은 Devin의 코드가 지나치게 복잡하고 에러에서 벗어나지 못해 실패했음
- Spiral.computer와 AI 노트 테이커인 Circleback을 연동하려던 시도도 스파게티 같은 복잡한 코드를 반환해 포기하게 됨
- Google Scholar에서 특정 저자의 최신 25개 논문 정보를 가져오는 작업은 HTML 파싱에 갇혀 제대로 수행되지 못했음
2. 연구 작업
- 단순 문서 조회 같은 기본적 조사 작업은 어느 정도 가능했음
- 하지만 더 복잡한 문제, 예를 들어 정확한 타임스탬프를 유지한 채로 트랜스크립트를 요약하는 등의 과제에서는 관련 내용을 제대로 파악하지 못하고 엉뚱한 예시만 나열함
- DaisyUI의 최소 테마를 만들라는 요구도 실제론 기본 테마 색상만 그대로 쓰는 등, 결과물이 실질적으로 동작하지 않았음
3. 기존 코드 분석 및 수정
- 기존 코드와 맥락을 파악해 유지보수하는 작업에서 Devin의 한계가 두드러졌음
- nbdev 프로젝트를 다루는 과정에서, 단순히 노트북을 편집하면 되는 작업에 불필요하게 Python 스크립트를 추가하는 등 비효율적인 접근을 시도했음
- 보안 검토 작업에서도 존재하지 않는 취약점을 지적하거나, 주요 문제를 제대로 짚지 못함
- SSH 키 포워딩 오류 진단에서도 스크립트 자체만 파고들며, 문제가 다른 곳에 있을 가능성을 전혀 고려하지 못함
- 사용자 입력과 데이터베이스 간 충돌 체크 기능을 구현할 때도, Devin이 만든 코드를 손보느라 시간을 낭비한 뒤, 결국 직접 90분 만에 구현하는 편이 더 빨랐음
팀의 회고
- 한 달간의 집중 테스트 이후, 팀 내에서 Devin에 대해 다음과 같은 평가가 나왔음
- “작고 잘 정의된 작업은 오히려 직접 하는 게 빠르고, 큰 작업은 Devin이 실패할 가능성이 커서 쓸모가 크게 없음” (Johno Whitaker)
- “처음에는 조금씩 수정하면 가능할 것 같았으나, 결국 더 많은 부분을 손대야 했고, 차라리 처음부터 직접 하는 게 낫겠다고 느꼈음” (Isaac Flath)
- “AnswerAI 내부 툴과 잘 결합하지 못하고, 제공된 문서와 예제를 잘 못 사용하는 등 호환성 문제를 겪음. 반면 Cursor 같은 도구는 작은 단위로 지속적인 피드백을 주고받을 수 있어 Devin보다 나았음” (Hamel Husain)
- Devin은 자율적으로 큰 단계를 진행하는 것이 특징이지만, 결과적으로 사람이 틀린 방향을 바로잡는 데 드는 비용이 상당함
- 반면 개발자가 주도하고 AI가 보조하는 형태의 워크플로우(Circleback, Cursor 등)가 훨씬 안정적이라는 결론을 얻음
결론
- Devin과 작업한 경험은 자율형 AI 개발 툴이 지향하는 미래상을 엿볼 수 있게 해주었음
- 특히 Slack 기반의 대화형 UI나 Docker 컨테이너에서 환경을 자동으로 설정하는 점은 사용자 경험 측면에서 인상적이었음
- 하지만 실제로 작동이 원활했던 경우는 20개 중 3건뿐이었고, 특히 비슷한 작업이라도 복잡하게 실패하기 일쑤였음
- “자율적”이라는 특성 때문에 작업이 잘못될 경우 엉뚱한 방향으로 장시간 실행이 이어지는 문제가 생김
- 지금까지 경험한 바에 따르면, SNS상의 열기나 높은 기업 가치가 실제 생산성이나 완성도로 이어지지 않는 경우가 흔함
- Answer.AI 팀은 앞으로도 AI가 개발 과정을 보조하는 형태가 가장 실용적이라는 입장을 유지할 계획임
부록: Devin을 활용한 작업 목록
- 아래는 Devin에게 맡겼던 프로젝트와 결과를 간략히 정리한 내용임
- 네 가지 범주로 분류했음
- (1) 새 프로젝트 생성
- (2) 연구
- (3) 기존 코드 분석
- (4) 기존 프로젝트 수정
1. 새 프로젝트 생성
-
Planet Tracker
- Status: Success
- Description: 목성과 토성의 과거 위치에 대한 주장을 검증하려는 앱
- Reflection: Slack을 통해 모바일로만 Devin과 대화했는데, Devin이 대부분 작업을 자율적으로 처리해 완성에 성공했음
-
Migrating data from Notion into Google Sheets
- Status: Success
- Description: Notion 문서를 Google Sheets로 자동 가져오기
- Reflection: Devin이 Google Cloud Console 설정까지 단계별로 안내해 처음으로 ‘완전히 새로운 경험’을 했음
-
Multi-app deploys on Railway
- Status: Inconclusive
- Description: 하나의 Railway 배포에 여러 앱을 동시에 올려 같은 DB를 공유하고자 했음
- Reflection: 실제로는 Railway가 이런 방식을 지원하지 않아 사실상 불가능했음. Devin은 계속 시도하다가 환각된 접근을 이어갔음
-
Generate synthetic data and upload it to Braintrust
- Status: Failure
- Description: Braintrust 플랫폼에 올릴 합성 데이터를 생성해보고자 했음
- Reflection: 코드가 지나치게 복잡하고 에러를 해결하지 못해 Cursor로 단계별 구현을 진행했음
-
Create an integration between Circleback and Spiral.computer
- Status: Failure
- Description: 각각의 문서를 제공했으나, Devin이 너무 복잡한 스파게티 코드를 만들어 포기함
-
Web scraping Papers by Following Google Scholar Links
- Status: Failure
- Description: 특정 저자의 최신 25개 논문 정보를 가져오고, 유료 논문은 건너뛰도록 하는 작업
- Reflection: HTML 파싱에서 무한 반복에 빠져 작업이 중단됨
-
Create minimal HTMX bulk upload example app
- Status: Failure
- Description: HTMX 예시를 FastHTML용으로 간단히 재구성하려 했음
- Reflection: 예제 코드가 동작하지 않았고, 불필요한 요소들을 덧붙여 혼란스러웠음
-
Create a DaisyUI Themes to match FrankenUI Theming
- Status: Failure
- Description: DaisyUI와 FrankenUI 테마를 통일해 쓰고 싶었음
- Reflection: 매핑이 제대로 이뤄지지 않았고, 너무 방대한 코드가 추가되어 실질적으로 활용하기 어려웠음
2. Perform Research
-
Research How to make a discord bot
- Status: Success
- Description: Python으로 Discord 봇을 만들어 메시지를 요약·이메일로 전송하는 방법 조사
- Reflection: Devin이 중간에 Markdown 파일로 계획을 요약해줬고, 최종 코드는 완벽하지 않았으나 개념 이해에는 도움이 되었음
-
Research on Transcript Summarization With Accurate Timestamps
- Status: Failure
- Description: 타임스탬프 정보를 유지하면서 요약을 만드는 방법을 찾고자 했음
- Reflection: Devin이 관련 주제만 대략 나열하고, 실제 문제 해결 방향은 제시하지 못함
-
Create a minimal DaisyUI theme as an example
- Status: Failure
- Description: DaisyUI 테마를 최소 예제로 보여달라고 요청
- Reflection: 실제 테마는 적용되지 않고, 기본 테마 색상이 그대로 쓰였음
3. Analyze Existing Code
-
Performing a security review of a code base
- Status: Inconclusive
- Description: 700줄 이하의 GitHub 레포를 보안 취약점 관점에서 검토 요청
- Reflection: 부분적으로는 맞았지만, 실제로 존재하지 않는 취약점을 지적하는 등 과도하게 보안 이슈를 지목함
-
Review blog posts and make a pull request with improvements
- Status: Failure
- Description: 블로그 포스트를 검토하고, Quarto 기반 소스에 맞춰 PR을 생성하도록 요구
- Reflection: Quarto의 구조를 학습하지 못해 메타데이터나 Front matter 처리가 꼬여 실패함
-
Review an application and identify potential areas of improvement
- Status: Failure
- Description: 앞서 만든 타임키핑 앱에 대해 포괄적 개선안을 제시해달라고 요청
- Reflection: 제안들이 대부분 실효성이 없었음
-
Debug why ssh key forwarding is not working in a setup script
- Status: Inconclusive
- Description: 스크립트로 서버를 설정하는 과정에서 SSH 키 포워딩이 되지 않는 문제
- Reflection: Devin이 스크립트만 집요하게 조사하고, 문제의 원인이 다른 곳에 있을 수 있음을 인지하지 못함
4. Modify An Existing Project
-
Making changes to a nbdev project
- Status: Failure
- Description: FastHTML + nbdev로 만든 시간 추적 앱에 Apple Shortcuts용 API를 붙이고자 함
- Reflection: Devin이 직접 노트북을 편집하기보다 Python 스크립트로 노트북을 수정하려 하며 복잡도가 올라갔음
-
Migration of Python Project To nbdev
- Status: Failure
- Description: 기존 Python 프로젝트를 nbdev로 이전하고자 했음
- Reflection: 기본 nbdev 설정도 제대로 잡지 못해 프로젝트가 꼬였음
-
Integrate Styling Package Into FastHTML
- Status: Failure
- Description: MonsterUI를 nbdev 기반 프로젝트에 붙이려 했음
- Reflection: Devin이 nbdev 레포 구조를 제대로 이해하지 못해 실패함
-
Add feature to check for conflicts between user input and database
- Status: Failure
- Description: 기존 앱에서 사용자 입력과 DB 값이 충돌할 때 이를 알려주는 UI를 추가하고자 함
- Reflection: Devin의 시도를 끝까지 수정하는 데 많은 시간이 걸려, 직접 90분 만에 구현하는 편이 훨씬 빨랐음
-
Generate LLMs context file with the contents of every fasthtml gallery example
- Status: Failure
- Description: 모든 fasthtml 갤러리 예제를 LLMs 텍스트 파일로 생성하도록 요청
- Reflection: Devin이 각 예제를 별도 Markdown 파일로 만든 점은 흥미로웠으나, 실제 작성 방식이 문서화와 맞지 않고 불필요한 종속성을 추가하는 등 문제가 많았음
Hacker News 의견
-
OpenHands의 창작자는 AI가 소프트웨어 엔지니어를 대체할 수준에 이르지 못했음을 강조함. AI가 작성한 코드는 신입 엔지니어의 코드처럼 철저한 검토가 필요함. 그러나 AI를 잘 활용하면 생산성이 크게 향상됨. OpenHands 코드베이스의 약 20%는 AI가 작성하거나 공동 작성함. AI는 병합 충돌 해결이나 린터 오류 수정 같은 단순 작업에 유용함. AI는 매주 개선되고 있으며, 경쟁이 치열함을 언급함
-
AI 코딩 도구를 매일 사용하는 사용자는 Devin과 같은 에이전트 접근 방식이 과도한 작업을 시도한다고 봄. AI 코딩 도구는 개발자를 대체하기보다는 개발자를 위한 도구로 자리 잡아야 함. Github Copilot은 반복적인 코드를 완성하는 데 유용하며, Aider는 더 높은 수준의 편집 작업을 수행할 수 있음. 그러나 여전히 완벽하지 않으며, 문제 해결 시 불필요한 변경을 할 수 있음
-
Devin과 같은 AI 에이전트의 문제점은 그들의 지능이 일정 수준에 머물러 있다는 것임. 때로는 중급 또는 고급 엔지니어가 몇 시간 걸릴 작업을 몇 분 만에 해결하지만, 간단한 실수를 하기도 함. 주니어 엔지니어의 중요한 자질은 지도 가능성인데, AI 에이전트는 지도할 수 없다는 점에서 한계가 있음
-
AI가 인간 엔지니어를 대체할 수 있다는 주장에 회의적임. AI는 작은 반복 작업에 적합하지만, 인프라 관리나 앱 배포 같은 복잡한 작업에는 적합하지 않음. AI가 인간을 대체할 수 있다는 주장을 실제로 보게 될 때까지 믿지 않겠다고 함
-
AI 에이전트는 필요할 때 인간의 입력을 요청할 수 있어야 하지만, Devin은 "소프트 스톱" 상황에서 이를 잘 수행하지 못함. 인간 개발자는 몇 시간 후에 도움을 요청할 것이지만, AI는 무한 루프에 빠질 수 있음
-
AI 이미지 생성과 유사하게 AI 코딩 도구도 초기에는 놀라운 결과를 보여주지만, 여전히 많은 오류가 있음. 그러나 몇 년 후에는 놀라운 발전이 있을 것으로 예상함. Midjourney와 같은 도구는 기대와 다른 결과를 제공할 수 있으며, 사용자가 빠르게 반복할 수 있는 기능이 필요할 것임
-
Devin 사용 후기를 보면, 에이전트가 기대에 미치지 못한다고 평가됨. 에이전트는 쉽게 구현할 수 있지만, 유용하게 구현하기는 어려움. Devin의 한계는 에이전트 시스템의 발전에 대한 우려를 불러일으킴
-
Devin은 너무 많은 것을 시도했으며, 제한된 용량에서 코드 아티팩트를 생성하는 것이 가치가 있음. 특정 개발 루프 요소에 집중하는 것이 중요함. Factory AI와 같은 회사는 이러한 접근 방식을 취하고 있으며, 제품에 대한 관심을 받고 있음
-
Devin은 코드 형식과 로컬 테스트 설정을 이해할 때 인상적이지만, 불필요한 변경을 추가하여 다른 것을 망칠 수 있음. 이러한 변경을 되돌릴 수 없어 추가 정리가 필요함. Devin은 에이전트 워크플로우의 가능성을 보여주었지만, 시간 절약이 되지 않아 추천하지 않음
-
Cursor를 많이 사용한 사용자는 시스템을 특정 방향으로 강제해야 한다고 느낌. LLM이 유용한 코드 스니펫을 제공할 때도 있지만, 잘못된 방향으로 가면 제안을 중단하고 다른 방향으로 강제해야 함. Cursor는 리팩토링에서 특히 유용하며, 많은 타이핑과 시간을 절약해 줌.