Won. Studio

안전한 바이브 코딩

보안약 13분

속도만으로는 위험하다

AI로 만들수록, 사람이 확인하는 부분이 중요해진다

이번 회차의 주제는 AI의 도움을 받으면서도 나중에 고칠 수 있는 상태를 유지하는 진행 방법입니다. 컴퓨터 설정은 다른 사람에게 부탁하는 편이라도 괜찮습니다. 여기서 이야기할 내용은 도구 사용법이라기보다 '부탁하는 법'과 '순서'에 대한 이야기이기 때문입니다.

먼저 결론부터 말씀드립니다. 빨리 만들었다는 것과 잘 되고 있다는 것은 서로 다른 이야기입니다. 속도는 나중에 곤란해지지 않는 방식과 한 묶음이 될 때 비로소 가치가 됩니다.

빨리 만들었다고 성공은 아니다

가장 먼저 짚어 둘 것

고칠 수 없는 것을 빠르게 늘리지 않는다

  • AI는 짧은 시간에 많은 코드를 만들 수 있다
  • 양이 늘어날수록 확인과 수정의 부담도 늘어난다

가까운 예로 생각해 봅시다. 새로 들어온 사람이 첫날에 서류를 잔뜩 완성해 주었다고 해 봅시다. 고마운 일입니다. 하지만 그 내용을 아무도 읽지 않았다면, 그것은 '아직 확인하지 않은 일'이 잔뜩 쌓인 상태와 같습니다. 나중에 한 장이라도 잘못된 것이 발견되면, 어디서부터 고쳐야 할지 알 수 없게 됩니다.

AI에게 만들게 할 때도 똑같은 일이 일어납니다. 만드는 속도는 빨라지지만, 읽는 속도와 확인하는 속도는 사람 그대로입니다. 이 차이가 벌어지면 '움직이기는 하는데 그 내용을 아무도 모르는 것'이 자라납니다.

여기서 많이 걸려 넘어집니다. 화면이 움직인 시점에서 다 만들었다고 생각해 버리는 것. 움직인다는 것은 출발점이지 목표가 아닙니다.

바이브 코딩이란

AI에게 코드 만들기를 도와 달라고 하는 것

Claude

글로 부탁하면 코드 만들기를 도와주는 AI

ChatGPT

상의하면서 코드 초안을 만들 수 있는 AI

장점

자세히 쓰지 못해도 움직이는 형태까지 나아가기 쉽다

방법은 아주 간단합니다. '이런 것이 필요하다'고 평소 쓰는 말로 적어서 부탁합니다. 그러면 AI가 코드(컴퓨터에게 주는 지시서)를 만들어 줍니다. 그것을 써 보고, 마음에 들지 않는 부분을 다시 말로 전해서 고쳐 달라고 합니다. 이 반복입니다.

여기가 정말 대단한 점인데, 지금까지는 전문가에게 부탁할 수밖에 없었던 일을 내 말에서부터 시작할 수 있습니다. 그래서 이 강좌에서는 '쓰지 마라'고 말하지 않습니다. 사용하는 순서를 정리해 보자는 이야기를 합니다.

편리함 뒤에 있는 약점

AI는 전체를 계속 살피는 데 서툴다

AI는 지금 부탁받은 부분에 대해서는 아주 잘 답합니다. 다만, 여러분이 만들고 있는 것 전체를 계속 기억하며 지켜보고 있는 것은 아닙니다. 여기가 사람의 몫으로 남는 자리입니다. 다음 사진은 지금까지와 앞으로, 무엇이 바뀌는지를 나란히 놓은 것입니다. 왼쪽이 지금까지의 느낌, 오른쪽이 앞으로 일어날 일입니다.

  • 만드는 것은 빠르다확인할 양이 늘어난다
  • 고치는 것도 AI에게 맡긴다다른 문제가 생긴다
  • 부분만 본다전체가 흐트러지기 쉽다
편리함 뒤에 있는 약점
왼쪽이 지금까지의 느낌, 오른쪽이 실제로 일어나는 일

특히 눈여겨볼 곳은 가운데입니다. 고장 난 부분을 AI에게 고치게 하면 그 자리는 고쳐집니다. 하지만 고친 영향으로 다른 곳이 움직이지 않게 되기도 합니다. 그것을 또 AI에게 고치게 합니다. 이것을 계속하면 점점 복잡해져서, 처음에 무슨 일이 있었는지조차 알 수 없게 됩니다.

AI는 이해하는 상대가 아니다

겉보기의 그럴듯함을 조심하기

