현실속에 비친 프로그래밍의 진실,버그와의 전쟁

프로그래머 하면 뭔가 새로운 것을 계속 만들어내는데 가장 많은 시간을 쓸것 같지만 현실은 그렇지 않다. 클라이브 톰슨이 쓴 '은밀한 설계자들'에 따르면 프로그래머들이  가장 많이 하는 일을 버그를 고치는 일이다.

지난 수십 년간 TV와 영화 속에서 프로그래밍은 프로그래머가 미친 듯이 소란스럽게 키보드를 눌러가며 자신의 머릿속에 있는 코드를 쏟아내는 일로 묘사되었다. 그러나 현실은 매우 많이 다르다. 여러분이 작업 중인 프로그래머를 본다면 대개 앉아서 모니터를 보며 얼굴을 찡그리고 답답한 듯 머리를 쓸어올리며 다소 안절부절 못하고 있다.

여러분이 프로그래머가 생각하는 방식을 잘 이해하고 싶다면 그들이 하루종일 하는 일을 꼼꼼히 살펴보는 것이 도움이 된다. 프로그램에 흥미 있는 사람들은 주로 무언가 만들며, 만지작 거리고 논리 문제를 다루며 시간 보내기를 좋아한다. 그러나 이 분야에서 성공하는 사람들은 매우 힘든 상대와 지루한 싸움을 벌이고 버티며 끝내 이길 수 있는 사람들이다. 그 상대는 바로 버그다.

버그란 정확히 무엇일까? 버그는 프로그램 속에 들어 있는 에러로 철자가 늘린 경우도 있고 문법이 틀린 경우도 있다. 버그는 프로그램의 올바른 작동을 방해한다. 이런 버그는 믿을 수 없을 만큼 아주 작고 사소하다.

오늘날에는 재미있게도 자신의 프로그램이 아닌 다른 사람의 프로그램이 있는 버그를 해결해야 하는 일이 흔하다. 이런 프로그램들은 현재 자신이 다니는 회사에서 몇 년 전에 누군가 작성한 것으로 '피네간의 경야'라는 소설처럼 복잡하고 구조는 엉망진창이며, 변수 이름 역시 매우 당황스러워 소위 스파게티 코드라고 한다. 이런 일을 맡은 프로그래머는 하나씩 문제를 고쳐 나가지만 일이 끝날 것 같지 않다.

이런 환경에서 멘탈을 유지하는 것은 만만치 않다. 버그에 지쳐 쓰러지지 않고 버틸 수 있으려면 어떤 소양을 갖춰야 할까?

여러 가지 특징이 있겠지만 프로그래머의 가장 핵심적인 특징을 한 가지만 고른다면 잔인할 만큼 가차 없고 견디기 힘든 실패를 오히려 한 없이 재미있어 하는 능력이라고 할 수 있다. 이건 프로그래머들이 키보드 앞에 앉아 실제로 프로그래밍하는 시간이 매우 적은 이유이기도 하다.

약간 과장해서 혹은 나름 의미를 담아 프로그래밍에 대해 이야기하면 프로그래밍은 프로그램을 작성하는 일이라기 보다 오히려 프로그램을 고치는 일이다. 컴퓨터 과학의 선구자 가운데 한명인 시모어 페퍼트 교수는 "처음부터 올바르게 작동하는 프로그램은 없습니다"라고 말하기도 했다.  프로그래머라는 직업의 한 가지 특징은 문제해결 과정의 고통을 견딜 수 있는 사람들이 스스로 선택한 직업이라는 점이다. 미친 짓처럼 보일 수도 있고 약간 미쳐야 하는 일일 수도 있다.

고통스러울 만큼 정확성과 씨름해야 하는 프로그래밍에는 양면성이 있다. 머리를 쥐어 뜯어가며 버그를 잡을 때는 프로그래밍이 너무 고통스럽지만 노력 끝에 버그를 고치는 순간 더할 나위 없이 짜릿하고 기쁘다. 오직 신념과 지적 능력만으로 범죄 현장을 낱낱이 분석하고 끈기 있게 증거를 추적해 살인자를 밝혀 내고는 지적인 승리의 순간을 만끽하는 셜록 홈즈와 같다.

테크잇 뉴스레터를 전해드립니다!

오피니언 기반 테크 블로그 'TechIt'
테크 비즈니스를 보는 다양한 통찰들을 이메일로 간편하게 받아 볼 수 있습니다.

About the author

endgame
endgame

테크 블로거 / 공유할만한 글로벌 테크 소식들 틈틈히 전달하겠습니다

No more pages to load


TechIT

테크 비즈니스를 보는 다양한 통찰 '테크잇'

독자 여러분들께서 좋은 의견이나 문의 사항이 있으시면 아래 양식에 따라 문의 주시기 바랍니다.

Contact