AI를 이용해 어떻게 하면 생산성을 높일 수 있을까?
오늘 집에 가던 도중 이런 생각이 들었습니다. 이 고민은 사실 저 뿐만 아니라 전세계 모든 개발자들이 고민하고 있는 주제가 아닐까 싶습니다. 인터넷의 칼럼과 유튜브를 보면 AI를 사용해 개발 생산성을 10배 혹은 100배를 끌어올린다고 합니다.
그리고 저는 아직 주니어 개발자에도 진입하지 못한 대학생(🥺)이지만, 정말 이런 일이 가능한지 정말 궁금했습니다. 생산성을 높이기 위해 시도를 해보았고 그 작은 시도를 통한 저의 부족한 생각을 간단하게 적어보려합니다.
AI를 도입하려는 여러 개발자 혹은 대표님들의 기대는 AI를 통한 괄목할 만한 생산성 향상일 것입니다. 과연 개발에서 생산성이란 무엇일까요? 제가 현업에 있다면 더 현명한 답을 내놓을 수 있을 것이지만, 아직 현업 개발을 못해보아서.. 우선 제가 지금까지의 개발을 돌아보며 생산성을 정의해보겠습니다.
개발에서의 생산성이란?
time: 현재와 같은 코드 질을 유지하며 개발 시간을 단축 시키는 것
quality: 같은 시간동안 더 좋은 질의 코드를 생산하는 것
저는 개발에서의 생산성을 시간과 질을 기준으로 정의했습니다. 이 정의 외에 새로운 정의가 추가될 순 있지만(협업 속도 등), 위 정의 대해 이견이 있기엔 어려울 것 같습니다. 그렇다면 AI를 이용해서 현재 글에서 정의한 생산성을 향상시키는 방법론은 무엇이 있을까요?
저는 개발자들이 AI를 대하는 2가지 다른 태도에 따라 생산성을 높이는 방법이 달라질 것이라고 생각했습니다.
첫 번째는 AI를 사람이 개발하는데 필요한 도구로 바라보는 것입니다. 이 태도를 가진 사람은 본인의 개발 사이클에 AI를 적용하려는 사람들입니다.
두 번째는 AI를 개발 책임자로 바라보는 것입니다. 이들은 본인의 개발 사이클을 만들지 않고, AI의 개발 사이클을 만드는 사람입니다.
저는 아직 책임자 측면이 아닌 도구 측면의 입장입니다. AI를 책임자로 내세우게 되면 결국 개발자들은 필요없는 세상이 될 것입니다.
AI가 인간을 아득히 뛰어넘게 되는 날이 오더라도, 저는 기술의 흐름과 AI가 생산해내는 것들을 이해하는 사람이 되고싶습니다. 그렇기에 생산성을 높이는 방법론도 AI를 도구 측면에서 사용하는 입장에서 제시해보겠습니다.
AI를 도구로 이용해 개발 생산성을 높이기 위해선 AI에게 좋은 결과가 나오길 기대해선 안됩니다. 지금까지 저를 비롯한 초보 개발자들은 AI를 이용할 때 지금보다 더 좋은 UX, 더 좋은 코드를 달라고 했습니다.
이는 개발자가 스스로 개발하는 것이 아니라, AI에게 모든 것을 의탁하는 행위입니다. 생산성은 A를 투입했을때 B라는 결과를 보장할 수 있을때 높아집니다. 하지만 AI의 생산물을 예측하려 하지 않고 결과물을 기대하며 개발하는 행위는 투입물에 대한 결과를 개발자 스스로 예측할 수 없게합니다.
따라서 AI의 결과물을 예측가능하게 통제하는 것이 생산성 향상의 핵심일 것입니다. 이런 이유로 TDD가 다시금 각광받지 않을까 싶습니다. 테스트 코드는 AI의 생산물을 통제할 수 있는 좋은 수단이기 때문입니다.
AI는 자연어로 구성된 명세를 이용해 코드로 빠르게 번역(완성)해줍니다. 이 방법이 실제로 작동하고 잘 적용하면, 적은 양의 문서만을 통해 개발을 할 수 있을 것입니다. 하지만 문제는 AI는 개발자가 원하는대로 짜주지 않는다는 것입니다.
따라서 이를 위해선 모호한 설계를 해선 안됩니다. 명세에는 문서엔 기술의 사용과 성능과 구현 방안, 유효성을 검증할 테스트 케이스가 구체적이고 명확히 적혀있어야 합니다.
하지만 여기에도 문제가 있습니다. AI가 예측 가능한 설계 문서를 작성하는 시간과 코딩을 하는 시간이 같아질 수도 있다는 문제입니다.
또한 기술적 명세의 표현과 코드가 일대일 매칭된다고 가정하다면, 결국 기술 명세의 표현 양과 코드의 표현 양이 같게되어 명세 작성과 코드를 작성하는 시간이 같아질 수도 있습니다.
따라서 이런 문제점을 극복하기 위해선 적은 양의 설계 명세를 이용한 AI 코딩 시스템을 개발해야 할 필요성이 있습니다.
AI가 발전하는 만큼 사람도 AI가 생산하는 생산물의 문맥을 따라가거나 통제할 수 있어야 합니다. 이를 실현할 수 있다면 개발자는 AI라는 거인의 어깨에 올라 더 큰 규모의 시스템을 구축할 수 있을 것입니다.
방법론을 했다면 이제 시도해보아야겠죠? 아직 배포되진 않았지만 개인브로그에 댓글 기능을 만들고 있는데, 그중 하나의 API를 코드 하나 없이 문서만을 이용해 코딩해보았습니다.
제가 적용한 방법은 간단합니다. 우선 디렉토리는 action-log와 master-action-log가 있습니다. action-log는 API나 하나의 작업 단위를 문서로 작성한 md 파일의 묶음이 있습니다. 각각은 독립적으로 존재합니다.
master-action-log는 독립적인 action-log 파일들을 유기적으로 배치하는 문서입니다. AI는 master-action-log의 현재 branch의 md 파일을 보고 작업 순서대로 action-log에 들어가 개발을 진행합니다. 그리고 코딩을 완료하면 문서에 상태를 업데이트합니다.




저의 후기는 그냥 내가 만드는게 더 빠를듯? 이었습니다. 구현한 양보다 문서를 작성한 양이 더 많아서 제가 todo 적고 개발하는게 아직은 더 빨랐던 것 같습니다.
하지만, 여러 파일을 돌아다지니 않고 하나의 문서로만 개발 내용을 적어 편리했고, 문서를 통해 실제로 예상한 코드 산출물을 만들 수 있었습니다.
이제 문서의 양을 조금씩 줄이고, 지금 방법을 더 체계화 한다면 설계하는 시간만 들이면 코드를 자동으로 원하는 코드가 생성되지 않을까 싶습니다!
지금까지 방법론부터 적용해본 후기를 적어보았는데요~ 다른 팀 프로젝트였다면 시도해보지 못했겠지만, 제 개인 프로젝트이기에 이런 실험을 해볼 수 있었던 것 같습니다ㅎㅎ
앞으로도 이런 실험적인 도전들 많이 해보겠습니다! 그리고 직접 해보셨던 AI 개발 방법도 이야기해주시면 좋을 것 같아요! 이번주도 부족한 글 읽어주셔서 감사합니다! 2월 마지막 주도 파이팅이에요~