서론

이번에 아직 미완성이지만 의존성 역전패턴을 활용한 소프트웨어 설계 개선을 3일간 쓰면서 나름대로는 만족스러운 부분이 있었다고 생각합니다. 제가 느낄 때 이전까지는 제대로 이해하지 못한 부분이 있었는데, 이번에는 그 부분을 이해하는데 꽤 성공했다고 생각했거든요. 그래서 역시 글로 정리하는 과정은 도움이 되는구나! 할 수 있구나!라는 생각도 조금 들었습니다.

막상 해당 글을 공개된 공간에 공유하고, 또 다른 사람들이 읽어주시면서 피드백을 받으니까, 아직도 부족한 부분이 많다는 것을 느끼게 되었습니다. 그 중에서 가장 많이 받은 지적 두 가지는 ‘코드가 없이 설계에 대해서 글로만 이야기한다’와 ‘글의 내용이 교조적이라 읽는 것이 불쾌하다’라는 것이었습니다. 이 두 가지 지적은 제가 글을 쓰는 방식에 대해서도, 글을 쓰는 목적에 대해서도, 그리고 글을 읽는 사람들에 대해서도 생각해볼 수 있는 계기가 되었습니다. 그래서 이번 글에서는 이 두 가지 지적에 대해서 제가 생각하는 것을 적어보려고 합니다.

코드가 없이 설계에 대해서 글로만 이야기한다

물론 코드가 없는 글로 이해하는 것 역시도 중요한 부분인 것은 사실입니다. 우리는 무언가를 이해할 때 디테일한 사례들을 들어가며 이해하는 것 역시 중요합니다만, 그렇다고 해서 디테일한 사례들만을 들어가며 이해하는 것은 오히려 이해를 방해하는 요소가 될 수 있습니다. 그래서 코드가 없는 글로 설계에 대해서 이야기하는 것은 중요한 부분이라고 생각합니다. 하지만 그렇다고 해서 코드가 없는 글로만 설계에 대해서 이야기하는 것이 좋은 것은 아닙니다. 코드가 없는 글로만 설계에 대해서 이야기하는 것은 설계에 대해서 이야기하는 것이 아니라, 공허하고 빈약한 이야기가 될 수 있습니다. 극단적으로는 제 생각이 들어있지 않고 그냥 뻔한 이야기만 남에게서 주워모아서 적은 글이 될 수도 있습니다.

그러니 물론 제가 ‘여기까지 작성하고 이후는 코드를 작성한 부분에 들어갈 것이었는데…‘라고 생각하고 있었더라도, 그 부분을 지나치게 뒤로 미뤄둔 것 역시도 좋은 글이 아니었다고 생각하게 됐습니다. 만약 제가 의존성 역전에 대한 인사이트를 찾기 위한 글을 찾아보는 사람이 됐다 했을 때 과연 제 글처럼 앞부분이 중언부언 늘어져있는 글을 인내심을 갖고 끝까지 봤을 것이냐하면 딱히 그러진 않았을 것 같거든요. 게다가 써놓은 것을 다시 읽어보면 제가 꽤나 자신에 가득찬 상태로 남에게 가르치려는 위에서 내려다보는 시선으로 받아들여지기도 했습니다. 아마 이 글이 제가 쓴 글이 아니었다면 제가 읽는 입장에서도 불쾌했을 것 같습니다.

그렇다면 어떤 글을 써야 할 것인가

이에 대해 많은 피드백을 받았습니다. 기억나는 것은 제가 이렇게 쓴 것의 중간 중간에 예시로 든 것을 실질적인 코드의 형태로 섞어쓰면 남의 것을 베껴 썼다는 공허한 느낌이 들지 않을 것 같다는 것하고, 실질적으로 코드를 작성하고 그 코드를 통해 설계에 대해서 이야기하는 것이 좋을 것 같다는 것이었습니다. 둘 다 너무 공감이 되는 것이었고, 둘 다 제가 생각하지 못했던 부분이었습니다. 둘 다 제가 앞으로 이 블로그에 글을 계속 써나가겠다고 하면 선택할 수 있는 훌륭한 방향들이지요.

그렇기 때문에 여러 방향에 대해 제시받은 지금 시점에서 제가 가장 우선적으로 고민해야하는 것은 내가 여기에 왜 꾸준히 글을 쓰려하는 것인가?였습니다. 분명 최초에 하고자는 동기는 면접관에게서 이력서 및 포트폴리오가 모자라니, 블로그를 운영해보라는 조언을 받았기 때문이었습니다. 하지만 저는 그렇게까지 배움이 빠른 사람이 아니기에 좋은 조언이라 해서 이를 바로 수용하지는 못하는 편입니다. 그래서 며칠동안 해당 아이디어는 그냥 스쳐지나갔을 뿐이지요.

