쉬운·기술사전비유로 이해하는 AI·개발 용어
배포와 운영

버그

Bug

소프트웨어에서 무언가 잘못 작동할 때, 사람들은 그것을 버그라고 불러요.

버그 개념 다이어그램

소프트웨어에서 무언가 잘못 작동할 때, 사람들은 그것을 버그라고 불러요. 어딘가 귀여운 말처럼 들리기도 하는데, 실제로는 그보다 훨씬 단순해요.

버그는 소프트웨어가 의도한 것과 다르게 동작하게 만드는 결함이에요. 그게 전부예요. 바이러스도 아니고, 누군가의 공격도 아니고, 컴퓨터가 "이상한 날"을 보내는 것도 아니에요. 어딘가에서 사람(또는 AI)이 잘못된 명령을 작성했거나, 어떤 상황을 고려하지 못했거나, 설정을 잘못했을 뿐이에요. 그래서 버튼이 아무 반응이 없거나, 합계가 틀리거나, 특정 입력에서 페이지가 다운돼요. 각각 모두 버그예요. 소프트웨어가 해야 하는 일과 실제로 하는 일 사이의 간격이죠.

이 단어에는 실제 유래가 있어요. 1947년, 엔지니어들이 컴퓨터 회로 안에 끼어 오작동을 일으킨 진짜 나방을 발견했어요. 그들은 나방을 로그북에 붙여두며 "버그가 실제로 발견된 첫 번째 사례"라고 적었고, 그 이미지가 굳어졌어요. (사실 '버그'라는 단어는 그 이전부터 결함을 가리키는 표현으로 쓰였으니, 나방이 단어를 만든 건 아니에요. 하지만 가장 유명한 사례예요.) 그래서 "버그가 있다"는 말을 들으면 이렇게 떠올리시면 돼요. 기계 안에 작은 무언가가 끼어 잘못 작동하게 만드는 것. 악의가 아니라 결함이에요.

AI와 함께 작업할 때 특히 도움이 되는 관점이 있어요. 버그는 도덕적 실패가 아니고, 누군가가 일을 못한다는 신호도 아니에요. 버그는 정상이에요. 당신의 스마트폰에 설치된 그 유명하고 잘 만들어진 앱들도 전부 버그를 가지고 있어요. 코드는 방대한 명령어 덩어리이고, 실제 사용자가 던질 모든 상황에 대해 모든 명령을 완벽하게 맞추는 건 정말 어려워요. 목표는 버그 없는 코드를 쓰는 게 아니에요. 그건 불가능해요. 목표는 버그가 문제를 일으키기 전에 더 빨리 찾아 고치는 거예요.

여기서 앞서 다룬 개념들이 연결돼요. 버그가 터지면 프로그램은 종종 스택 트레이스를 출력해요. 어디서 무너졌는지 알려주는 고백문이에요. 로그는 버그의 흔적이 쌓이는 기록 테이프예요. 버그를 찾는다는 건 보통 이것들을 읽으며 어떤 명령이 잘못됐는지 찾는 과정이에요. "버그를 쫓고 있다"는 말을 풀면 이렇게 돼요. 무언가 잘못 작동하고 있고, 그 원인이 된 정확한 지점을 찾고 있다는 뜻이에요.

AI와 협업할 때 이 맥락이 생각의 틀을 바꿔줘요. AI가 코드를 짜면 버그도 만들어요. 사람이 하는 것과 똑같이 어려운 일을 하고 있기 때문이에요. 그게 AI를 불신할 이유가 아니에요. 테스트를 하고, 무언가 터지면 스택 트레이스를 읽고, "이건 아닌데, 이 부분을 고쳐줘" 하는 몇 번의 수정을 당연하게 받아들이면 돼요. 버그는 소프트웨어를 만드는 과정의 예외가 아니에요. 날씨 같은 거예요.

버그는 소프트웨어의 결함이에요. 한때는 기계 속에 진짜 나방이었고, 지금은 잘못된 동작을 일으키는 모든 것을 가리켜요. 모든 프로그램이 버그를 가져요. 실력은 버그를 피하는 데 있지 않아요. 버그를 찾아내는 데 있어요.