
제목
CLI 한 줄도 못 짜는 개발자, 3년 뒤 AI의 '손발'로 전락합니다.
본문
최근 이직한 네임드 기업의 온보딩 과정은 충격적이었습니다. 스타트업 시절에는 서버가 터지면 직접 IDC로 뛰어갈 기세로 '야생'에서 굴렀는데, 이곳은 모든 것이 시스템화되어 있더군요. 동료들은 Cursor나 GitHub Copilot을 능숙하게 다루며 비즈니스 로직을 찍어냅니다. 솔직히 말해 겁이 났습니다. '내가 8년 동안 쌓아온 삽질의 경험이, 이제 프롬프트 몇 줄로 대체되는 건가?' 하는 불안감 말이죠. 하지만 지난 주말, 아주 사소하고 잉여로운 사이드 프로젝트를 진행하며 그 불안감을 씻어낼 수 있었습니다. 역설적이게도 AI 시대에 개발자의 생존 무기는 '최첨단 AI 활용 능력'이 아니라, '밑바닥 원리를 파고드는 집요함'에 있다는 사실을 깨달았기 때문입니다.
발단은 제 개인 블로그 푸터에 넣을 '88x31 레트로 웹 버튼'을 만들고 싶다는 단순한 욕망이었습니다. 왕년에 유행하던 그 픽셀 감성을 살리고 싶었는데, 문제는 제가 디자인 잼병이라는 점이었습니다. 디자이너 동료에게 부탁하기엔 너무 하찮은 일이었고, DALL-E에게 그려달라고 하기엔 제가 원하는 그 특유의 'Game Boy Color 부팅 화면' 감성이 나오지 않았습니다. 그래서 저는 개발자다운, 아니 가장 무식하고 확실한 방법을 선택했습니다. 닌텐도 게임보이의 부팅 롬(ROM)에서 애니메이션을 직접 뜯어내기로 한 것입니다.
여기서부터 진짜 '삽질'이 시작되었습니다. 에뮬레이터(SameBoy)를 켜고 화면을 캡처하면 될 줄 알았는데, 정확한 프레임 단위의 제어가 필요했습니다. 결국 저는 디버거를 열었습니다. 닌텐도의 어셈블리 코드를 들여다보며 Wait_for_next_VBLANK라는 함수를 찾아냈습니다. LCD가 다음 프레임을 그리기 전 대기하는 'VBlank' 시점을 찾아 브레이크포인트를 걸고, 메모리 주소 $0291을 추적했습니다. 남들이 보면 "그깟 버튼 하나 만드는데 어셈블리까지 까보냐"고 비웃을지도 모릅니다. 하지만 이 과정에서 시스템이 화면을 렌더링하는 가장 로우 레벨의 원리를 다시금 복기할 수 있었습니다.
이미지를 추출한 뒤에는 ImageMagick이라는 CLI 도구와 씨름했습니다. 175장의 스크린샷을 GIF로 합치고, 88x31 크기에 맞춰 자르고(crop), 줄이고(resize), 회색 테두리를 입히는 작업이었습니다. 단순히 포토샵으로 했다면 클릭 몇 번으로 끝났을지 모릅니다. 하지만 저는 터미널 창에서 magick 명령어를 파이프라인으로 연결하며 자동화 과정을 설계했습니다. 특히 배경을 투명하게 만들거나 색상을 리매핑하는 과정에서 '고스팅(Ghosting)' 현상, 즉 잔상이 남는 문제가 발생했을 때가 압권이었습니다. 단순히 명령어를 복사해 넣는 것으로는 해결되지 않았고, GIF의 압축 방식과 색상 테이블의 원리를 이해해야만 해결할 수 있는 문제였습니다.
이 과정에서 뼈저리게 느낀 점이 있습니다. 만약 제가 CLI 환경이나 이미지 처리의 기본 원리(매직 넘버, 헥사 코드, 프레임 레이트 계산 등)를 몰랐다면, AI에게 질문조차 제대로 던지지 못했을 겁니다. Claude나 ChatGPT는 훌륭한 도구지만, 그들이 뱉어낸 코드가 왜 오류를 내는지, 특히 magick -coalesce 옵션이 왜 필요한지 설명해주지 않을 때가 많습니다. 결국 문제를 해결하는 건 AI가 아니라, 그 도구가 뱉어낸 결과물의 '밑바닥'을 이해하고 있는 개발자의 몫이었습니다.
주니어 시절, 저는 선배들이 "원리를 알아야 한다"고 잔소리할 때마다 꼰대 같다고 생각했습니다. "돌아가기만 하면 되지, 굳이?"라고 반문했죠. 하지만 8년 차가 되어보니 알겠습니다. 화려한 프레임워크와 강력한 AI 도구들이 쏟아지는 지금이야말로, 역설적으로 그 껍데기 아래에 있는 OS, 네트워크, 메모리 구조를 이해하는 능력이 절실합니다. 도구는 누구나 쓸 수 있습니다. 하지만 도구가 해결하지 못하는 1%의 크리티컬한 이슈는 결국 '밑바닥'을 아는 사람만이 해결합니다.
후배님들, 당장 생산성을 위해 AI를 쓰는 것을 말리지는 않습니다. 저도 매일 씁니다. 하지만 가끔은 AI를 끄고, 불편한 CLI 환경에서 날것의 로그를 들여다보거나, 라이브러리의 소스 코드를 직접 까보는 '비효율적인' 시간을 가지셨으면 합니다. 그 고통스러운 삽질의 시간이 3년 뒤, 여러분을 단순한 'AI 오퍼레이터'가 아닌 대체 불가능한 '엔지니어'로 만들어줄 유일한 무기가 될 것입니다.


