AI 코딩 툴을 사용할 때의 나의 원칙

AI 코딩 툴을 사용할 때의 나의 원칙
Photo by Jo Szczepanska / Unsplash

지난 글에서는 어떤 AI 코딩 툴을 어떻게 쓰는지 공유했었습니다. 이번에는 툴을 계속 사용하면서 머리 속에 쌓인 원칙들을 적어보았습니다. 항상 이러한 생각들을 하며 툴을 사용해야 좀 더 체계적으로, 생산적인 방향으로 일이 진행되는 것 같습니다.

사분면 (Quadrants)

x축: 언어 숙련도 / y축: 코드 중요도


현재 하고 있는 일이 4개의 사분면 중 어디에 있는지 생각한다.

* 사분면 1 - 높은 임팩트 존 (High Impact Zone)
* 사분면 2 - 위험한 존 (High Danger Zone)
* 사분면 3 - 재미 있는 바이브 코딩 구역 (Full Fun Vibe Coding Zone)
* 사분면 4 - 약간 진지한 바이브 코딩 구역 ("Parents at the party" Vibe Coding Zone)

사분면 1 - 높은 임팩트 존 (언어숙련도 높음; 코드 중요도 높음)


여기서는 LLM으로 가장 큰 임팩트를 만들 수 있지만, 가장 조심해야 하는 구역.

이 코드가 프로덕션에서 실행될 것이라는 걸 잊지 말자. 좀 더 코드에 엄격하자. 기본적인 유닛 테스트와 통합 테스트를 고려하자. 여기서 생산적이면 내 메인 업무를 잘하는 것으로 이어질 수 있기에 잘 활용하되 항상 신중하게 생각하자.

사분면 2 - 위험한 존 (언어숙련도 낮음; 코드 중요도 높음)


여기서는 너무 자주 머물지 말자.

코드 리뷰를 도와줄 수 있는 인내심 있는 동료가 있다면 다행이다. 하지만 아무 이해 없이 큰 사이즈의 LLM 생성 코드를 리뷰로 맡기면 동료가 불쾌해하고 나에 대한 신뢰를 잃을 위험이 있다는 걸 잊지말자. 최소한 중간 수준의 숙련도를 얻어서 사분면 1에 최대한 가깝게 가는 방향을 모색하자.

사분면 3 - 재미 있는 바이브 코딩 구역 (언어숙련도 낮음; 코드 중요도 낮음)

여기는 무슨 일이 일어나고 있는지 전혀 모르는 상태지만, 결과를 보는 재미가 가장 많다. 최소한 원하는 출력이 무엇인지(예: UI, 데이터 시각화)는 확실하게 해야 프롬트 잘 써 결과를 얻어낼 수 있다. 코드를 제대로 이해하지 못하기 때문에 프롬프팅에 시간을 많이 낭비할 수도 있다. 그냥 바이브에 손가락을 맡기자.

사분면 4 - 약간 진지한 바이브 코딩 구역 (언어숙련도 높음; 코드 중요도 낮음)


여기도 꽤 생산적일 수 있지만 완전히 바이브 코딩은 아님. 약간 진지한 "파티에 온 부모"라고 했던 이유는 생성된 코드를 여전히 부모처럼 관리하고 이해하면서 보게 되기 때문. 아이들을 훈육하면서도 파티 바이브를 즐기고 싶어하는 부모 느낌이랄까.


LLM과 인턴


AI 코딩 도구를 전문가가 아닌 인턴처럼 대한다.

  • 때로는 세밀하게 관리해야 하자. 어떤 파일과 과거 Changelist을 읽어야 작업을 할 수 있는지 구체적으로 알려준다.
  • 지루하더라도 좀 해야 할 작업이 명확하게 일을 주자.
  • 작업을 더 작은 덩어리로 나누자.
  • 코드를 신뢰하지 말자. 의심의 눈으로 코드를 읽자.
  • 코멘트나 변경하는 로직의 근거도 읽어보자.
  • 때로는 LLM의 사고가 이상한 토끼 굴에 빠질 수 있다는 걸 받아들이자.
  • 때로는 나보다 뛰어나고 창의적인 해결책을 만들어낼 수 있다는 걸 받아들이자.

Git을 효과적으로 사용하기

  • 모든 코드를 작은 덩어리의 Changelist으로 분리하자.
  • 리뷰를 해서 문제가 없는 부분을 잘게 나누어 커밋한다. 이렇게 하면 무슨 일이 일어나고 있는지 정리하는 데 도움이 되고, 뭐가 잘못되면 롤백하기도 쉽다.
  • 일부 IDE는 LLM 결과를 내가 먼저 accept해야 하는 작은 조각으로 보여주는 UX를 가지고 있는데, 이 기능을 꼭 사용하자.
  • LLM 툴 사용 안하더라도 평소에 이렇게 하자.

