발단
최근에 어느 미술대학 교수님이 남긴 글을 보았습니다. 정확한 문장은 기억나지 않지만 이런 내용이었습니다.
A+은 평소에 미술관, 영화관에 자주 다니고 많이 경험한 사람이 가져가. 노력을 통해 성적을 올릴 수 있지만 노력만으로는 쉽지 않아. 평소에 얼마나 많이 경험하고 아름다운 것이 무엇인지 생각한 사람을 이기기는 쉽지 않아.
커피챗
이 글을 보니까 얼마 전에 했었던 커피챗이 생각났습니다. 개발조직 리드를 맡고 계신 분(이하 A)이었는데 개발문화 이야기를 하다가 제가 면접을 한창 보러 다니던 시절에 항상 물어보던 질문 이야기를 했습니다. “회사에서 지향하는 개발문화는 무엇이고, 그를 위해 어떤 노력을 기울이고 있나요?”.
사실 당시에 제가 기대하는 구체적인 모양의 대답이 따로 정해지진 않았습니다. 두루뭉실하게 성장 지향하는 개발문화가 있었으면 좋겠다 정도? 어쨌든 최종 결정은 이 질문의 대답에서 받은 최종적인 인상에 따라 결정했습니다.
A님 과 개발문화 이야기를 하면서 모 기업에서 면접보던 기억이 떠올랐습니다. 늘 하던 질문을 똑같이 했고, 대답에서 제가 원하는 형태의 개발문화라기에는 조금 부족했습니다. 당시에는 체감하지 못했지만 대답 내용이 그렇게 중요한 기준은 아니었다는 것을 뒤늦게 깨달았습니다. 내용이 마음에 들지 않은 것은 사실이지만 “얼마나 망설임 없이, 자연스럽게 말하는가, 그리고 그것이 말하는 태도, 표정에서 드러나는가?” 돌아보면 이 부분이 더 중요했습니다. 개발 문화가 어떻고 회사에서 무슨 정책을 시행하는지는 별로 중요하지 않았습니다. 평소에 얼마나 개발문화에 대해 고민하고 있었는지가 중요했고 그건 내용보다는 자신감 넘치는 태도인지, 표정에 흔들림 없는지, 말 중간에 쉬는 시간이 얼마나 긴지, 이런 부분에서 더 많이 나타났습니다.
아름다운 것을 생각해야 해요
저는 백엔드 개발자로 커리어를 시작해서 최근에 프론트엔드를 공부했습니다. 백엔드 개발자로 한창 일할 때는 잘 짜인 아름다운 코드를 짜고 싶은 마음이 컸고 많은 시간을 할애했습니다. 몇 년을 그렇게 개발하니 자연스레 그렇게 되었습니다. 아키텍처를 생각할 수 있고, 응집도와 결합도를 자연스럽게 고려할 수 있었습니다. 아직도 더 잘 하려고 고민하고 있지만, 지금 작성하는 코드도 충분히 수준이 올라왔다고 느낀다.
최근에 프론트엔드를 시작할 때는 잘 짜인 아름다운 코드를 짜는 것에 대한 고민이 적었습니다. 좀 더 비즈니스 관점에 가까이서 빠르게 프로덕트를 만드는 것에 좀 더 주안점을 두었습니다. 얼마 전에 토스에서 공개한 Frontend Fundamentals 링크를 공유 받아서 살펴보는 순간, 작성한 프론트엔드 코드가 좋지 않은 부분이 갑작스레 보였습니다. 백엔드 작업 중에 하던 좋은 코드에 대한 고민을 하지 않았음을 알았습니다. 단순히 몰라서 그랬던 것은 아니라고 생각합니다. 비즈니스 로직을 분리한다는 단순한 내용이었으니까요.
아름다운 것을 만들어야 하는 것은 아닙니다.
하지만 생각만 해야 합니다. 아름다운 것은 시간이 지나면서 바뀌고, 좋은 코드 또한 시대적인 측면에서나 개인적인 측면에서나 모두 그렇습니다. 시대가 지나면서 메이저한 프로그래밍의 패러다임은 절차지향, 객체지향, 함수지향으로 바뀌어 왔습니다(이 부분은 논란의 여지가 있을 수 있고, 단언할 수 있는 부분은 아닙니다). 개인적으로 좋은 코드를 보는 눈이 경험이 쌓이면서 성장합니다. 오늘 좋은 것은 내일 나쁠 수 있습니다. 비즈니스를 지연시키고 망쳐버릴 수 있으니까 이상적이지 않더라도 적당하게 잘 작성하는 것이 좋습니다. 다만, 얼마나 좋게 작성했는지를 충분히 고민했다는 가정 아래에서요.
결론 : 아름다운 것이 무엇인지 생각해야 해요
저를 포함한 프로그래머는 아름다운 코드가 무엇인지 생각해야 합니다. 그것을 현실에 가져오는 것이 나쁜 건 아니지만 그것보다 더 많이, 충분히 아름다운 코드가 무엇인지 생각하는 것이 중요하다고 생각합니다. 충분히 생각했다면 자연스럽게 그렇게 되어 있으리라 생각합니다.