- 개요
개발을 하다보면 미지수가 너무 많다는 생각이 듭니다. 그런 미지수 때문에 우리가 흔히 technical dept라고 부르는 기술 부채도 많이 만들게 됩니다. 개발에 처음 빠져들 때, 저는 그런 걸 두려워 하지 않았습니만, 요즘은 다릅니다. 내가 작성해 놓은 코드를 유지보수 할 때, 과거의 내 결과물을 보면서 자신이 얼마나 빚쟁이의 코드를 작성하고 있었는지를 깨달으면, ‘한번에 잘 하자’라는 유혹이 스멀스멀 올라옵니다. 그렇게 하다보면 지나치게 많은 것을 고려하게 되고, 현재 단계에서는 불필요한 것들에 ‘집착’하게 됩니다. 존재하지도 않고, 명확하지도 않은 후폭풍이 두려워 전체를 보지 못하고, 지엽적인 완벽성에 집착하게 됩니다.
이렇게 지엽적인 완벽성에 집착하는 것은 많은 부작용을 불러옵니다. 첫째로 일을 불필요하게 복잡하게 만듭니다. 디자이너가 제공한 명세에 12px의 size를 가진 text가 있습니다. 기술부채에 대해 무지할 때에는 단순히 css에 font-size : 12px을 입력하여 마무리합니다. 하지만 지엽적인 완벽성에 집착하게되면 불필요한 많은 것을 고려하게 됩니다. 화면 크기에 따라 사이즈가 달라질 필요가 있을지 모르니 rem단위로 적용하고, rem단위를 적용할때 단위 변환을 쉽게 하기 위해서 html css에 font-size : 10px을 기본값으로 입력해놓습니다. 더 나아가면 이 사이즈 값은 나중에 재활용 될지도 모르기 때문에 css변수로 저장하거나 재활용가능한 형태로 변경해놓습니다. 불필요한 완벽성을 추구하지 않았을 때보다 ‘현재’ 불필요한 일들을 더 많이 처리하고, 생각하게 됩니다. 만약 개발자의 머리가 비상하다면 이는 더 문제가 됩니다. 머리가 좋다고 생각하거나, 그런 사람들은 위의 과정을 거치기 전에 여러가지 시나리오를 상상하는 과정을 거칩니다. 이런 케이스는 어떻지? 저런 케이스는 어떻지? 명세는 단순히 12px의 text를 원했지만, 이 똑똑하고 기술 부채에 민감한 개발자는 그렇지 않은 개발자에 비해 불필요하게 많은 과정을 거칩니다.
물론 이런 완벽성을 추구하는 것이 나쁜것은 아닙니다. 기술 부채는 확실히 제어해야하는 부분이고, 없이 갈 수 있다면 그것이 좋을 것입니다. 유지보수도 쉬워지고, 나중에 리팩토링할 일도 줄어듭니다. 다만, 여기서 고려하지 않은 부분은 우리가 12px text를 렌더링 하는 것 보다 더 많은 일들을 해야한다는 점입니다. 리소스 관리적인 측면에서 큰 하자가 있는 방식인 겁니다. 불필요한 변수를 모두 고려하는 개발자는 과정에서 본인도 모르는 사이에 많은 스트레스를 받습니다. 그렇게 많은 일을 하지 않았음에도 쉽게 피로하게 됩니다.
그러니 우리는 보다 단순하고 명확하게 일해야합니다. 그 ‘순간’, 그 ‘단계’에서 해야할 일에 ‘집중’하고 전체의 작업흐름을 읽어야 합니다. 우리가 하는 일련의 업무가 전체를 구성하기 위한 한 부분이라는 것을 잊지 말아야합니다. 각 단계에서 미지의 것은 어찌보면 지금 알지 않아도 상관 없기 때문에 미지인 상태로 보이는 것일 수도 있습니다. 문제가 발생하면 그 때 고칠 수 있다는 자신감을 바탕으로, 현재 명확한 정보만을 기준으로 작업해나가야합니다. 근시안 적인 해결책을 내는 듯한 이 방식은 오히려 근시안적인 사고를 버리고, 시간축, 공간축으로 시야를 확장하여 전체적인 프로세스를 바라볼 때 가능한 접근 방식입니다.
이런 과정은 궁극적으로 본인의 리소스를 관리하기 위한 것입니다. 사람들은 종종, 자신의 신체적 리소스를 일의 요소에서 배제합니다. 흔히 우리가 말하는 ‘노오력이 부족해서’라는 말이 그런 관점에서 등장한 말입니다. 다른 모든 리소스, 돈이나 시간과 같이 우리의 체력이나 사고력도 일의 과정에서 소모됩니다. 그리고 이런 관점은 우리가 직장에서 일을 하고 돈을 번다는 점을 생각해보면 너무나도 당연한 생각입니다. 때문에 우리는 우리의 체력적 리소스를 각 단계에서 합리적으로 안배해야합니다.
개발을 주로 ‘뇌’를 씁니다. 정보화 사회에서 많은 사람들이 ‘뇌’를 사용해서 일을 하고 있습니다. 뇌는 우리의 장기중에서도 가장 에너지를 많인 소비하는 장기 중 하나입니다. 인간은 신체의 생명유지를 위해 에너지를 자동적으로 컨트롤 하는 기능을 탑재하고 있습니다. 우리가 일을 많이 하면 할 수록 생각하기 힘들어지는, 뇌를 쓰기 힘들어지는 이유입니다. 신체에 에너지가 부족하니, 다시 에너지를 축적하기 전까지 뇌의 사용을 제한하는 겁니다. 때문에 우리는 다양한 수단과 방법을 통해 뇌가 편하게 일할 수 있도록, 집중할 것에 집중할 수 있도록 도와야합니다.
아이디어를 메모하거나, 큰 발상 하나를 작은 단위의 발상으로 쪼개어 글로 적거나, 암산하지 않고 계산기를 활용하는 것들이 방법의 하나가 될 수 있습니다. 최대한 뇌가 정보를 ‘저장’하고 있어야 하는 상태를 지양하는 방향으로 도울 수 있습니다. 기본적으로 사람은 멀티태스킹이 불가능합니다. 어떤 사실을 기억하고 또 다른 사고를 한다는 것은 사실은 그 두 가지 사이를 빠르게 왕복한다는 것을 의미합니다. 이는 두 가지를 일을 순차적으로 하는 것보다 훨씬 뇌에 부담을 많이 주는 행동입니다. 그러니 이런 일이 발생하지 않도록 우리는 끊임없이 종이 위, 컴퓨터 문서 속으로 아이디어를 구체화하며 끊임없이 뇌가 한 가지 일에 집중할 수 있도록 일을 단순하게 만들어주어야합니다.
이런 생각들을 기반으로 했을 때, 제게 프로, 프로페셔널함은 ‘어려운 일을 잘하는 것’이 아니라 ‘어려운 일을 잘 할 수 있는 일로 만드는 것’이라고 생각합니다. 뇌라는 명백히 한계가 존재하는 하드웨어를 가지고, 어떤 방식으로 활용하면 최대의 역량을 발휘 할 수 있는지를 너무나도 잘 아는 사람들 혹은 그런 것, 그것이 바로 프로인 것입니다.
오늘, 이런 생각에 이르게 된 것은 1920px에 비해 300px이 얼마의 비율을 가지는 지를 암산하려고 했던 스스로의 모습때문입니다. 그 과정에서 굉장한 피로감을 느꼈고, 컴퓨터라는 인류 최대의 계산 기기를 쓰면서 왜 이런 접근 방식으로 일을 했을까 하는 어이없음을 느꼈기 때문입니다. 전체적 맥락에서 적시에 적절한 리소스를 사용하는 것, 그것이 일을 잘 하는 정수임을 다시금 느끼고, 발전시켜 나가야함을 글을 쓰며 다시 한 번 느낍니다.