트레이드오프
대부분의 개발자가 이미 느끼고 있듯이 프로그래밍에 정답은 없습니다. 장점이 있으면 단점이 있을 때도 비일비재합니다. 트레이드오프의 영역이죠.
그런데 종종 정답을 찾으려는 경우가 있습니다. 예를 들어 '어떤 경우에 특정 아키텍처 패턴을 사용해야 하는가?'와 같은 질문에 정답이 있을까요? 이론적으로는 어떤 아키텍처 패턴은 이러저러한 경우에 사용하면 좋다는 기준이 있을 수 있습니다. 하지만 프로젝트의 규모, 일정, 역량 등은 조직의 상황에 따라 다릅니다. 이 모든 것을 종합적으로 고려한다면 항상 특정 아키텍처 패턴이 답이 아닐 수 있습니다. 그래서 은총알은 없다는 말이 있죠.
어떤 문제를 해결하는 데 정답이 없다면, 한 가지 해결 방법만 알고 있어도 상관없을까요? 당연히 여러 가지 방법을 알고 있는 것이 좋습니다.
경험을 통해 마주하는 여러 가지 구현 방법이나 패턴 등은 마치 바둑의 기보와 같습니다. 경험이 쌓이면서 다음에 더 나은 수를 둘 수 있듯이 개발도 마찬가지입니다. 어떤 문제를 해결할 때 좀 더 나은 방법을 선택할 수 있습니다.
결국 시니어에게 기대하는 것은 다양한 경험에서 오는 적절한 문제 해결력이라고 생각합니다. 어떤 부분의 디테일한 스킬은 주니어가 더 잘하는 부분도 있을 겁니다. 한 사람이 모든 것을 다 알 수는 없으니까요. 숲을 보는 시니어, 나무를 베는 주니어라고 표현해 볼 수도 있겠네요. 물론 이런 것을 연차로 나눌 수는 없습니다. 때로는 시니어보다 경험이 다양한 주니어가 있을 수도 있으니까요. 하지만 일반적으로 더 많은 시간을 쏟은 사람이 더 많은 경험을 할 가능성이 크기 때문에 주니어, 시니어와 같은 구분이 생겼을 것 같습니다.
그러니 너무 조급하게 정답을 찾으려고 할 필요가 없습니다. 마주하는 문제 상황을 묵묵히 해결하다 보면 그 과정이 쌓이고 쌓여 경험이 됩니다. 그리고 그 여정 속에서 언젠가 본인만의 정답을 찾는 날이 올 것이라 믿습니다.