자연스러운 답이라도 내용은 확인이 필요하다

  • 지시에 맞는 형태를 만들어도, 목적까지 이해했다고는 할 수 없다
  • 움직이는 것과 안전한 것은 따로 확인한다

AI의 답은 언제나 차분하고 자신 있어 보입니다. 여기가 가장 큰 함정입니다. 글이 매끄러우니 맞을 것이다, 라는 판단은 할 수 없습니다. 부탁한 말에 맞는 형태는 만들 수 있어도, 여러분이 정말로 곤란해지지 않았으면 한다는 목적까지는 모를 때가 있습니다.

그러니 이렇게 생각해 주세요. AI의 답은 잘 만들어진 초안입니다. 초안은 그대로 밖에 내보내지 않습니다. 누가 읽는지, 잘못되었을 때 누가 곤란해지는지를 사람이 확인한 다음에 내보냅니다.

쌓이기 쉬운 문제

코드 양이 늘수록 생기기 쉽다

남은 것

이제 쓰지 않는 처리가 그대로 남는다

돌아가는 길

목적에는 맞지만, 필요 이상으로 복잡해진다

놓치는 것

고장 났을 때 원인을 따라갈 수 없게 된다

이 세 가지는 책상 위에 서류가 쌓여 가는 모습과 아주 비슷합니다. 다 쓴 자료가 남아 있습니다. 같은 일을 다른 방식으로 두 번 하고 있습니다. 그리고 막상 찾으려 하면 어디에 무엇이 있는지 알 수 없습니다.

해서는 안 되는 일은, 이 상태 그대로 '일단 전부 그냥 두고 다음 기능을 더하는' 것입니다. 어질러진 위에 쌓으면 나중에 되돌릴 수 없게 됩니다. 다음 장에서는 그렇게 되지 않는 만드는 법으로 들어갑니다.

먼저 만드는 방식을 정리한다

안전 대책보다 먼저, 고칠 수 있는 방식으로 바꾼다

순서가 중요합니다. 갑자기 어려운 안전 대책부터 시작해도, 고칠 수 없는 구조 그대로라면 지킬 수 없습니다. 우선 '문제가 생기면 원래대로 되돌릴 수 있다', '나중에 설명할 수 있다'는 형태를 만듭니다.

AI에게 맡기기 전의 순서

생각하는 역할은 사람이 가진다

부탁하기 전에 사람이 할 일이 세 가지 있습니다. 새로 들어온 사람에게 일을 넘길 때와 똑같은 순서입니다. 다음 사진이 그 세 단계의 흐름입니다.

  • 1 무엇을 만들지 정한다
    코드를 쓰기 전에, 완성된 상태를 말로 설명한다
  • 2 지킬 규칙을 정한다
    바꿔도 되는 범위와 건드리지 않을 곳을 정한다
  • 3 AI에게 작게 부탁한다
    한 번에 크게 바꾸지 말고, 결과를 보면서 다음으로 나아간다
AI에게 맡기기 전의 순서
부탁하기 전에 사람이 정하는 세 단계의 흐름

첫째는 완성된 모습을 먼저 말로 옮기는 것입니다. '고객이 이름과 메일을 넣고 보내기를 누르면, 우리 쪽으로 연락이 도착한다.' 이 정도면 충분합니다. 이것을 쓸 수 없다면 아직 부탁할 단계가 아닙니다.

둘째는 건드려도 되는 곳을 정하는 것입니다. '오늘은 문의 화면만. 그 밖에는 바꾸지 마세요'라고 전합니다. 이 말을 하지 않으면 부탁하지 않은 곳까지 바뀌어서, 무엇이 달라졌는지 알 수 없게 됩니다.

셋째는 작게 부탁하는 것입니다. '전부 만들어 줘'가 아니라 한 단계씩. 움직이는 것을 본 뒤에 다음을 부탁합니다. 이것만 지켜도 고칠 수 없게 되는 일이 크게 줄어듭니다.

AI는 초안 담당으로 쓴다

완성품이 아니라 첫 형태를 만들게 한다

해 본다

먼저 움직이는 형태를 빨리 만들어, 생각을 눈에 보이게 한다

본다

목적과 다른 곳, 너무 복잡한 곳을 찾는다

고친다

사람이 방향을 정하고, AI에게는 작은 수정을 부탁한다

이 세 가지는 자료를 만드는 방식과 같습니다. 먼저 거친 안을 빨리 받아 보고, 그것을 보면서 '여기는 아니다', '여기는 필요 없다'고 정합니다. 정하는 것은 사람, 손을 움직이는 것은 AI. 이 역할을 바꾸지 마세요.

