[김주한 교수의 정보의료·디지털 사피엔스]바이브코딩이 '코딩 대중화'란 오래된 꿈을 이룰까?

김주한 서울대 의대 정보의학 교수·정신과전문의
김주한 서울대 의대 정보의학 교수·정신과전문의

“1980년대 8비트 컴퓨터 시절에 애플 베이직(BASIC) 언어로 프로그래밍을 시작했다. 하드 드라이브는커녕 플로피 디스크도 없던 시절이다. '베이직 언어'는 음악용 카세트 테이프에 저장돼 느렸고, 날이 더우면 늘어져 코드를 날려먹곤 했다. 소문자는 안 돼서 영문 대문자만으로 코드를 작성했다. 가독성은 형편없었다.”

바이브코딩이 대유행이다. 이제 프로그래밍을 배우지 않아도, 누구나 코드와 애플리케이션(앱)을 '생성'하는 세상이 왔다. 1980년대 PC 혁명을 이끈 베이직은 'Beginner's All-purpose Symbolic Instruction Code'의 약자다. 초보자 비이공계생 누구나 사용하는 '쉬운 프로그래밍'을 향한 '계몽' 운동이었다. 멋진 운동이었다. 그리고 처참한 실패였다. 베이직이 꿈꿨던 '누구나 스스로 자기 코드를 쓰며 살아가는 멋진 세상'은 오지 않았다. 이제 인공지능(AI) 바이브코딩 덕분에 이 오랜 꿈은 이뤄졌을까?

중꺾마! 베이직의 꿈을 잇는 시도들이 계속됐다. 최초의 기계어는 하드웨어(HW)인 레지스터를 직접 제어하는 너무나도 비인간적인 명령코드 집합이었다. 인간적 소통에 목말랐던 사람들은 코드의 '기계성'을 감추고 '추상화하기'를 반복해서 점점 더 사람의 언어와 비슷하게 만들어왔다. 세세한 '기계 동작'은 숨기고, 전면엔 인간의 '의도'를!

그러나 베이직은 '문법'의 난해함을 낮췄을 뿐 '사고 자체'는 낮추지 못했다. 문법은 간결해졌지만, 현실 세상을 계산 가능한 구조로 변환하는 사고는 여전히 까다로운 작업이다. 베이직은 '입력하고 실행해 보는 체험'을 제공했지만, '좋은 문제를 정의하고 좋은 구조로 풀어내는 능력'을 대중화하지 못했다. 수식도 좀 배우고 집합이론이나 플로우차트 같은 형식논리는 배워야 했다.

'선언형' 언어는 새로운 시도였다. DB 질의언어인 SQL이 한 예다. 기존 언어들이 문제해결 절차(How)의 서술에 집중했다면, 선언형 언어는 절차를 숨기고 목표하는 결과(What)만 명시하면 코드는 엔진이 다 생성해 준다.

멋지지 않은가? 그러나 당신은 여전히 당신이 '원하는 것'이 무엇인지 '정확히' 알고 있어야 한다. '쉬운 질문'이 '정확한 질문'은 아니었다. VisiCalc는 1980년대 '게임용' 애플을 '업무용'으로 승격시킨 혁신이었다. '엑셀'의 할아버지뻘(중간에 로터스와 콰트로 등이 있었다)이다. 엑셀 스프레드시트에 수식과 표로 자료를 저장했다.

하지만 '확장'과 '검증'엔 취약했다. 작은 표는 강했지만, 표는 커지면 시스템화돼야 했다. 악몽이 시작됐다. '개인용 자동화'일 뿐 '사회적 소프트웨어(SW)는' 아니었다.

구조화 프로그래밍과 객체지향 기술 발전에 기반한 1990년대 '비주얼 프로그래밍'으로 '화면만 조립하면 앱·코드'가 생성됐지만, 개발 속도가 빨라진 만큼 SW의 복잡성은 더 빨리 커졌다. '이벤트'와 '상태'만으로는 감당 안 됐다.

커져버린 SW의 복잡성은 '더 강건한 구조'를 요구했다. 2000년대 'MIT 스크래치' '블록코딩'은 개념만 남기고 문법 자체를 숨겼다. 하지만 딱 '학습용'까지였다. 2010년대 '노코드'는 권한, 배포 같은 기본 골격도 다 자동화하며 많은 업무 앱을 '설정'만으로 생성해 냈다!

대중화엔 실패했다. '예외'는 업무의 본질이었다. 노코드는 규칙이 안정적인 곳에서 동작했고, 규칙이 변화무쌍한 곳에서 무너졌다. 결국 '현업이 직접 개발'하기보다 '현업이 개발자 도움 없이도 어느 정도'까지였다. 2020년대 '코파일럿'은 타이핑 양을 줄였지만 SW의 '책임'을 줄이지는 못했다. 규칙은 자동화되지만 '예외'는 '책임'을 요구했다. 품질·보안·안전·감사는 '말'로 대체되지 않았다. 특히 사회적 SW는 검증과 추적능력이 필요하다. '개발 능력'이 아닌 '책임 능력'의 영역이다.

코드를 '작성'하지 않고 '대화로 만들어'가는 바이브코딩 시대가 왔다. '코드'는 숨겨지고 '의도'가 전면에 나선다. 하지만 '잘 말하는 거대언어모델(LLM)'이 '책임지는 사람'은 아니다. SW는 '결과물'이 아닌 '지속물'이다. 실행은 짧고 업데이트는 길다. 첫날엔 감탄을 부르지만, 백일 째면 '유지보수'가 기다린다.

바이브 역시 '코딩 대중화 실패'의 한 역사로 남을 듯하다. 바이브가 이룩할 것은 베이직의 오랜 꿈, '코딩 대중화'보다는 'SW 제작의 대중화'일 듯하다. 더 많은 사람이 더 많은 문제를 더 빠르게 '작동하는 형태'로 만들기 시작했다. 이제 “누구나 말로 만들고, 소수가 책임으로 완성한다” “코드는 죽지 않는다. 다만 희미해질 뿐.”

김주한 서울대 의대 정보의학 교수·정신과전문의 juhan@snu.ac.kr