brunch

You can make anything
by writing

C.S.Lewis

by 엄태형 Sep 12. 2017

인생을 정제하는 리팩터링

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

아름다운 마무리는 비움이다. 채움만을 위해 달려온 생각을 버리고 비움에 다가가는 것이다.
그러므로 아름다운 마무리는 비움이고, 그 비움이 가져다 주는 충만으로 자신을 채운다.
- 법정


처음부터 완벽한 코드는 없다. 
덜어내고 덜어내서 더는 덜어낼 수 없는 코드가 좋은 코드다.

내가 생각하는 가장 이상적인 소스코드의 모습이다. 시스템을 운영하다 보면 간단하고 단순한 코드가 이해하기 쉽고 버그도 없다는 것을 깨닫게 된다. 이런 코드를 두고 가독성이 좋고 재활용성이 뛰어나다고 표현한다. 그뿐만 아니라 지속적인 코드 정제 작업을 독려하는데, 이렇게 정제하는 과정을 IT 용어로 리팩터링(refactoring)이라고 한다. 


리팩터링의 사전적 정의는 프로그램의 기능을 바꾸지 않고 내부를 수정해 성능 및 가독성을 개선하는 일을 말한다. 그리고 이것은 실제 프로그래머가 갖춰야 할 핵심 기술 중 하나다. 큰 프로젝트의 경우에는 보통 몇만 번의 리팩터링 작업이 이뤄진다는 점을 생각하면 하나의 시스템이 세상에 모습을 드러내는 데는 실로 엄청난 노력과 인내의 과정이 수반되는 것이다. 흩어진 변수를 모으고, 비대해진 함수는 용도별로 분리하고, 중복된 코드를 제거하고, 불필요한 로직을 정리하고, 주석을 정비하는 것까지. 소스코드를 리팩터링은 끊임없이 제거하고 정리하는 작업으로, 어찌 보면 우리가 인생을 정제하는 과정과 많이 닮아 있다.


개발자로서의 10년을 되돌아보면 '바쁘다'라는 말이 가장 먼저 떠오른다. 무엇을 위해 바쁜지, 무엇을 때문에 허둥대며 시간에 쫓겨왔는지도 모른 채 앞만 보며 달려왔다. 이 길에 먼저 들어선 선배들의 그림자를 따라가며, 그들의 바쁜 일상을 배턴처럼 이어받아 살아왔다. 아이들은 내 일상만큼이나 빠르게 커가는데, 기억에 남을 소중한 추억도 만들어 주지 못한 채 시간을 보내버린 것 같아 안타깝다. 



지나온 10년, 나는 인생을 리팩터링하며 살아왔는가? 나는 인생을 정리하며 살고 있는가? 때론 인생에도 다이어트가 필요한데, 덕지덕지 욕심만 덧붙여 비대해진 인생을 힘겹게 끌고 가고 있는 것은 아닌가? 타인의 시선을 의식한 나머지 다른 사람이 바라는 삶을 대신 살아가며, 내가 원치 않는 짐들까지 어깨에 짊어지고 있지는 않은지 돌아보게 된다. 생각이 여기까지 미치고 나면 하나뿐인 내 인생에도 리팩터링이 필요하다는 마음뿐이다.



요즘 미니멀 라이프가 유행이다. 즉, 주변에 불필요한 물건을 버리고 간단히 살다 보면 좋아하는 것들이 보이기 시작하고, 물건을 사고 싶은 욕심을 없애면 삶을 대하는 자세가 달라진다는 것이다. 실제로 우리는 다른 사람의 생활 수준에 맞추기 위해 더 많은 물건을 사고, 값비싼 물건을 소유해야만 자신의 가치가 올라간다고 여긴다. 결국 물건 자체가 자신의 존재를 대변하는 수단이 되어고, 이미 많은 것들을 가지고 있음에도 갖지 못한 것들 때문에 불행을 느낀다. 미니멀 라이프를 추구하는 사람들은 단순하게 살기로 하면서 얻게 되는 가장 큰 변화를 다른 사람들과 비교하는 것을 멈추고 자신에게 집중하게 됐다는 점에서 찾는다. 주변의 물건을 줄이자 내게 무엇이 더 가치 있는 것인지 근원적인 질문을 던지게 되었으며 물질적인 풍요가 반드시 행복으로 이어지는 것은 아님을 깨닫게 되었다고 한다. 


그들은 물건을 버리는 것을 넘어서 불필요한 인간관계나 낭비되는 시간을 정리하면서 소중한 사람들과 예전보다 더 많은 시간을 보내고, 좀 더 의미 있는 삶을 살게 됐다고 말한다. 결국, 그들은 버리는 것이 잃는 게 아니라 얻는 것이라는 것을 깨달았다. 실제로 그들은 버리면 버릴수록 더 큰 행복감을 느끼게 됐다. 


