한 달 동안 GPT로 개발하고 느낀점
요근래에 들어서 블로그 작성이 뜸해졌습니다. 블로그를 시작하고 한 주에 한 번은 글을 쓰는게 목표였는데 한 달 간 주말까지 통틀어서 너무 바쁘게 일하느라 이전에 올린 물고기는 존재하지 않는다의 독후감 이후로 4주만에 다른 주제로 다시 쓰게 되었네요😔 사실 글을 쓸려면 어떻게든 하루 30분이라도 시간을 내어서 주에 한 번은 포스팅을 할 수도 있었을 겁니다. 피곤하다는 핑계로 퇴근후에 누워서 유튜브나 봤었어요. 일을 시작하면서 글 쓰는 일에는 오히려 태만해 졌나봐요. 반성하는 마음으로 이번 포스팅을 시작해 봅니다.
그동안 겪었던 문제
글 제목에서부터 이미 유추 하셨겠지만 저는 프로그램 개발을 직업으로 삼고 있습니다. 1년간 쉬면서 공부하다가 한 달 전에 다시 일을 시작했어요. 전 직장에서 1년간 Flutter라는 앱 개발을 했었고 공부할 때도 일하면서 놓쳤던 그와 관련된 기본적인 부분을 다시 공부하고 있었고요. 일할때에 비해서 책도 많이 읽었고 사람들과 어울리면서 토론도 했습니다. 토론 주제로 종종 AI와 GPT가 나오곤 했지만 당시에 저는 GPT를 적극적으로 사용하지는 않았던 때라 겉핥기 식으로 이야기를 나눴던 기억이 납니다.
그런데 이번 직장에서 앱 개발은 물론이고 블록체인 관련 개발도 할 수 있는 기회가 생겼습니다. 관련 지식이 전무했던 터라 아주 기초적인 책부터 시작해서 개념을 쌓았습니다. 블록체인 무엇인가? 라는 책을 읽었는데 개념 공부하기엔 정말 좋은 책이였습니다. 하지만 책의 내용을 완전히 제 것으로 만들지도 못했을뿐더러 개발을 하기 위해선 더 깊은 지식과 실전에서 사용할 수 있는 자료도 필요했습니다. 회사에서도 처음 도전하는 일이라 관련된 리소스가 없어서 더더욱 막막했어요. 그런 이유로 자연스레 일하면서나 공부 하면서 GPT나 다른 AI 도구들에 의존도가 높아졌습니다.
GPT에 대한 의구심
불과 1년 전까지만 해도 개발에 GPT를 적극적으로 사용할 생각은 하지 않았고 장난감과 같은 인식 이였고 구글링과 책을 통해서만 지식을 습득하다가 오픈AI의 거듭된 GPT의 대폭적인 성능 업그레이드가 있었고, 올해에는 구글링을 하는 시간을 단축해주는 편리한 도구로 생각하는데 이르렀습니다. 공부에 사용할때는 프로그래밍 문법과 엔진의 작동 원리나 개념등을 주로 질문했었어요. 그렇지만 종종 사실과 동떨어진 답변을 해서 다시 찾아봐야 했습니다. 그런 점 때문에 오히려 공부가 더 잘되는거 같아서 나름 만족했습니다.
혼자 토이 프로젝트를 개발할때는 기능 작동에 대한 견본이 되는 코드를 보고 싶어서 사용했는데, 실무에서 GPT를 사용하는게 저에겐 아직까진 거부감이 있었어요. 정말 GPT가 코딩 해준 소스를 믿고 프로젝트에 적용해도 되는지 반신반의했습니다. 하지만 프로그램 납품 기한은 다가오고 마음이 급해지니까 GPT를 사용하는 빈도수가 늘어났습니다. 회사내에서도 당연하다는 듯 GPT를 사용하는 분위기였구요. 제가 2주간 사용했던건 Free 플랜이였는데 GPT-4 모델이였습니다. 이걸로도 충분히 패턴화된 기능을 구현할 수 있었지만 좀 더 복잡한 문제에 있어서는 체감상 제가 원하는 코드를 내어주지 않았고 그로 인해 문제도 잘 해결 되지 않았습니다.
유료 플랜을 사용하면서 바뀐 인식
혼자 끙끙 앓으면서 문제와 싸우고 있었는데 옆자리에서 그 모습을 지켜보던 동료가 저에게 Plus 플랜인 GPT-4o의 사용을 추천해줬습니다. 지쳐있기도 했고 속는샘치고 모델을 변경했습니다. 그런데 첫 질문만에 그동안 애먹던 문제에 대해서 단번에 해결을 해주었어요. 이로 인해서 유료플랜이 좀 더 괜찮은 답을 해준다는걸 알게 됐습니다. 그리고 그동안의 답답했던 마음이 싸그리 날아가는 듯한 쾌감을 느꼈습니다. 마치 내가 스스로 문제를 해결했다는 듯한 착각도 들었구요.
이 일이 있은후부터 GPT를 모든 문제를 해결해주는 완전한 컴퓨터라고 느끼게 됐고, 크고 작은 문제를 전적으로 GPT에게 질문하면서 일 하게 됐습니다. 리눅스 명령어, 깃, 환경변수 설정 체크, 개발자 도구 설치부터 시작해서 다소 반복적인 코딩을 해야 하는 부분들, 즉 이미 패턴화 되어 있는 작업은 전부 GPT에게 맡겼습니다. 이 덕분에 작업 속도가 이전과는 비교할 수 없을 정도로 향상되었습니다. 구글링 하는 시간을 절약해준 덕분에 GPT가 만든 코드를 보면서 이런식으로 문제를 해결할수도 있구나라며 나름 공부할 수 있는 시간도 갖을수 있었습니다.
좀 더 복잡하고 깊은 지식을 요구하는 문제에 대해서는?
앞서 이야기 했던 대로 작은 문제에 대해서는 저의 시간을 단축해줄 만큼 만족스럽게 사용했습니다. 하지만 어느새 GPT에게 질문하면서 일 하는게 습관이 되어버렸고 블록체인 관련한 업무에서도 자연스럽게 전적으로 의지하게 되었습니다. 마치 이미 문제가 해결이 된 것처럼 GPT는 저에게 그럴듯한 답변을 해주었어요.
업무상 비밀이라 구체적으로 이 글에서 설명은 못하지만, 실제로는 적용하기 힘든 내용의 답변 이였습니다. 이론상으론 가능하지만 구현은 어렵다는 답을 계속 추궁을 해봐야 얻을수 있었습니다. 그동안은 그것도 모르고 왜 안되지? 라며 에러가 발생한 부분을 GPT에 던져주고 그에 대한 대화하면서 코딩을 했지만 알고보니 처음부터 불가능한 해결 방식안에서 챗바퀴만 빙글빙글 돌았던 겁니다.
그리고 가장 치명적인 문제점은 GPT가 답변한 코드가 실제로 동작을 하게 될 때입니다. 잘못된 방향으로 작성된 코드가 동작을 하고 저는 이게 맞는 방법이구나 라고 착각을 하게 됩니다. 그렇게 되면 시간에 쫓기고 있는 저로서는 깊게 알아보지 않고 넘어가기 일수였습니다.
왜 GPT는 내게 거짓말을 했을까?
여전히 GPT는 완벽한 도구가 아닌것은 맞지만 엄연히 따지면 GPT가 제게 거짓말을 한것은 아닙니다. 제가 한 달 동안 사용하면서 어떨때 GPT가 문제를 잘 해결해 주고, 또 어떨 때 저를 더더욱 헤매게 했는지를 돌이켜 생각해보면 크게 두 가지를 발견할 수 있었습니다.
첫 번째는 제가 어떻게 질문을 했는가 입니다. 제가 처한 상황과 문제에 대해서 구체적으로 자세히 설명하면 할 수록 GPT는 문제의 근본 해결책에 더 가까운 답변을 내놨습니다. 반면, 제가 대강 설명하면 GPT도 대강 답변했습니다. 즉, 문제 핵심에 벗어난 답변을 했습니다.
두 번째는 제가 가지고 있는 사전 지식입니다. 제가 많이 알고 있으면 있을 수록 적합한 단어로 GPT에게 더 정확한 정보와 힌트를 제공하고 그것들을 토대로 문제를 해결할 수 있었습니다. 물론 대체로 한번에 문제 해결에 도달하지 못했지만 그에 대한 실마리를 찾을 수 있는 정도였습니다.
결론, 그렇다면 AI를 어떻게 사용해야 하는가?
GPT가 내놓는 대답들은 공식문서, 책, 아티클, 블로그 등에서 참고한 내용들일 겁니다. 작은 사용 팁으로는, GPT의 답변에 대한 근거가된 출처를 함께 요구하면 더욱 답변의 적합도를 구분하는데 도움이 될 것 같습니다. 여전히 문제점들은 아직 많이 있지만 이제는 GPT를 사용하지 않고는 일을 할 수는 없는게 이 업계에 현실이 된 거 같습니다. 그럼에도 GPT는 아직까지는 만능이 아니고 개발자들은 여전히 문제에 관련된 공부를 해야 합니다. 또한 프로그래밍도 계속 공부해야 하는건 아직까지는 변함이 없습니다.
내가 잘 알지 못한다면 GPT에게 적절히 질문을 할 수도 없으며 우연히도 맞는 답변을 해주어도 원리를 모르면 응용을 할 수가 없습니다. 또, 복잡하고 어려운 문제를 해결할려면 해당 문제에 대한 전문지식을 갖춰야 합니다. 왜냐하면 GPT는 아직 깊고 정교한 기술을 요구하는 문제에 대해서는 해결 능력이 없습니다. 그렇기에 GPT에 대한 의존도가 높으면 높을수록 내가 그만큼 전문적인 지식이 떨어진다는 것을 의미하며 여전히 문제를 해결할 수 없다는 것입니다. 그리고 GPT에 높은 의존도는 저의 문제 해결 능력을 발전하지 못하게 할 수도 있습니다. 이 부분은 특히나 경계 해야 할 부분인거 같습니다.