그런데 제가 글을 작성하기 시작하게 된 것은 지금 하고 있는 공부란 것에서 뭔가 모자람을 느꼈기 때문입니다. 분명 저는 과제나 알고리즘 문제 해결의 형태로 꾸준히 코드를 작성하고 있고, 프로그래밍 관련한 교양 서적을 ‘실용주의 프로그래머’, ‘프로그래밍 면접 이렇게 준비한다’ 등을 읽은데다, 면접을 위한 cs 지식을 습득하기 위한 인터넷 서핑, 미디엄 구독과 같은 것들을 하고 있었습니다. 그런데도 불구하고 제가 뭔가 모자람을 느꼈던 것은, 제가 이러한 것들을 하면서도 제가 뭔가를 제대로 이해하고 있는 것 같지 않았기 때문이었습니다. 그런 제가 요즘 가장 활발히 하면서 만족하고 있는 행위인 글쓰기에 눈을 돌렸던 것은 어찌보면 일종의 도피였는지도 모르겠습니다.

막상 글을 쓰다보니 남에게 설명하는 과정에서 제가 알고 있다 생각한 것 중 많은 부분이 사실은 모르는데 대충 넘어가고 있단 것을 알 수 있었고, 그 부분에 대해 해소가 되면서 진정한 이해에 도달하고 있다는 생각이 들었던 것은 굉장히 기뻤습니다. 사실 지금 이 글 역시도 어떤 생각이 다 완성돼서 글을 쓴다기보다는 일종의 생각을 정리하는 과정으로 글을 쓰는 중입니다. 이처럼 글을 쓴다는 것은 내가 안다는 것을 밖으로 끄집어내는 과정에서 그것이 사실은 착각이란 것을 깨닫는 가장 효과적인 방법이란 생각을 하고 있기 때문에 글을 쓰겠다고 결심하게 됐습니다.

그렇다면 제가 써야 할 글은 아무래도 그런 것이겠지요. 내가 알게 됐다고 생각한 것들에 대해서 남에게 소개하는 글을 쓰자. 그리고 그 과정을 통해서 내가 사실은 제대로 알지 못한다는 사실을 깨닫자. 글을 쓰는 것은 제가 사용하는 일종의 정반합을 통한 깨달음으로 나아가는 학습법이라고 말할 수 있을 것 같습니다. 너무 거창한 이야기려나요

앞으로 어떻게 할 것인가

돌고 돌아서 결국 ‘하던대로 하겠다’, ‘내가 옳음!’라고 들릴만한 소리를 한 것 같네요. 네, 제가 여태까지 써 오던 것과 같은 제재와 주제를 가지고 글을 꾸준히 써내려가보려고 합니다. 멋들어지는 거창한 표현으로 제 배출을 치장했지만, 사실 글을 쓰는 것은 제게 꽤나 즐거운 취미 생활이라고 느끼고 있기도 하거든요.

다만 제가 기존에 글을 쓴 방식이 굉장히 공허하고, 문제가 있다는 것은 알았으니 그 부분에 있어서는 개선을 해나가려고 노력해보려 합니다. 결국 제가 쓰려고 하는 글은 큰 틀로 모아 프로그래밍과 코드에 대한 것이니만큼, 코드를 직접 작성하고 이를 통해 실존적인 이야기를 하기 위해 더 노력해보려고 합니다. 목표는 내일부터 시작하는 것입니다만, 의존성 역전 패턴 글 (1) ~ (3)의 구조를 아예 갈아 엎고 시작 부분에 의존성 역전 패턴을 사용하면 개선할 수 있는 코드를 작성하는 것부터 시작한 뒤에 이를 개선하는 것을 보여주고, 그 뒤에 제가 늘어놓았던 이야기를 덧붙이는 식으로 글을 쓰기만 해도 아무래도 덜 공허하고 빈약한 글을 완성할 수 있지 않을까 싶습니다. 그리고 여기에 덧붙여 가능하다면, 제 블로그가 갑자기 엄청난 유명세를 타서 많은 사람들이 방문하게 되는 미래가 오지 않는다는 가정하에, 이번에 했던 것처럼 꾸준히 다른 사람들이 드나드는 곳에 살며시 내려놓아두고 반응을 기대하며 두근두근 해보고 싶습니다. 제가 이런 생각에 도달하고, 개선점을 깨달을 수 있었던 것은 많은 분들께서 모자란 제 모습을 가엾게 여기고 고이 넣어주신 한마디씩의 피드백과 격려 덕분이었으니까요.

그러니 뭐, 앞으로도 모자라지만 노력해보겠습니다. 이번과 같이 모자람이 있으면 ‘아직도 지난번에서 배운 것이 없느냐 못난 녀석!’하고 한마디 꾸짖어 주시고 가신다면 저는 덕분에 조금 덜 멍청한 사람이 될 수 있을 것 같습니다.

그럼 이만 쓰겠습니다. 다음 글에서 뵙겠습니다.


2024-01-31
다음 글: 지난 3개월을 돌아보며 → 카테고리로 돌아가기 ↩