[망치와 리눅스] 01화. 코드 작성의 중요성: 백업 지옥과 블록화의 깨달음
[망치와 리눅스] 01화. 코드 작성의 중요성: 백업 지옥과 블록화의 깨달음
내가 리눅스를 공부한 지 정확히 1년이 되어간다. 올해 내 나이는 52세.
처음에 시작한 건 그저 막연한 동경심 때문이었다. "무언가 만들어 간다는 게 멋있다"라는 생각, 그리고 내가 만든 작은 코드 하나하나가 실행이 될 때 느끼는 그 짜릿한 쾌감이 너무 신기하고 좋았다.
맨땅에 헤딩
내 본업은 건설 현장에서 땀 흘려 일하는 것이다. 리눅스의 '리' 자도 모르고 시작했으니 참 고생도 많이 했다. 처음엔 한글 설정이 안 돼서 도대체 몇 번이나 시스템을 완전히 밀고 다시 설치했는지 모른다.
게다가 내가 처음 공부를 시작했을 때는 지금처럼 뛰어난 AI가 나와서 도와주지도 않던 때였다. 그래서 완전히 맨땅에 헤딩하는 식으로 공부를 했다. 물론 지금도 여전히 병아리 수준이지만 말이다. (ㅎㅎㅎ)
현장에서 고된 작업을 마치고 집에 오면 저녁 6시, 씻고 밥 먹고 나면 어느덧 밤 8시가 되었다. 그때부터 컴퓨터 앞에 앉아 하나하나 공부해 나갔다. 앞으로도 그렇겠지만 정말이지 수많은 시행착오를 겪었다.
설상가상으로 나는 영어를 전혀 모른다. 하다못해 'school'이라는 단어조차 몰랐으니 말이다. 방법이 없어서 무작정 손에 익을 때까지 끊임없이 반복하고 또 반복했다. 머릿속에서 잊어버릴까 봐 무서워서 손가락이 기억하도록 끈질기게 붙잡았다.
에이전트와의 첫 만남
그러던 와중에 자율형 AI '에이전트(Agent)'들이 세상에 나오기 시작했다. 그전에는 이런 세계가 있는 줄도 몰랐는데, 이때부터 무언가를 만들어 간다는 게 말할 수 없이 재미있어졌다.
그저 에이전트가 내 지시를 듣고 무언가를 뚝딱뚝딱 만들면, 그걸 가만히 바라만 보고 있어도 즐거웠다. 내가 직접 타이핑하는 게 아닌데도 아주 작은 곳부터 완성되어 가는 모습이 신기했다.
처음에는 리눅스 명령어가 너무 많고 옵션도 복잡하니까 도저히 머릿속으로 외울 수가 없었다. 그래서 리눅스 매뉴얼 도움말인 man 명령어를 한글화하는 작업부터 무작정 시작했다. 이것도 시간이 정말 많이 걸렸다. 아마 한 달 정도는 꼬박 걸려서 만들었을 것이다.
처음에 한글화가 완성되었을 때 정말이지 기뻤다. 맨땅에 헤딩하며 원리를 깨쳐가는 첫 성과였다.
무료의 발견
내가 처음 접한 AI 에이전트는 '오픈코드'라는 곳이었다. 그곳에 무료로 사용할 수 있는 에이전트가 꽤 많았다. 그런데 무료 버전이라 그런지 일일 사용 제한이 걸려 있었다. 한 두어 시간 쓰고 나면 더 이상 작동하지 않았다. 아마도 내 IP 주소를 확인해서 차단하는 것 같았다.
기죽지 않고 '혹시나' 하는 마음에 VPN을 켜서 접속해 보았다. 그랬더니 국가를 변경할 때마다 사용량이 리셋되면서 다시 쓸 수 있는 게 아닌가! 나에게는 정말 엄청난 발견이었다. 콜럼버스가 신대륙을 발견한 것보다 더 기뻤다고나 할까. (ㅋㅋ)
이때부터는 흥분돼서 정말 하루에 많이 자면 4시간씩 자면서 열심히 몰두했다. 주위 친구들은 "저 녀석 드디어 미쳤다", "저 열정으로 젊었을 때 공부했으면 하버드도 갔을 거다"라며 웃어댔다.
하긴 내가 생각해도 하버드는 못 가도 서울대는 갔을 것 같다는 생각이 잠시 들기도 했다. 이때 느낀 쾌감은 말로 다 표현하지 못한다. 왠지 내가 거대한 서버를 해킹해서 무료로 마음껏 사용하는 기분이 들기도 했다.
로컬 도전과 15,000줄의 악몽
그러다 문득 이런 생각이 스쳤다. '아, 오픈소스 에이전트 말고, 로컬(내 컴퓨터)에 직접 모델을 올려서 나만의 시스템을 만들어보면 어떨까?' 하고 말이다. 지금 와서 생각하면 정말 순수하고도 무모한 생각이었다.
만약 지금 누군가 똑같이 다시 하라고 하면 절대 못 한다. 정말이지 그때 누적된 코드가 한 15,000줄이 넘어갈 것이다. 코드를 한 줄 한 줄 기억하진 못하지만, 전체적인 흐름과 '로직'만큼은 머릿속에 정확하게 꿰차고 있다. 어찌나 많이 삭제하고 다시 만들기를 반복했던지, 이거 하나 제대로 구현하는 데만 한 세 달은 걸렸던 것 같다. 처음엔 한 5,000줄 정도로 시작했었다.
그런데 이때부터 치명적인 문제가 발생했다. 코드 기능을 하나만 변경하면 프로그램 전체가 보기 좋게 꼬여서 먹통이 되어버리는 것이었다.
백업 지옥
그렇다. 그때서야 중요한 사실을 깨달았다. 나는 그동안 스마트폰 앱처럼 프로그램을 다운로드 받으면 그냥 파일 하나만 달랑 깔리는 줄 알았다. 그런데 자세히 들여다보니 프로그램 하나를 설치할 때 내부적으로 무수히 많은 연관 파일들이 함께 엮여서 설치된다는 걸 평생 처음 알게 되었다. 그동안 내 분야가 아니었으니 전혀 관심이 없었기에 당연한 일이었다.
처음부터 이 구조를 알았더라면 좋았을 텐데, 뼈저린 실패를 겪고 나서야 코드를 조각조각 나누는 '블록화'를 해야 한다는 사실을 비로소 깨달았다.
그리고 이때부터 진짜 악몽이 시작되었다. 코드 하나를 변경할 때마다 불안해서 계속 백업을 시켰다. 코드 한 줄만 잘못 들어가도 프로그램이 뻥나버리거나 전혀 다른 방향으로 작동해 버리니 무서웠던 것이다.
불안한 마음에 아주 사방천지에 백업본을 복사해 두었다. 한 여섯 군데에 나누어 저장을 해두었는데, 너무 많이 백업을 해두다 보니 두 번째 문제가 터졌다. 어떤 게 진짜 최신 코드이고 뭐가 뭔지 도저히 구분을 못 하겠는 것이다. '이게 그건가? 저게 그건가?' 하면서 모니터 앞에서 정말 심각하게 멘탈이 붕괴되는 경험을 했다.