블로그로 돌아가기

모르는 것을 질문으로 바꾸기

에세이8분
Sungbin Kim

요즘 친구들이랑 얘기하면 "나는 그거 어떻게 하는지 몰라"라는 말을 자주 듣습니다.

예전엔 이 말이 자연스러웠습니다. 모르면 못 하는 게 당연했으니까요. 뭘 배우려면 책을 사거나 강의를 듣거나, 이미 할 줄 아는 사람을 찾아야 했습니다. 정보에 접근하는 것 자체가 장벽이었고요.

지금은 조금 달라요. 모르면 ChatGPT를 켜고 물어볼 수 있습니다. 정확히 뭘 모르는지조차 모르겠으면 "내가 지금 뭘 모르는지부터 알려줘"라고 물어볼 수도 있고요. 어떤 개념이 이해가 안 되면 더 쉽게 설명해달라고 하면 되고, 그래도 모르겠으면 예시를 더 달라고 하면 돼요. 코드 짜다가 에러 나면 에러 메시지를 그대로 붙여넣고 왜 터졌는지 물어볼 수 있습니다.

물론 AI가 모든 답을 정확하게 주진 않아요. 그래서 질문하고 검증한 다음 다시 묻는 능력이 중요해졌습니다. 저는 요즘 AI 시대의 격차가 "아는 사람"과 "모르는 사람" 사이보다, 모를 때 질문하는 사람과 모른다는 이유로 멈추는 사람 사이에서 생기는 것 같아요.

예전에 이 블로그에 나의 프로그래밍 일대기라는 글을 쓴 적이 있습니다. 하드웨어 만지던 어린 시절부터 웹 개발이랑 AI에 관심 갖게 되기까지의 흐름을 정리한 글이에요. 이번엔 그 흐름에서 계속 반복해온 습관, 그러니까 모르면 멈추기보다 일단 묻고 찾아보고 작게 해보는 것에 대해 써보려고 합니다.

저도 처음부터 알고 시작한 건 아니에요

생각해보면 저도 처음부터 뭘 잘 알아서 시작한 게 아니었어요. 어릴 땐 코딩보다 전자기기랑 하드웨어에 관심이 더 많았고요. 형이 쓰던 갤럭시 S2를 받아 쓰고, 엄마가 쓰던 갤럭시 노트3를 받아 쓰면서 자연스럽게 기계를 만지기 시작했어요. 초등학생 때 TWRP 올리고, XDA에서 커스텀롬 찾아서 설치하고, 루팅이나 오버클럭도 해봤고요.

2018년 디벨로이드 카페에 올린 갤럭시 S7 엣지 CSC 관련 질문 게시물.

그 게시물에 달린 댓글. 부트 애니메이션을 삼성 로고로 유지하는 방법을 주고받는다.

지금 생각하면 제가 안드로이드 구조를 제대로 이해하고 한 건 아니었죠. 그냥 궁금했고, 기기를 주어진 대로 쓰기보다 직접 바꿔보고 싶었어요. 검색하고 따라 하다가 안 되면 다시 찾아봤죠.

2018년쯤엔 배틀그라운드가 너무 하고 싶어서 중고로 i5-4690이랑 GTX 1050 Ti를 샀어요. 은행 가서 이체하는 방법 물어보고, 번개장터로 부품 사고, 직접 조립했어요. 초등학생이 모든 걸 알고 한 건 아니었죠. 모르면 물어보고, 유튜브 보고, 부품 맞춰보고, 안 되면 다시 찾았고요.

라이젠 5 3500X, 애즈락 메인보드 부품 상자와 조립된 케이스가 방바닥에 놓여 있다.

그때부터 저는 뭘 잘 알아서 시작하기보다, 모르는 상태에서 멈추지 않는 방식에 조금씩 익숙해졌던 것 같아요.

처음에는 게임을 만들고 싶었어요

처음 소프트웨어에 관심 가진 이유도 거창하지 않았습니다.

한국 배경의 오픈월드 심레이싱 게임 같은 걸 만들고 싶었거든요. 그래서 C++ 책도 사고 언리얼 엔진도 깔아봤어요. 당연히 잘 안 됐고요. 게임 개발은 생각보다 훨씬 어려웠고, 그때의 저한테는 너무 크더라고요.

그래서 웹으로 방향을 바꿨습니다.

HTML, CSS, JavaScript를 유튜브로 보고 따라 했어요. 노마드코더나 코딩 알려주는 누나 같은 채널 보면서 클론코딩을 했고요. 무료 도메인 찾아서 등록하고, GitHub 만들고, 개인 포트폴리오 사이트도 만들었고요.

지금 보면 부족한 코드였고 디자인도 어설펐어요. 그래도 제가 만든 페이지가 인터넷 주소를 갖고 있고 다른 사람이 접속할 수 있다는 감각은 꽤 컸죠.

