Software Development Agents: What Works and What Doesn't preview image

소프트웨어 개발의 변화와 agent의 등장

로버트 브레넌은 open source 개발 도구를 10년 넘게 만들어온 경험을 바탕으로, coding agent와 이를 효과적으로 사용하는 방법에 대해 이야기. He 자신과 팀이 만든 open source 소프트웨어 개발 agent인 OpenHands(이전 이름: OpenDevon)를 소개하며, 소프트웨어 개발 환경이 빠르게 변화하고 있음을 강조.

"2025년의 소프트웨어 개발은 변화하고 . 우리의 일은 2년 전과도 다르고, 앞으로 2년 후에도 또 달라질 것."

He 앞으로 coding 자체는 점점 사라질 것이라고 말. 하지만 소프트웨어 engineering이 사라지는 것은 아니며, 오히려 문제를 비판적으로 사고하고, 사용자와 business의 요구를 이해하는 능력이 더 중요해질 것이라고 강조.

"우리는 키보드를 두드리는 데 돈을 받는 게 아니라, 앞에 놓인 문제를 비판적으로 생각하는 데 돈을 받는 겁니다."

AI가 반복적인 코드 작성과 실행에는 강However, 큰 그림을 그리고 사용자와 공감하며 business 목표를 고려하는 일은 여전히 인간의 몫임을 분명히 .


coding agent란 무엇인가?

요즘 "agent"라는 단어가 자주 쓰이지만, 본질은 실제 세계에서 행동을 취하는 능력(agency)에 . 소프트웨어 engineer의 주요 도구인 코드 에디터, 터미널, 웹 브라우저가 바로 agent에게도 주어지는 핵심 도구.

"이것들이 바로 소프트웨어 engineer의 핵심 도구이고, agent에게도 이 도구들을 제공해 전체 개발 루프를 수행하게 ."

coding agent는 기존의 코드 자동완성(예: GitHub Copilot)에서 출발해, 점점 더 비동기적이고 자율적인 작업을 수행할 수 있게 진화. 이제는 한두 문장으로 원하는 작업을 설명하면, agent가 5~15분 동안 스스로 작업을 수행하고 결과를 가져오는 시대가 되었습니다.

"여러 agent를 동시에 보내놓고, 그동안 동료와 소통하거나 잠깐 딴짓을 할 수도 . 완전히 다른, 하지만 훨씬 강력한 작업 방식이죠."


agent의 작동 원리와 내부 구조

agent의 핵심은 large language model(LLM)과 외부 세계의 상호작용을 반복하는 루프.

  1. LLM이 다음 행동을 결정. (예: 파일 읽기, 코드 수정, 명령 실행, 웹페이지 탐색 등)
  2. 실제 행동을 수행하고, 그 결과(출력)를 얻습니다.
  3. 결과를 다시 LLM에 입력해 다음 행동을 결정.

이 과정을 반복하며 목표에 점점 가까워집니다.


agent가 사용하는 주요 도구들

  • 코드 에디터
    단순히 파일 전체를 바꾸는 것이 아니라, find & replacediff 기반 에디터를 사용해 필요한 부분만 효율적으로 수정.

    "수천 줄짜리 파일에서 한 줄만 바꿔야 할 때, 전체를 출력하는 건 비효율적이죠."

  • 터미널
    명령어 실행 결과를 받아오지만, 장시간 실행되는 명령이나 병렬 실행 등 다양한 상황을 처리해야 하므로 생각보다 복잡.

  • 웹 브라우저
    단순히 HTML을 넘기는 대신, 접근성 트리마크다운 변환 등으로 LLM이 필요한 정보만 받도록 최적화.

    "최근에는 페이지 스크린샷에 노드를 라벨링해 클릭할 대상을 지정하는 방식도 시도하고 . 이 분야는 정말 빠르게 발전 중이에요."

  • 샌드박싱
    agent가 위험한 행동을 하지 않도록 Docker 컨테이너에서 격리 실행.

    "agent가 내 홈 디렉토리에 'rm -rf'를 실행할 일은 없도록 해야죠!"

    Also, 외부 API 접근 권한(예: GitHub token, AWS 계정 등)은 꼭 최소 권한 원칙을 지켜야 한다고 강조.


agent 활용의 베스트 프랙티스

1. 작은 일부터 시작하기

  • 빠르게 끝낼 수 있고, 완료 기준이 명확한 작업이 가장 좋습니다.
  • For example, test 통과, 린트 오류 수정, 머지 충돌 해결 등 반복적이고 지루한 작업을 agent에게 맡기면 효과적.

