디자인 패턴 중 구조 패턴에 해당하는 데코레이터, 어댑터, 퍼사드 패턴은 모두 클래스 내부에 다른 객체를 두는 '구성' 방식을 취한다는 공통점이 있다. 하지만 그 목적이 기능을 추가하는 것인지, 인터페이스를 맞추는 것인지, 아니면 복잡한 구조를 단순하게 묶는 것인지에 따라 명확히 구분된다.
개발을 하다보면 '상태에 따라 다른 플로우'를 처리해야할때가 있다. 단순히 예/아니오 같은 단일 상태라면 if 문을 사용하도록, 다중 상태라면 if-else 혹은 switch 를 사용하면 된다. 하지만 '다른 플로우'에 해당하는 로직이 복잡하다면, if-else 사이에 100줄이 넘는 코드가 들어가게 된다. 과연 재사용성이 높다고 할 수 있는가? 코드를 읽기 난해할뿐 아니라 100줄 사이에 반복되는 로직도 분명히 있을것이다. '다른 로직'과 '공통 로직'을 나누고 '다른 로직'에 해당하는 부분은 상태에 따라 다른 구현체를 반환하거나, 구현체를 만들어주는것에 해당하는 패턴이 필요하다.
자바스크립트를 처음 접하면, 굉장히 쉬운 사용성에 놀라곤한다. C 언어와 Java 를 접했을때는 매번 컴파일이 필요했는데, 자바스크립트는 지금 이 글을 보고있는 브라우저에 개발자 모드 콘솔창을 켜놓고 바로 코딩이 가능하다는것은 가벼움과 쉬운 사용성을 의미한다. 코드의 실행은 어떻게 자바스크립트 엔진(그 중 V8) 내에서 이뤄지는것인가? 이를 이해한다면 변수와 함수 관계에 해당하는 Hoisting(호이스팅), Closure(클로저) 개념을 단순이 암기가 아닌 원리로 이해할 수 있다.
디자인 패턴은 대학교에서 간단하게만 배웠던것으로 기억한다. 대학원이나 입사 준비시 디자인 패턴은 항상 시험에 나오는 주제였지만, 필자는 실제로 사용해본 경험이 적었기에 왜 이것이 중요한지에 대해서 체감할 일이 없었다. 부트코드와 이론보단 프로젝트를 많이하는 요즘의 시대엔 좀 다르겠지만 필자는 패턴이 왜 쓰이는지 경험적으로 습득한것은 입사하고 나서부터였기 때문이다.
어린 시절 만든 우스꽝스러운 이메일 주소는 본인뿐만 아니라 연락을 받는 상대방에게도 당혹감을 줄 수 있다. 비즈니스 커뮤니케이션과 커리어 관리의 시작은 상대방이 기억하기 쉽고 전문성이 느껴지는 이메일 주소를 갖추는 것에서부터 시작된다.