하드웨어는 부품이 필요하고, 돈이 필요하고, 물리적인 한계가 있잖아요. 그런데 소프트웨어는 한 번 만들면 복제되고 배포되고 다른 사람이 쓸 수 있어요. 그게 매력적이었습니다.

ChatGPT를 처음 만났을 때

고등학교 1학년 되기 전인 2023년 1월쯤 ChatGPT를 처음 써봤어요. 처음엔 HTML 다음에 뭘 배워야 하는지, JavaScript는 어떻게 공부해야 하는지, 웹사이트를 만들려면 어떤 순서로 가야 하는지 같은 로드맵을 물었어요.

지금 기준으로 보면 그때 ChatGPT 3.5는 불안정했고 틀린 말도 꽤 했어요. 그래도 저한텐 충격이었죠.

이전엔 모르면 검색 결과를 하나하나 뒤져야 했거든요. 이제는 제가 모르는 걸 말로 설명하면 바로 옆에서 같이 생각해주는 도구가 생긴 느낌이었습니다.

저한테 중요했던 건 정답을 바로 얻는 것보다, 모르는 상태에서 다음 질문으로 넘어갈 수 있다는 점이었어요. 그때 처음으로 AI가 개인의 제작 능력을 크게 넓힐 수 있겠다고 느꼈고요.

주변의 불편함을 도구로 만들기

고등학교 2학년쯤 Claude 3 Opus가 나오고 나서 본격적으로 바이브코딩을 시작했어요. 처음엔 지금처럼 체계적이지 않았어요. Claude 웹에서 물어보고, VS Code에 복사하고, 에러 나면 다시 에러 메시지를 붙여넣었죠. 리팩토링도 제대로 안 했고 한 파일에 기능을 다 넣기도 했는데, 돌아가는 건 만들었습니다.

학교 커뮤니티 페이지, QR 출결 시스템, 간단한 웹서비스, AI 챗봇 같은 걸 만들었어요. 대부분 거창한 시장 분석에서 나온 게 아니었고요.

친구가 매일 아침 자습 시간에 손으로 출결 적는 게 비효율적으로 보여서 QR 출결 시스템을 만들었어요. 친구들이 ChatGPT나 Claude를 잘 못 쓰는 것 같아서 여러 모델을 한곳에서 써보는 Sungblab AI를 만들었고요. 친구들이랑 게임하다가 팀 짜는 게 귀찮아서 롤 5대5 스크림 팀짜기 도구도 만들었습니다.

스크림 매니저 팀 빌더의 블루 사이드 로스터. 도란, 오너, 대상혁, 페이즈, 케리아가 예시로 들어가 있다.

돌이켜보면 제가 만든 건 대부분 주변에서 직접 본 불편함에서 출발했죠. 친구가 불편해하거나 제가 귀찮은 일이 생기면 만들었고, 주변 사람들이 잘 모르는 건 도구로 풀어보려고 했고요.

저는 처음부터 완벽한 개발자도 아니었고 대단한 사업가도 아니었어요. 그냥 모르면 묻고, 문제가 보이면 만들고, 안 되면 다시 고치면서 조금씩 앞으로 갔습니다.

"어떻게 하는지 몰라" 다음에 할 수 있는 것

그래서 가끔 "나는 그거 어떻게 하는지 몰라"라는 말을 들으면 조금 아쉬울 때가 있어요.

물론 정말 모를 수 있어요. 저도 지금 모르는 게 훨씬 많고요. 다만 지금은 "모른다" 다음에 "그럼 뭘 물어봐야 하지?"를 바로 물어볼 수 있잖아요.

웹사이트를 만들고 싶은데 아무것도 모르면 이렇게 물어보면 돼요.

나는 웹사이트를 만들고 싶은데 아무것도 모른다.
무엇부터 배워야 하는지 단계별로 알려줘.

설명이 어려우면 다시 물어보면 되고요.

지금 설명이 어렵다.
HTML, CSS, JavaScript가 각각 무슨 역할인지 비유로 설명해줘.

그래도 막막하면 더 작게 쪼개면 돼요.

오늘 당장 따라 할 수 있는 가장 작은 웹페이지 예제를 만들어줘.

개발이 아니어도 마찬가지입니다.

사업 아이디어가 있는데 어디서부터 시작할지 모르겠으면 "이 아이디어가 실제로 사람들이 원하는 문제인지 검증하려면 뭘 물어봐야 해?"라고 할 수 있어요. 투자를 공부하고 싶은데 막막하면 "재무제표를 처음 보는 사람이 손익계산서부터 이해하려면 어떤 순서로 봐야 해?"라고 물어볼 수 있고요.

AI가 모든 걸 해결해주진 않지만, 적어도 첫 질문을 던질 수 있는 환경은 열려 있습니다.

질문은 프롬프트 기술이 아니에요

