비개발자 맥OS 앱 개발 도전기
AI와 협업하며 배운 것들
0. "앱 개발도 할 수 있겠는데?"
저는 초급 수준으로 파이썬을 다룰 수 있고, 랭체인과 스트림릿을 수박 겉핥기로 배웠습니다. 요즘 회사에서 Cursor와 랭체인을 사용해 LLM으로 주요 작업을 자동화하는 툴을 여러 개 만들어 실무자들에게 제공했는데, 개발자가 제대로 만든 것과 비교할 바는 아니겠지만 나름 업무 효율에 도움이 되고 있다는 피드백을 받고 있습니다.
소위 바이브코딩이라 불리는, 말로 설명하고 코딩하는 방식에 어느 정도 자신감도 얻게 되었습니다. 지금 렛플에서 진행하고 있는 프로젝트에 개발자 모집도 지지부진한 상태라 이참에 내가 개발까지 해볼까 하는 생각도 하고 있었습니다.
아직 실행에 옮기지는 않고 있던 중에 잠깐 샛길로 빠지게 되었는데, 맥OS 사용자라면 한 번쯤은 경험해봤을 'ㅈㅏㅁㅗㅂㅜㄴㄹㅣ' 현상을 해결하는 맥OS 앱 만들기에 도전하게 되었습니다.
이 현상은 맥과 윈도우 사이에 자모를 처리하는 방식이 서로 달라서, 맥 사용자가 만든 한글 이름 파일을 윈도우 사용자에게 이메일 등으로 보내면 글자가 분리되어 버리는 현상입니다. 제가 가해자가 된 적도 있고, 피해자가 된 적도 있는데, 중요한 비즈니스 문서나 상급자에게 보내는 문서에서 이런 일이 발생하면 난감할 수 있죠.
챗GPT를 이용해 기능과 요구사항을 정리하는 문서를 만들었고, 프로젝트를 만들려고 보니 Swift를 다룰 거라는 생각은 해본 적이 없어서 Xcode도 삭제했더군요. Xcode부터 다시 설치하고 Cursor에 요구사항을 전달해 코딩을 시작했습니다.
코드가 쭉쭉 짜여서 나오는 걸 보면 감탄이 나오지만, 이건 겨우 시작에 불과했습니다.
1. 입문 수준의 기초 지식이 없다면 그게 오히려 진입 장벽
비개발자가 경험하게 될 바이브코딩의 첫 진입 장벽은 환경 설정과 같은 초기 입문 수준의 지식과 기술입니다. Cursor 같은 툴이 파일을 만들어주기도 하고, 삭제 등도 해주기도 하지만, 환경 설정 등에서 작업자 스스로가 해결해야 할 상황이 분명히 발생합니다.
개인적으로 파이썬은 이미 환경 설정이나 라이브러리 설치 이런 부분을 제가 스스로 해결할 수 있는 부분이라 그런 진입 장벽이 없었는데, 맥OS 개발은 완전히 백지 상태에서 시작한 겁니다.
Info.plist를 설정하라, 빌드 설정을 하라 등등 챗GPT가 뭐라뭐라 알려주는데, 처음에는 그게 뭘 하라는 건지 도무지 이해할 수가 없었습니다. 스크린샷 이미지를 챗GPT에게 보여주기도 하면서 겨우 설정과 관련된 문제를 해결했습니다. 당연히 지금 또 처음으로 돌아가서 스스로 하라고 하면 못할 것 같네요.
코딩에 대해서 정말 아무것도 모르는 비개발자라면 최소한 시작 단계에서 배우는 프로젝트 설정하고 "Hello World" 출력하는 방법 정도는 스스로 배워야 하지 않을까 생각합니다.
작업 중에 여러 우여곡절이 있었지만, 결과적으로 아래와 같은 형태로 구현되었습니다. 과정에 대한 복잡한 설명은 생략하고, 중요하게 느낀 점 몇 가지만 이야기해보겠습니다.