나도 얼마 전부터 회사 내 사무 공간을 정리하기 시작했다. 지금은 읽지 않는 전문서적, 예전에 참고했던 문서들, 모니터 바탕화면을 가득 채운 파일들, 먹지 못할 정도로 오래된 영양제, 앞으로도 쓸 것 같지 않은 필기도구, 한창 운동한다고 사놓은 운동복까지... 내 주변에도 불필요한 물건들이 참 많다. 한 번에 모든 물건을 정리할 수는 없었지만 몇 번에 걸쳐 버리고 빈 자리를 청소까지 하고 나니 마음마저 가벼워진 느낌이 들었다. 그리고 확 트인 공간은 여유로운 기분마저 들게 한다. 단지 주변을 정리하는 단순한 행동만으로도 일상의 소소한 행복을 찾을 수 있겠다는 생각까지 들자 나의 공간과 시간, 삶에서 차지하고 있는 불필요한 물건, 인맥, 정보, 그리고 일을 정리하면서 그동안 지나쳐 온 가치들을 다시 돌아보게 됐다. 비단 물건뿐만 아니라을 넘어서 주변을 정리할 필요가 있었던 것이다. 


소스코드를 리팩터링할 때 가장 많은 부분을 차지하는 것이 중복되고 불필요한 부분을 제거하는 작업이다. 이러한 부분의 문제는 결국 비효율적인 코드가 만들어진다는 것이다. 이는 다른 부분에 할당할 수 있는 리소스를 낭비하게 하고, 이런 부분이 쌓이다 보면 전체적인 성능에도 악영향을 끼친다. 그럼 언제 리팩터링 작업이 필요할까? 《실용주의 프로그래머》의 저자 앤드류 헌트는 “일찍 리팩터링하고, 자주 리팩터링하라”라고 한다. 인생의 불필요한 부분이나 중요하지 않은 부분을 정제하는 데는 정해진 때가 있는 것이 아니다. 즉, 언제나 지금이 최적기다. 


인생의 불필요한 부분이나 중요하지 않은 부분을 정제하는 데는 정해진 때가 있는 것이 아니다. 기존에 자리 잡고 있는 것과의 결별이 쉬운 일은 아니지만 지금 하지 않으면 잊혀지는 것 또한 사실이다. 한 번 끊고 가겠다는 굳은 의지 없이는 지금과 같은 삶을 살 수밖에 없음을 받아들여야 한다. 인생은 버릴 게 무엇인지 알아가는 과정이라는 생각이 드는 것은 바로 이 때문이다.


프로그래밍에서 리팩터링은 새로운 신기술이 아니다. 기본을 지키는 일이다. 

일정상의 여유가 없다는 이유로, 당장 눈에 보이는 문제가 아니라는 이유로 불필요한 작업쯤으로 치부해 버린다면 일이 진척되고 의존성이 많아졌을 때는 더 많은 시간과 노력을 투입해야 한다. 인생을 정제하는 과정도 마찬가지다. 바쁘다는 핑계로 해도 되고 안 해도 그만인 것쯤으로 여긴다면 끝끝내 커져버린 문제현실에 맞서기보다 피해 다니게만 된다. 늦어질수록 비대해진 주변을 정리하기 힘들어진다는 점을 잊지 말아야겠다.


기존에 자리 잡고 있는 것과의 결별이 쉬운 일은 아니지만 지금 하지 않으면 잊혀지는 것 또한 사실이다. 한 번 끊고 가겠다는 굳은 의지 없이는 앞으로도 지금과 같은 삶을 살 수밖에 없음을 받아들여야 한다. 인생은 버릴 게 무엇인지 알아가는 과정이라는 생각이 드는 것은 바로 이 때문이다. 때론 자신이 아닌 것들을 과감히 버릴 수 있는 용기가 필요하다. 그래야 자신이 진정으로 바라고 욕망하는 것에 접근할 수 있다. 


내가 아닌, 남의 인생을 살수록 인생을 사는 재미가 없어지는 이유도 여기에 있다. 바쁘게 살아도 공허하고, 쉽게 지치고 고갈돼 가는 느낌을 지우기 어렵다. 누가 시켜서 하는 일들이 여기에 속한다. 하기 싫어도 해야 하고, 억지로 한다는 생각은 결연한 의지를 약하게 한다. 무릇 일도 자기 주도적으로 할 때가하는 일이 생산성도 높기게 마련이다.


결국 인생을 리팩터링한다는 것은 내가 아닌 건 비우고 비워서 가볍게 살자는 것이다. 다른 사람들의 시선, 다른 사람들이 바라는 삶의 모습, 내가 원치 않는 일들, 덕지덕지 붙어있는 군더더기를 떨치고 나답게 살자는 것이다. 마음의 군살을 거두고 가벼워질 때 비로소 진정한 내 모습이 드러난다. 


이 과정은 하나의 시스템이 만들어지기까지 몇만 번의 리팩터링 작업을 거치듯 수많은 정제 작업을 거친다. 우리는 알고 있다. 느려터진 컴퓨터를 빠르게 하는 방법은 틈나는 대로 불필요한 것을 삭제하는 것임을 말이다. 난 삶의 클린 코드(Clean Code)를 지향한다.

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