"개발자로서 하기 싫은 자잘한 일들, AI가 정말 잘 해냅니다."

  • 경험이 쌓이면 점점 더 큰 작업도 맡길 수 .
  • 실제로 로버트는 "이제 내 코드의 90%는 agent를 통해 작성된다"고 말.

2. 명확하게 지시하기

  • 원하는 결과뿐 아니라, 어떻게 작업하길 원하는지도 구체적으로 알려줘야 .
  • For example, 사용할 framework, test 주도 개발 방식, 수정할 파일명/함수명 등을 명시하면 더 빠르고 정확한 결과를 얻을 수 .

"정확히 어떤 파일을 수정하라고 알려주면, agent가 코드베이스를 탐색하는 데 드는 시간과 비용을 크게 줄일 수 ."

3. 코드는 싸다!

  • AI 시대에는 코드를 쉽게 버리고, 실험하고, prototype을 만들 수 .
  • 실패한 결과는 과감히 버리고, 새롭게 시작하는 습관을 들이는 것이 중요.

"산책하다가 아이디어가 떠오르면, 목소리로 OpenHands에 지시하고, 출근하면 PR이 기다리고 있어요. 절반은 버리고, 절반은 머지."

4. 코드 리뷰는 필수!

  • AI가 작성한 코드를 무조건 머지하면 안 .
  • 코드 리뷰 없이 자동으로 머지하면, 중복 코드, 기술 부채가 쌓이고, 코드베이스가 금방 엉망이 될 수 .

"코드 리뷰 없이 AI가 만든 코드를 바로 머지하면, 금방 감당할 수 없는 상황이 ."

  • 반드시 사람이 직접 코드 리뷰를 하고, 실제로 코드를 실행해 문제를 확인해야 .

"신뢰하되, 반드시 검증하세요. 결국 인간이 반드시 한 번은 확인해야 ."

  • OpenHands의 경험상, PR의 소유자가 명확하지 않으면 책임질 사람이 없어져 문제가 생긴다고 .

    "이제는 PR을 연 사람이 직접 머지 책임을 집니다. 문제가 생기면 누구에게 물어야 할지 확실하죠."


agent의 대표적인 활용 사례

agent는 범용적이지만, 특히 다음과 같은 작업에 강점을 보.

  • 머지 충돌 해결

    "OpenHands, 이 PR의 머지 충돌을 해결해줘."
    반복적이고 명확한 작업이라 agent가 거의 99% 정확하게 처리.

  • PR feedback 반영

    "OpenHands, 저 사람이 말한 대로 고쳐줘."
    이미 누군가가 수정 요청을 명확히 남겼을 때, agent가 그대로 반영.

  • 작은 버그 수정

    "OpenHands, 방금 얘기한 이 부분 고쳐줘."
    Slack 등에서 바로 지시해 IDE를 켜지 않고도 빠르게 수정할 수 .

  • infrastructure 변경
    Terraform 등 복잡한 문법이 필요한 작업도 agent가 문서 검색과 적용을 잘 해냅니다.

  • database 마이그레이션
    인덱스, 외래키 등 베스트 프랙티스를 잘 지키며 마이그레이션 코드를 작성.

  • test 실패 수정 및 커버리지 확장

    "여기 test 커버리지가 낮은데, 커버리지 좀 늘려줘."
    안전하게 test를 추가하거나, 깨진 test를 고치는 데 유용.

  • 앱을 처음부터 만들기
    내부용 앱 등에서는 빠르게 prototype을 만들고, 필요에 따라 코드 리뷰 없이도 활용할 수 .


Conclusion 및 커뮤니티 초대

로버트는 Finally, OpenHands 커뮤니티에 참여해 함께 발전시켜 나가자고 초대.

"GitHub, Slack, Discord에서 우리와 함께 만들어가요!"


Key Concepts Summary

  • coding agent: 반복적이고 명확한 작업에 강함, 점점 더 자율적이고 비동기적으로 진화
  • large language model(LLM): agent의 두뇌 역할, 외부 세계와 반복적으로 상호작용
  • 핵심 도구: 코드 에디터, 터미널, 웹 브라우저, 샌드박싱
  • 베스트 프랙티스: 작은 일부터, 명확한 지시, 코드 리뷰 필수, 코드는 쉽게 버릴 수 있음
  • 대표 활용 사례: 머지 충돌, PR feedback, 버그 수정, infrastructure 변경, DB 마이그레이션, test, 앱 개발

이렇게 AI 기반 소프트웨어 개발 agent의 현재와 미래, 그리고 실제로 어떻게 활용하면 좋은지에 대한 실질적인 조언과 경험을 친절하게 풀어낸 강연이었습니다! 🚀

Related writing

Related writing