에너지 레벨 확인하기

  • 때로는 그냥 일이 잘 안 될 때, 이해가 안되는 에러 메시지를 고치기 위해 LLM에게 계속 생성하고 "좀 잘 고쳐봐" 같이 바보 같은 프롬프팅하는 안 좋은 습관에 빠지고는 하는데, 이러한 건 LLM이 아니라 내가 토끼 굴에 빠진거다.
  • 나의 에너지 레벨이 낮을 때 마치 인스타 릴즈나 유튜브 쇼츠를 아무 생각 없이 스크롤 (doom scrolling)을 하고 싶은 것과 같은 이치기에, 빨리 내가 이러한 상태에 왔다는 것을 인지하자.
  • 차라리 컴퓨터를 닫고 쉬자. 커피나 차 한잔을 마시러 가고, 산책하고, 운동하러 가자. 아니면 그냥 내일 하자.
  • 그리고 에너지 레벨이 돌아오면, AI 코딩 도구 없이 실제로 코드/에러 메시지를 직접 읽어보자. 때로는 답이 바로 거기에 있다.

동료들에게 말해야 하나 말아야 하나

동료들이 트리플 모니터 셋업에 AI 에이전트로 코드를 작성하는 모습을 볼 때 부끄러워해야 할지 자랑스러워해야 할지 아직 모르겠다. 한 번은 매니저가 "멋지네"라고 한마디 했는데, 진심인건지 아니면 그 때 내 코드에 대한 신뢰가 약간이라도 떨어진 건지 모르겠다만..

  • 어쨌든 내 코드와 그 결과에 책임은 나한테 있다는 것을 까먹지 말자. 사람들은 내가 어떻게 거기에 도달했는지에 대해 점점 덜 신경 쓸 것이다. 결과가 좋기만 하면.
  • 내가 내 인턴을 고용하더라도 그들이 만드는 결과에 나도 일부분 (아님 대부분) 책임이 있지만, LLM의 경우, 작업이 내 이름으로 나오기에 100% 내 책임이다.
  • 그러니깐 좀 더 내 작업에 책임감과 자부심을 가지고, LLM 생성 코드를 꼼꼼히 리뷰를 하자. 이 책임을 동료들의 코드 리뷰어에만 전가하지 말자.

저는 앞으로는 LLM 코딩 도구를 잘 사용하는 것이 생산적인 엔지니어가 되는 데 굉장히 중요한 부분이 될 것이라고 확신합니다.

하지만 이를 위해서는 먼저 제가 좋은 엔지니어가 되어야 한다는 것을 깨달았습니다.

그렇지 않으면 LLM도 나도 엉성한 결과를 만들에 낼 것이고, 이는 결국 내 커리어뿐만 아니라 팀의 제품에도 큰 리스크가 됩니다.

제 자신한테 적용하고 있는 원칙들이 여러분들께 참고가 되었으면 좋겠네요.

Read more

AI 시대의 직관과 취향

AI 시대의 직관과 취향

AI 코딩이 발전할수록 나의 가치가 무엇인지 고민하게 됩니다. 최근에 Google Antigravity나 Claude Code 같은 새로운 "Agentic" Coding 도구들을 업무와 취미 프로젝트에 동시에 사용해보고 있는데, 정말 매일 기존의 관념이 부서지는 경험을 하고 있습니다. 보통 가족과 시간을 보내느라 바쁜 주말에 한 시간 정도 여유가 생겨서 장보기 영수증 기록 툴을 만들어보기로

By Park Ji Ho
더이상 (인간) 프로그래머는 필요 없다고?

더이상 (인간) 프로그래머는 필요 없다고?

초등학교 미술 시간에 장래 희망을 그려서 교실 뒤에 붙여 놓았던 기억이 납니다. 학교 끝나고 컴키드 라는 학원에 가서 PPT나 나모 웹에디터를 가지고 놀던(?) 저는 "프로그래머"라는 직업을 그려 넣었었습니다. 그리고 그 아이는 지금은 그렇게 프로그래머가 되었습니다. 어쩌면 이 글은 프로그래머를 꿈꾸는 학생 또는 개발팀을 모두 해고하고 LLM 코딩

By Park Ji Ho
AI 코딩 툴 어떤 거 쓰세요?

AI 코딩 툴 어떤 거 쓰세요?

구글 IO 2023은 제 커리어에서 정말 기억에 남는 순간이었습니다. 구글 CEO 순다 피차이가 무대에서 보여준 데모 코드의 일부는 제가 리뷰했던 코드였거든요. 당시 구글의 플래그쉽 모델이었던 PaLM이 버그를 고쳐줄 뿐만 아니라, 주석을 한국어로도 달아줄 수 있다는 데모였습니다. 당시 Bard(현 Gemini App)가 처음으로 지원하는 외국어로 한국어와 일본어로 발표되기도 했습니다. 이

By Park Ji Ho