# Agentic coding with legacy code > 레거시 시스템에서 에이전트 기반 코딩을 잘 해보기 위한 고민들. <레거시 시스템>에서 [에이전트 기반 코딩](https://wiki.g15e.com/pages/Agentic%20coding.txt)을 잘 해보기 위한 고민들. ## 개요 지인과 짝 코딩을 마치고 회고를 하던 중, 내가 개인 프로젝트에서는 [에이전트 기반 코딩](https://wiki.g15e.com/pages/Agentic%20coding.txt)을 열심히 하는데 정작 돈 받고 하는 프로젝트에서는 태도가 보수적으로 변하면서 수제 코딩 비율이 높아지더라는 걸 깨달았다. (<2025년 10월> 기준) 레거시 시스템에서 에이전트 기반 코딩을 더 적극적으로 하기 위한 방법을 고민해보면 좋겠다는 생각이 들었다. ## 생각 조각들 (: 마저 정리하기) 필요한 건 결과이지 과정이 아님: - [에이전트 기반 코딩 실험 1](https://wiki.g15e.com/pages/Agentic%20coding%20experiment%201.txt)에서 에이전트에게 인간 흉내를 내며 [TDD](https://wiki.g15e.com/pages/Test-driven%20development.txt)를 하게 시키려고 애썼던 경험 - 내게 실제로 필요했던 것? 현재까지의 요구사항을 만족하는 심플한 설계와 현재까지의 코드를 커버하는 좋은 테스트 케이스. 에이전트가 [TDD 주기](https://wiki.g15e.com/pages/TDD%20cycle.txt)를 그대로 따르는지 여부는 중요하지 않다. 한편 모든 결과는 더 큰 무언가를 위한 과정이라는 점을 생각하면 뭐가 과정이고 뭐가 결과인지가 애매함. 결국 내가 찾아야하는 건 무턱대고 막연한 "결과"가 아니라 **적절한 추상화 수준에서의 결과**. 지금 맥락에서의 적절한 추상화 수준이란? 인간의 코드 리뷰가 병목이므로, 리뷰하기 좋은 단위의 수정. 레거시 코드에서 작업할 때 필요한 것들은? - 테스트가 없더라도 시스템이 동작이 바뀌지 않는 걸 완벽히 보장하는 수정만 하기([Hyperaware editing](https://wiki.g15e.com/pages/Hyperaware%20editing.txt)) - 일반적으로 "좋은 코드"라고 부르는 상태가 아닌 상태로 일시적으로 이동하기. 예: 일부러 중복을 만들기([Reconcile differences](https://wiki.g15e.com/pages/Reconcile%20differences.txt)), 버그가 있기 때문에 통과하는 테스트 만들기([Characterization test](https://wiki.g15e.com/pages/Characterization%20test.txt)) - AUT는 건드리지 않고 테스트만 추가하기 - 코드의 특정 부분에 대해서만 타입 검사나 린터 설정을 강화한 뒤 점차 넓혀가기 - [타이딩](https://wiki.g15e.com/pages/Tidying.txt) 위주의 수정들 위와 같은 종류의 수정들로만 이루어진 커밋들을 만들어내도록 에이전트의 모드를 쉽게 스위치할 수 있으면 좋을 것 같다. `AGENTS.md`, custom slash commands, subagents 등을 적절히 쓰면 쉽게 될 것. ## 참고 - [Working effectively with legacy code](https://wiki.g15e.com/pages/Working%20effectively%20with%20legacy%20code.txt) - [Tidy first? A personal exercise in empirical software design](https://wiki.g15e.com/pages/Tidy%20First%20-%20A%20personal%20exercise%20in%20empirical%20software%20design.txt) - [AI 시대의 소스코드 품질](https://wiki.g15e.com/pages/Source%20code%20quality%20in%20the%20AI%20era.txt)