'본다'에서 무엇을 봐야 할지 모르겠다는 분께. 두 가지면 충분합니다. 부탁하지 않은 것이 늘어나지 않았는가. 그리고 내 말로 다른 사람에게 설명할 수 있는가. 설명할 수 없는 부분이 앞으로 고장 날 자리입니다.

Git을 저장 지점으로 삼는다

Git=바꾸기 전으로 되돌리기 위한 도구

오늘 가장 꼭 가져가셨으면 하는 이야기입니다. Git(작업을 저장해 두고 이전 상태로 되돌리기 위한 도구)은 게임의 세이브와 비슷합니다. 잘된 지점에서 저장해 두면, 실패해도 거기서부터 다시 할 수 있습니다. 사진의 세 단계를 그대로 습관으로 삼아 주세요.

  • 작게 바꾼다
    한 번에 넓게 건드리지 말고, 되돌릴 수 있는 크기로 나아간다
  • 자주 저장한다
    잘 움직인 지점을 남겨 두고 다음을 시도한다
  • 고장 나면 되돌린다
    AI에게 계속 고치게 하기 전에, 정상이던 지점으로 돌아간다
Git을 저장 지점으로 삼는다
작게 바꾼다→저장한다→되돌린다, 의 순서

해서는 안 되는 일은, 고장 난 상태 그대로 AI에게 몇 번이고 계속 고치게 하는 것입니다. 서둘러 고칠수록 변경이 쌓여서, 원래가 어디였는지 알 수 없게 됩니다. 움직이지 않게 되면 먼저 되돌립니다. 되돌린 다음, 다시 작게 부탁합니다. 이것이 가장 빠른 복구입니다.

저장할 때 붙이는 이름은 나중에 내가 읽고 알아볼 수 있는 짧은 말이면 충분합니다. '문의 화면 여기까지 움직임.' 그것만으로도 내일의 내가 살아납니다.

추가하는 도구를 확인한다

라이브러리=밖에서 빌려 오는 편리한 부품

필요한가

기능 하나 때문에 큰 부품을 더하고 있지는 않은가

진짜인가

AI가 알려 준 이름을 그대로 믿지 않는다

오래되지 않았나

계속 쓸 것이라면 갱신 상황도 확인한다

AI는 '이걸 쓰면 빠릅니다'라며 밖에서 빌려 오는 부품을 자주 권합니다. 편리하지만, 빌려 온 부품은 여러분의 소유물의 일부가 됩니다. 그것을 만든 사람이 갱신을 멈췄다면, 그 낡음도 그대로 물려받게 됩니다.

특히 조심해야 할 것은 두 번째입니다. AI는 실제로는 존재하지 않는 부품의 이름을 그럴듯하게 적어 버리기도 합니다. 이름이 나오면 사람이 찾아보고, 정말 있는 것인지, 널리 쓰이는지 확인해 주세요. 여기는 대충 넘길 수 없는 부분입니다.

그다음에 안전을 생각한다

만들기 전에, 곤란할 일을 미리 뽑아 본다

여기까지 왔으면 고칠 수 있는 형태는 갖춰졌습니다. 다음은 악용과 사고를 미리 생각합니다. 어려운 지식은 필요 없습니다. 질문에 답하기만 하면 됩니다.

위협 점검은 네 가지 질문뿐

위협 점검=일어날 만한 위험을 미리 생각해 보는 것

만들기 시작하기 전에 종이 한 장으로 네 가지 질문에 답합니다. 다음 사진이 그 네 가지 질문입니다. 회의 전에 '무슨 일이 생기면 곤란한지'를 미리 꺼내 놓는 것과 같은 발상입니다.

  • 1 무엇을 하고 싶은가
    이 기능으로 누가 무엇을 할 수 있게 되는가
  • 2 무엇이 곤란한가
    악용이나 잘못된 조작으로 생길 문제를 적어 본다
  • 3 어떻게 막을까
    문제가 잘 생기지 않게 하는 방법을 정한다
  • 4 막았는지 확인한다
    만든 뒤에, 처음의 걱정이 남아 있지 않은지 본다
위협 점검은 네 가지 질문뿐
만들기 전에 답하는 네 가지 질문

네 번째를 건너뛰는 분이 아주 많습니다. 다 만든 뒤에, 처음에 적었던 '무엇이 곤란한가'를 다시 읽습니다. 여기까지 해야 비로소 한 바퀴입니다.

AI가 빠뜨리기 쉬운 확인

움직이면 끝, 으로 하지 않기

권한

봐도 되는 사람만 그 기능을 쓸 수 있는가

비밀