2. 내 요청을 무조건 비판하게 하기
챗GPT와 같은 AI 서비스 대부분은 아부꾼입니다. 윤리적으로 문제가 되는 게 아니면 내 요청 대부분을 수용하고, 최선의 방법을 찾으려고 합니다.
그런데 사용자의 요청이 잘못될 때도 있습니다. 그럴 때도 이 녀석은 "좋습니다"를 남발하면서 결국 산으로 가게 합니다.
이번 개발에서도 파일 수정 권한이나 시스템 설정까지 건드려야 한다고 제가 잘못된 가설을 세우고, 그 가설에 따라 여러 복잡한 요청을 했는데, 거기에 맞춰서 코드 작성을 해버리니까 문제가 계속 생기고 결국 코드가 계속 꼬이더군요.
이런 상황에 대한 가드레일로 내 요청은 무조건 수용이 아니라 무조건 비판하라는 지침을 줄 필요가 있습니다. AI가 비판하는 부분을 보면서 저 역시 한 번 더 생각해보게 됩니다.
3. 스스로 비판하게 하기
제가 이번 개발에서 가장 많이 사용했던 방법은 AI가 답변을 내놓을 때마다 "그게 최선이냐? 한 번 더 검토해"라고 요청하는 겁니다. 어떤 부분이 잘못되었는지 일일이 지적해주지 않아도 첫 줄부터 살펴보면서 제시한 코드의 잘못된 부분을 스스로 찾기도 하고, 조금 더 단순하고 간결하게 코드를 정리하기도 합니다.
직장 상사가 밑도 끝도 없이 "이거 다시 해"라고 하면 짜증나는 일이죠. 하지만 다행히 AI는 자아 성찰도 불만 없이 성실하게 합니다. 코딩에 대한 지식이 없어서 어떤 부분이 문제인가를 찾아 낼 수 없는 상태에서 효과적으로 사용할 수 있는 방법이라 생각합니다.
4. 대화하고 질문하고 이해하기
Swift와 맥OS 개발에 대해 아는 게 전혀 없다는 핑계로, 어느 순간부터 AI의 설명은 대충 넘기고 그냥 엔터만 누르는 습관이 생겼습니다. 앱에서 특정 버튼을 눌러도 아무 반응이 없길래 몇 시간을 헤매게 되었는데, 알고 보니 단순히 버튼 액션과 연결된 함수가 호출되지 않고 있다는 아주 기본적인 문제였습니다.
대화 히스토리를 살펴보니, AI가 제안한 몇 가지 해결책 중 하나였고, 제가 조금만 읽어봤더라면 선택했을 방식이었는데, 제가 그냥 알아서 하라는 지시를 하다 보니 다른 방안을 선택하면서 발생한 문제였습니다.
그 이후로는 AI에게 설명을 요청할 때도 "초보자가 이해할 수 있을 정도로 천천히 설명해달라", "복잡한 기법 말고, 가장 단순한 방법으로 해결하자"는 조건을 붙이게 되었습니다. 실제로 그렇게 요청하면, 이해하기 쉬운 방식으로 다시 설명해주거나, 동일한 기능을 더 간결한 코드로 바꿔 제시해주기도 했습니다.
이 과정을 반복하면서 느낀 건, 바이브코딩이라는 게 단순히 말로 설명하고 지시해서 코드를 생성하는 걸 의미하는 게 아니라, AI와 끊임없이 질문하고 대화하면서 함께 방향을 잡아가는 협업이라는 점이었습니다.
협업이라고 정의한 만큼 AI에게 모든 걸 맡기는 게 아니라, AI의 제안을 이해하고 내가 스스로 통제할 수 있을 수준의 학습도 게을리 해서는 안 된다는 점도 체감한 점입니다. 이 점은 현실 세계에서 엔지니어들과 협업하는 PM이 가져야 할 덕목 중 하나이기도 합니다.
5. 에필로그
문제 해결이 제대로 되는지 테스트하는 과정에서 한 가지 발견했습니다. (물론 다양한 조건에서 충분히 검증한 것은 아니라서, 잘못된 판단일 가능성도 있습니다.)
상대방(윈도우 사용자)의 Gmail 계정으로 파일을 보내면, 제가 만든 프로그램을 거쳐도 여전히 글자가 깨집니다. 그런데 상대방 네이버 메일 계정으로 파일을 보내면 애초에 프로그램을 거치지 않아도 파일 이름이 정상적으로 전달되네요.
지금까지의 테스트만 놓고 보면 상대방 Gmail 계정으로 파일을 보낼 때는 이 앱이 소용이 없고, 상대방이 네이버 메일을 사용하면 애초에 문제가 발생하지 않는 셈인데, 이게 맞다면 결국 그냥 ‘상대방 네이버 메일로 보내면 애초에 이 문제는 발생하지 않음’이라는 허무한 결론이 나와 버리네요.
좀 더 테스트 해 봐야죠.
잠깐 진행했던 맥OS앱 개발은 좀 더 테스트를 해 볼 예정이고,
다시 커피 취향 발견과 매칭 프로젝트로 복귀합니다.
현재 구현되어 있는 내용을 고도화하고,
또 새로운 기술 적용에 대해 자유롭게 제안하고 구현해 보기를 원하시는 개발자 분은 저희 사이드 프로젝트에 합류해 주세요.