주요글: 도커 시작하기
반응형

몇번인가 이런 말을 들어본 적이 있습니다.

"어떻게 OOO 패턴을 이렇게 쓸 생각을 하셨어요?"

제가 썼던 노하우책이나 틀 프레임워크의 소스 코드를 보면 흔히 말하는 패턴이 몇개 나타납니다. 그러면서 또 하나 나타나는 반응이 이렇습니다.

"책으로 이런 패턴들을 봤지만 실제로 사용하려면 어려워요"

그렇습니다. 물론 어렵습니다. 단순히 패턴 관련 책을 한두번 읽고, 그 패턴을 당장에 어디엔가 써 먹을라고 하면 참 난간합니다. 언제 어떤 써야 할지 도무지 모를 일이죠. 책에는 A 경우에 B 패턴을 사용하라고 나와있지만, 아쉽게도 내가 처한 상황은 A가 아니라 C 이고, 그래서 B라는 패턴을 적용해도 맞는 건지 잘 모르는 상황이 발생합니다. 그렇다고 다른 패턴을 적용할 수 있는 것도 아닙니다. 다른 패턴을 설명하면서 사용한 상황 역시 내가 처한 상황과 딱 맞아떨어지지 않기 때문이죠. 그래서 패턴 적용을 포기하기에 이릅니다.

그렇다면 어떻게 하면 책에 없는 상황에서 다양한 패턴을 알맞게 적용시켜 멋진 설계를 할 수 있을까요? 대답은 단 하나뿐 것 같습니다.

"실수에 상관없이 반복해서 패턴을 적용한 코드를 작성해 보는 것!!!!"

패턴을 잘못 적용해도 좋습니다. 일단 이런 저런 패턴을 적용해서 코드를 작성해보세요. 패턴을 적용하는데는 정답이 없습니다. 그냥 패턴을 적용했더니 꽤나 괜찮았거나 별루였던 상황이 존재할 뿐입니다. 패턴을 적용해봤는데 영~ 별루인 설계가 나오는 경우가 있습니다. 이럴 땐 마음속으로 '이게 바로 안티패턴이군' 이라고 한번 외치고, 다음부터 그 패턴을 잘못 적용하지 않으면 됩니다. 패턴을 적용했더니 멋드러진 설계가 나오면 그땐 탄성한번 지르고 다음에 또 써먹으면 됩니다.

이렇게 실수와 성공을 반복하다보면 우리는 어느새 멋진 설계를 할 수 있는 사람으로 변신하게 됩니다. 겉멋만 들어서 '적어도 패턴 정도는 써야지' 라면서 설계를 하다보면 그런저런 설계는 할 수 있어도 멋진 설계는 못하게 됩니다. (저역시 몇가지 패턴을 겉멋에 쓰다가 낭패를 본적이 있었습니다. 그덕에 코드를 거의 처음부터 다시 설계해야 했었죠.)

또 다른 방법은 꽤나 괜찮게 설계했다고 생각한 코드를 그대로 따라서 작성해보는 겁니다. 예전에 네트워크 프로그램을 처음 배울 때 무조건 책에 있는 코드를 따라했던 기억이 나네요. 그땐 저에게 있어서 그 책에서 제시한 패턴이 네트워크 프로그램의 정답과도 같았습니다. 몇번 같은 방식으로 작업하다보니 변형이 필요해졌고, 그 과정에서 네트워크 프로그램의 또 다른 설계 방식을 찾게 되었습니다. 즉, 모방속에서 새로운 걸 배우게 된거죠.

설계를 잘 못한다고 설계를 두려워하시는 분들은 일단 많은 코드를 작성해보세요. 다양한 코드 작성 경험없이 멋진 설계는 나오지 않으니까요. 계속해서 코드를 작성하다보면 자연스럽게 다양한 상황에서 알맞은 설계를 하는 방법을 익히게 될 것입니다.

+ Recent posts