밖으로 내보내면 안 되는 글자를 코드에 적어 두지 않았는가

입력

예상 밖의 글자나 값을 그대로 받아들이지 않는가

AI는 '움직이는 형태'를 목표로 만듭니다. 그래서 부탁하지 않으면 이 세 가지는 빠지기 쉽습니다. 특히 첫 번째. 내 정보만 볼 수 있어야 할 화면에서 다른 사람의 정보까지 보이는 일. 이것은 실제로 자주 일어나는 사고입니다.

두 번째 '비밀'은 열쇠를 현관 매트 밑에 두는 것과 같은 이야기입니다. 외부 서비스를 쓰기 위한 암호 같은 글자를 코드 안에 그대로 적어 두면, 공개했을 때 함께 밖으로 나가 버립니다. '이 글자는 밖으로 나가지 않는 곳에 두세요'라고 부탁할 때 꼭 덧붙여 주세요.

보여 주는 정보도 확인

오류 표시에서 비밀이 새기도 한다

너무 자세하다

내부의 위치나 구조까지 화면에 내보내지 않는가

개인정보

필요 없는 정보까지 돌려주지 않는가

확인용 표시

만드는 중에만 쓰던 표시를 남긴 채 공개하지 않았는가

잘 되지 않았을 때 나오는 화면은 자꾸 뒤로 미루게 됩니다. 하지만 그곳에 안쪽 구조가 적혀 있기도 합니다. 쓰는 사람에게 전할 말은 '잘 되지 않았습니다. 다시 시도해 주세요'면 충분합니다. 자세한 사정은 나만 볼 수 있는 곳에 남깁니다.

지나친 사용에 따른 비용도 지킨다

외부 서비스를 부르는 앱

횟수 제한이 없으면 비용도 공격당한다

  • 유료 서비스를 몇 번이고 부르면 이용료가 급격히 늘어난다
  • 횟수나 금액의 상한을 정해, 이상한 사용을 멈춘다

이것은 놓치기 쉽지만 실제로 크게 데는 이야기입니다. 여러분의 화면에서 유료 서비스를 부르고 있다면, 그 화면을 기계적으로 대량으로 두드릴 경우 그만큼의 청구가 여러분에게 옵니다. 망가지지 않아도 비용만으로 곤란해질 수 있습니다. 다음 사진은 상한이 없을 때 무슨 일이 일어나는지를 한마디로 정리한 것입니다.

지나친 사용에 따른 비용도 지킨다
상한이 없으면 비용 쪽이 노려진다

대책은 간단합니다. 쓰는 서비스 쪽에서 사용 금액의 상한을 미리 정해 둡니다. 그리고 '같은 사람이 짧은 시간에 여러 번 쓸 수 없게 해 주세요'라고 부탁해 둡니다. 공개하기 전에 이 두 가지만은 꼭 확인해 주세요.

안전하게 나아가는 법

속도보다, 되돌릴 수 있고 설명할 수 있고 지킬 수 있게

여기까지의 이야기를 한 장으로 정리합니다. 이 다섯 가지가 오늘 가져갈 점검 항목입니다.

  • AI는 완성품이 아니라 초안에 쓴다
  • 한 번에 바꾸는 범위를 작게 한다
  • Git으로 되돌아갈 지점을 자주 남긴다
  • 밖에서 추가하는 부품은 사람이 확인한다
  • 만들기 전에 네 가지 질문으로 위험을 뽑아 본다
안전하게 나아가는 법
가져갈 다섯 가지 점검 항목

정리: 내일 할 일

전부를 오늘부터 바꿀 필요는 없습니다. 다음 세 가지나 네 가지를, 다음에 무언가를 만들 때 해 보세요.

  • 부탁하기 전에, 완성된 상태를 세 줄로 적어 본다
  • '오늘은 이 화면만 건드려 주세요'라고 범위를 정해서 부탁한다
  • 잘 움직인 지점에서 저장하고, 고장 나면 AI에게 고치게 하기 전에 되돌린다
  • AI가 권한 외부 부품은 이름을 직접 찾아본 뒤에 쓴다
  • 공개하기 전에 네 가지 질문과 사용 금액 상한을 확인한다

마지막으로

AI 도서관

팔로우와 좋아요, 부탁드립니다

  • AI를 일에 쓰는 이야기를 쉽게 한 편씩 올리고 있습니다
  • 다음 회차에서도 여기서 만나요

댓글

  • 아직 댓글이 없습니다. 첫 댓글을 남겨보세요.

회원가입은 필요 없습니다. 이름은 공개됩니다. 연락처는 적지 마세요.

같은 카테고리의 글