brunch

You can make anything
by writing

C.S.Lewis

by 엄태형 Oct 03. 2017

가끔은 미뤄두는 예외처리

대한민국 개발자로 산다는 것

프로그래밍은 그림 그리기와 유사하다. 예술가들은 여러분에게 언제 멈춰야 할지를 알지 못하면 이 모든 고된 작업을 망치게 될 거라고 말해준다. 칠한 위에 덧칠하고, 세부묘사 위에 다시 세부묘사를 하다 보면, 그림은 물감 속에서 사라진다. 완벽하지 않을 수도 있다. 걱정하지 마라. 완벽해지기란 불가능하다.
- 앤드류 헌트, 데이비드 토머스 《실용주의 프로그래머》 中


모든 것은 완벽해야 한다. 실수는 용납될 수 없다.

한 달에 한 번씩 찾아오는 시스템 정기작업을 며칠 앞둔 날이면 나도 모르게 신경이 날카로워진다. 새로 추가되거나 수정된 기능에 대해 정기적으로 작업을 진행하는데, 이때는 사용자가 적은 일요일 아침시간을 이용한다. 문서에 빼곡히 정리된 시나리오대로 1차 작업자가 끝내면 2차 작업자가 테스트를 진행하고, 그것도 모자라 회의실에 모여 소스를 일일이 체크하는 소스코드 리뷰 작업을 거친다. 소스가 규약에 맞게 개발됐는지, 개발된 소스에 오류의 여지는 없는지, 성능 이슈를 일으킬 만한 부분은 없는지, 타기능과의 의존성은 고려했는지, 발생 가능한 모든 가능성을 열어둔 채 만전을 기한다.


담당하는 시스템이 전 세계를 대상으로 제품을 판매하는 국내 일등 제조회사의 중요 시스템이다 보니 자칫 오류가 발생하면 제품 생산에 차질을 주는 것은 물론, 잘못 주문된 물품으로 인해 막대한 금전적 손실을 초래할 수도 있다. 말 그대로 시스템은 한치의 오차 없이 동작해야 하며, 오류는 이유를 불문하고 용납될 수 없다.


작업을 진행한 지 5년을 넘어섰다. 철저히 준비한다고 하지만 사람이 하는 일이다 보니 실제로 문제가 발생하기도 했고 때로는 치명적인 문제로 상당히 애를 먹기도 했다. 며칠 밤을 새가며 시스템을 정상화하고, 재발 방지를 위한 대책 보고서를 작성했다. 또한 고객을 일일이 찾아 다니며 양해를 구해야 하니 여간 번거로운 게 아니었다. 이왕이면 시스템을 담당하고 있는 순간만큼은 문제가 발생하지 않아야 한다. 그만큼 뒤처리는 버거운 작업이다. 


"왜 이 부분은 예외처리 하지 않았어?!"


개발자가 개발을 잘 했는지 확인하고, 결점을 찾아내는 자리이다 보니 코드 점검 시간의 분위기는 무겁다. 무엇 하나 놓칠까 싶어 자못 진지한 표정으로 후배를 채근한다. 어쩔 줄 몰라 하며 아무 말도 못하고 입술만 질근거리는 후배를 보고 있자니 마음 한켠이 무거워진다. 회의실을 나가면 어느샌가 쫓아와 살갑게 “선배님”이라고 부르는 후배여서 그런지 마음이 더 쓰인다. 매달 하는 정기작업이 이제는 익숙해질 만도 한데, 마음과는 다르게 엄격한 시선으로 누군가를 바라봐야 한다는 것은 아무래도 쉽게 적응되지 않는 일이다.


예외처리(exception handling)란 정상적인 프로그램 흐름에 어긋나는 예외사항을 별도로 처리하는 작업을 말한다. 즉, 프로그램 실행 중에 생기는 특수한 이상현상을 사전에 인식하고 별도의 처리를 해둠으로써 발생 가능한 문제를 미연에 방지하겠다는 의도로 볼 수 있다. 사람으로 치자면 빈틈을 없애고자 노력하는 완벽주의자적 성향과 같다.


물론, 실제로 개발자의 미흡한 예외처리로 인해 시스템에 치명적인 문제가 발생한 경우를 여러 번 경험했기에 처리 자체를 꼬집어 비판하고 싶은 마음은 없다. 오히려 직업적 사명감을 생각한다면 제대로 처리해 안정화된 운영에 도움을 준다는 측면에서 바람직해 보인다.


그럼에도 가끔 예외처리를 미뤄두고 싶을 때가 있다.

무릇 완벽하다는 것이 주는 '숨막힘'을 느껴본 사람이라면 내가 말하고자 하는 바를 이해할 수 있을 것이다. 치열하게 경쟁하고, 실수가 용납되지 않는 세상에서 기계처럼 완벽하게 무결점을 지향하는 인간의 모습이란 왠지 모르게 쓸쓸함으로 다가온다.


사소한 실수조차 시스템에는 치명적일 수 있다. 작은 실수조차 용납하지 않는 개발자라는 직업적 특성 때문인지 일상생활에서조차 지나치게 완벽해지려는 내 모습을 발견하게 된다. 프로그램 개발을 하면서 몸에 밴 '혹시나'라는 염려 때문인지 발생할지도 모를 예외사항을 염두에 두면서 살아간다. 