요즘 프롬프트 엔지니어링이라는 말을 많이 쓰죠. 그런데 제가 생각하는 질문 능력은 프롬프트를 예쁘게 쓰는 기술보다 문제를 쪼개는 능력에 가까워요. 내가 뭘 알고 뭘 모르는지 구분하고, AI가 답할 수 있는 단위로 상황을 정리하고, 나온 답을 그대로 믿지 않고 검증하는 태도까지 포함하고요.

초보자는 보통 이렇게 물어요.

로그인 기능 만들어줘.

조금 더 경험이 생기면 질문이 바뀝니다.

Next.js에서 Supabase Auth를 사용해서 로그인 기능을 만들고 싶다.
이메일 로그인, 세션 유지, 보호된 라우트 처리가 필요하다.
어떤 구조로 구현하면 좋을까?

더 나아가면 자기가 겪는 제약까지 같이 설명하게 되고요.

Next.js에서 서버 컴포넌트와 클라이언트 컴포넌트가 섞여 있다.
SSR에서 세션을 유지하면서 protected route를 처리하고 싶다.
hydration mismatch를 피하려면 어떤 구조가 좋을까?

질문의 수준은 결국 이해의 수준에서 나옵니다. AI 시대에 질문 능력이 중요해졌다고 기본기가 덜 중요해지는 건 아니에요. 좋은 질문도 지식에서 나오는 거죠.

바이브코딩을 할수록 기본기가 필요했어요

처음엔 AI가 코드를 짜주니까 개발 공부를 덜 해도 될 것처럼 느껴질 수 있어요. 실제로 초반엔 그래요. 간단한 CRUD, 로그인, UI, API 연결, 배포 정도는 AI 도움으로 빠르게 만들 수 있으니까요.

저도 그렇게 많이 만들었는데, 프로젝트가 일정 규모를 넘어가면 벽이 옵니다.

폴더 구조가 꼬여요. DB 설계가 이상해져요. 인증이랑 권한이 애매해지고요. 상태관리가 망가지고, 타입이 깨져요. AI가 같은 기능을 다른 방식으로 또 만들기도 하고요. 예전에 왜 이렇게 설계했는지 저도 기억을 못 하게 되고요.

그때부터 AI가 코드를 짜줘도 설계는 사라지지 않고 오히려 더 중요해진다는 걸 깨닫게 됩니다.

SSR이랑 CSR을 알아야 Next.js에서 제대로 질문할 수 있어요. DB 관계를 알아야 schema를 지시할 수 있고요. 인증 구조를 알아야 권한 문제를 잡을 수 있고, 네트워크랑 배포를 알아야 로컬에선 되는데 서버에선 안 되는 문제를 풀 수 있어요. 테스트를 알아야 AI가 만든 코드가 정말 맞는지 확인할 수 있고요.

제가 겪은 바이브코딩은 개발 공부를 없애기보다 그 순서를 바꾸는 기술에 가까웠죠.

예전엔 문법 배우고, 자료구조 배우고, 프레임워크 배우고, 그다음 프로젝트를 만들었다면, 지금은 프로젝트를 먼저 만들고 막히고 질문하면서 그 과정에서 CS랑 소프트웨어 엔지니어링이 왜 필요한지를 몸으로 느끼는 경우가 많아진 것 같아요.

저도 처음엔 Claude한테 코드 달라고 하고 에러 붙여넣는 수준이었어요. 그러다 프로젝트가 커지면서 repo 구조, 문서화, 테스트, 검증, handoff 같은 걸 고민하게 됐고, AI가 만든 결과물을 관리하려면 더 좋은 구조가 필요하다는 걸 알게 되더라고요.

모르는 건 문제가 아니에요

처음부터 다 아는 사람은 거의 없어요. 저도 지금 모르는 게 훨씬 많고, AI를 쓰면서 제가 얼마나 모르는지 더 자주 느껴요. 중요한 건 모르는 상태에서 멈추지 않는 거고요.

모르면 물어봐요. 답이 이상하면 검증해요. 이해가 안 되면 더 쪼개서 물어요. 내가 뭘 모르는지 모르겠으면 그것부터 물어봐요. 답을 얻었으면 작게 실행해보고, 막히면 다시 물어요.

이 루프를 반복하는 사람이 앞으로 더 빠르게 배울 거라고 생각합니다.

물론 질문만 한다고 다 해결되진 않아요. 질문한 다음엔 실행해야 하고, 실행한 다음엔 실패를 봐야 하고, 실패한 다음엔 다시 고쳐야 해요.

AI는 시작을 쉽게 만들어주지만 끝까지 가는 건 여전히 사람 몫이에요. 같은 입력창 앞에서도 누구는 모른다는 말에서 멈추고, 누구는 뭘 물어봐야 할지부터 찾아요. 그 차이가 앞으로 더 커질 것 같아요.

모르는 것보다 모르는 상태에서 멈추는 게 문제입니다. AI 시대에 제가 제일 중요하다고 생각하는 능력은 모르는 걸 질문으로 바꾸는 능력입니다.