사소한 것 하나까지도 꼼꼼히 기록해두고, 혹시 생각하지 못한 부분은 없는지 한번 더 살펴가며, 다른 사람에게 맡기는 것보다 가급적 스스로 처리하려고 한다. 하지만 그로 인해 언제나 감당하기 힘들 정도로 많은 일을 쌓아두고, 지나치게 높은 목표를 설정함으로써 오히려 스트레스의 원인이 되기도 한다. 

끝이 있다면 조금은 나아지겠지만, 얼마나 더 자신을 채찍질해가며 완벽하기 위해 부족한 모습을 보며 죄책감을 느껴야 하는 것인지. 무엇인가 완벽해지길 거부하는 사람들을 흔히 '부족한 사람', '맘 편한 사람', '나와 다른 사람’으로 치부하며 흠잡을 생각부터 하고 보지만 어쩌면 그들이 인생을 더 아름답게 살고 있는지도 모를 일이다. 


사실 우리는 살아가면서 '완벽함'에 도달하기 위해 얼마나 많은 노력을 기울이는가. 친구들과의 경쟁에서 이겨야만 좋은 대학을 갈 수 있고 좋은 대학에 들

어가야 좋은 직장에 들어갈 수 있고 좋은 직장에 들어가야 돈 걱정 없이 행복하게 살 수 있다는 덧없는 관념을 위해 치열하게 친구들과, 동료들과 경쟁하며 살아간다. 하지만 어느 순간부터인가 완벽한 인생에 다가서기 위해 시작된 경쟁만능주의는 결국엔 나조차 산화될 때까지 멈추지 않고 폭주할 것만 같아 두려웠고 완벽함을 위해 다양성이 사라진 세상이 무서웠다.


어느 순간부터 '경쟁 만능'이 자본주의의 당연한 이념인 양 받아들여지고, 각박한 현실을 조장하는 세태를 보고 있자면 울컥하는 거부감부터 생겼고, 더 이상 누군가가 세워놓은 주의 따위에 무비판적으로 인생을 내버려두기 싫었다. 그동안 모범생이라는 시선에 사로잡혀 억눌러왔던 반항심이 파도처럼 일시에 몰려드는 것을 느꼈다. 완벽함이라는 틀 속에서 존재해야만 행복해질 거라는 착각의 틀에 바위를 던져 깨주고 싶었다.


어떻게 보면 완벽은 사회가 가둬놓은 통념의 일부가 아닐까. 여자이기에 예뻐야 하고, 남자이기에 든든해야 하고, 어른은 어른스러워야 하고, 행복하려면 돈을 많이 벌어야 하는 식의 무의식에 각인된 편견이다. 그것이 전부인 양 착각하면서 살기에 완벽함에 대한 부정적인 기현상이 발생한다. 


누군가가 정한 미의 기준을 맞추기 위해 성형외과는 필수 코스가 돼 가고, 좋은 대학만 들어가면 모든 게 끝날 것처럼 아이들에게 잘못된 이상을 심어줬으며, 잘못된 선택을 해도 돈이 되돌릴 수 있을 거라는 식의 사고방식이 성행한다.


무릇 시스템에서는 100% 무결함을 추구하지만, 사람이 하는 일이 너무 완벽하다면 그 또한 인간미가 없다는 생각이 든다. '빈틈'은 오류이고 약점이라는 생각보다는 다른 사람이 들어올 수 있는 약간의 틈이라고 생각하면 어떨까? 꽉 차서 비집고 들어갈 틈이 없다면 왠지 모르게 인간적인 냄새가 나질 않고, 날이 선 칼날처럼 사람을 긴장시킨다. 남녀 사이에서도 틈이 있어야 챙겨주고 싶고, 서로에게 줄 것이 많아야 더 애틋해지지 않던가. 빈틈을 억지로 감추려고만 하지 말고 어느 정도는 받아들이고 인정해보자. 완벽해 보이는 사람이 하는 허술한 실수는 얼마나 사람을 사랑스럽게 만들고, 또 정겹게 만드는지. 사람과 사람이 지나갈 수 있는 길인 빈틈을 열어 두며 살았으면 한다.


어떻게 보면 불완전함을 받아들인다는 건 자신을 있는 그대로 인정한다는 것이 아닐까 싶다. 남들의 잘난 모습과 비교되지 않는 고유한 자신의 모습 그대로를 존중한다는 의미로서 말이다. 부족한 그대로의 모습을 가치 있게 여기는 마음이 아름답다.


우린 완벽해지길 원하지만 실상 그로 인해 놓치고 있는 것들도 많다. 완벽에 대한 집착은 만족이란 걸 모른다. 인간은 지극히 불완전한 존재이며, 무릇 위대한 현자라고 칭송받던 사람들조차 실수를 한다는 점에서 지극히 인간적이다.


진정한 유머는 자신까지도 소재로 승화시킬 수 있는 것이다. 바늘 하나 들어가지 않을 것 같은 사람이 자신을 낮춰가며 자신을 웃음의 소재로 사용하는데 누가 그를 비인간적이라고 손가락질 하겠는가? 





애플의 로고가 완벽하게 둥근 사과 모양이 아닌, 한 입 베어 문 모양이기에 기억 속에 더 오래 각인될 수 있음을 잊지 말아야 한다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari