녕의 학습 기록

레벨 2 회고 본문

대외활동/우아한테크코스 7기

레벨 2 회고

kjyyjk 2025. 6. 28. 00:04

과거에 지난 기수 블로그들을 찾아보며 `왜 레벨 2부터는 회고가 없지?`하고 의문을 가졌었다. 직접 경험해보니 알 것만 같다. 나도 레벨 1 미션마다 회고했지만. 레벨 2에서 이리저리 치이면서 여유가 부족했고, 회고를 작성하지 못했다(않았다).
그런 사유로 레벨 3을 앞둔 이 시점에 레벨 2에 대해 간략하게 회고를 진행해 보았다.
 
4번의 미션과 페어 프로그래밍, 근로 업무, 유강스, 오브젝트 스터디, 레벨2 데일리, 이프와의 커피챗, 더 많은 크루들과 친해지기 등... 레벨 2에도 힘들고. 즐거운 일들이 참 많았다.

유연해지기

레벨 2 동안 가장 노력했던 것은 다른 의견을 유연하게 수용할 줄 아는 것이었다. 이전까지의 나는 내 방식만 정답이고 다른 사람의 방식은 틀렸다는 편협한 생각을 주로 지니고 있었다. 평소에도 느끼고 있었지만 레벨 1 인터뷰 피드백을 통해 꼭 개선해야 할 문제임을 강력하게 느꼈다. 이를 위해 다음과 같은 여러 시도를 해보았다.

  • 페어의 의견을 100% 수용해보기(극단적으로)
    • 페어의 방식 그대로 진행해도 걱정했던 것보다 문제 없음을 느낀 순간이 많았다.
    • 반대로 내가 생각했던 방식이 더 적절했던 순간들도 있었다.
    • 양 극단을 경험해보며 그 사이 타협점을 찾아가는 데에 도움이 되었다.
  • 다른 크루의 코드 리뷰와 코드 살펴보기
    • 나와 같거나 다른 생각 및 코드들을 많이 접할 수 있었다.
    • 리뷰어와 주고 받은 대화를 통해 다른 크루의 사고 흐름도 접할 수 있었다.
    • 기존 내 생각과 방식을 돌아보거나, 내가 시도해보지 못한 다른 방식에 대해 이해할 수 있었다.
  • 하나의 문제에 대한 여러 크루들의 생각과 방식을 듣고 그 장단점을 이해해보기
    • 자연스레 토론도 진행하며 같이 성장할 수 있었던 경험이다. 
    • 단점이 곧 장점이, 장점이 곧 단점이 될 수 있음을 깨달았다.
    • 프로그래밍에는 정답이 없고, 트레이드 오프 속 선택에 대한 나의 근거가 중요하다는 것을 이해할 수 있었다.
  • 유강스에서 다뤄보기
    • 위의 시도들에 대해 모두 유강스 가족들과 공유했다.
    • 적절한 강제성과 함께 양질의 피드백을 받아볼 수 있었다.

이렇게 모아보니 꽤 많이 노력 했음이 느껴진다. 실제로도 이전보다 훨씬 더 유연하게 사고할 수 있다는 것을 스스로 느끼고 있다.
이 부분에 있어서는 분명 성장했지만 내가 원하는 정도에 미치지는 못했다. 그렇기 때문에 계속해서 의식적으로 노력할 필요가 있다. 마침 레벨 3에는 팀 프로젝트가 예정되어 있기 때문에, 그에 맞는 실험 계획들을 세워보면 좋을 것 같다.
 

성과보단 성장을

레벨 2 최종 미션에서는 AI 도움 없이 순조롭게 요구사항 구현을 완료했다. 그런데도 왠지 모르게 답답한 마음이 들었다. 어떤 얘기를 주고받아야 할지는 몰랐지만 주저하지 않고 브라운에게 원온원을 신청했다.
 
한 시간 정도 얘기를 나누었는데, 그 짧은 시간 동안 브라운은 내 속에 감춰져 있던 문제들을 수면 위로 꺼내주었다.
그렇게 현재 내가 어떤 상황에 놓여있는지, 그리고 앞으로 어떻게 해야 할지 다시 생각해 볼 수 있었다.
 
나의 가장 본질적인 문제는 성장의 부족이었다. 답답했던 이유도 성장이 결여된 성과만 있었기 때문이다. 아무래도 나의 보수적인 성향 때문에 그랬을 수도 있다. 만약 성장 없이 성과만 추구한다면 굳이 우테코에서 힘들게 미션할 필요 없이, 팀원들 구해서 프로젝트를 진행하면 된다. 하지만 내가 우테코에 있는 이유는 성과가 아닌 성장을 하기 위해서다. 성장을 위해서 시도는 필수 요소다. 우테코는 다양한 시도를 하기에 매우 적합한 환경을 제공해 주고 있다. 그런 우테코에 있으면서도 더 성장하고 있지 못하는 내게 스스로 답답함을 느꼈던 것이었다.
 
남은 레벨3, 4, 5 동안 여러 시도를 해봐야 할 것이다. 물론 언제 어떻게 무엇을 시도할지는 당장 알 수 없겠지만.
사소한 것부터라도 꾸준히 무언가를 시도해 보아야 함을 강하게 느꼈다. 
브라운이랑 내내 얘기했던 것처럼 일단 시도하면 결과와 상관없이 성장으로 이어질 수 있다.
 

 추상적으로 사고하기

원온원 이후 첫 번째로 시도한 것이 바로 추상적으로 사고하기다. 지난 레벨 1, 2 동안 다른 크루들과 비교했을 때 내 생각의 깊이가 많이 부족하다는 것을 느꼈다. 물론 남들과 비교하는 것이 썩 좋은 것만은 아니지만. 더 깊이 있는 개발자가 되고 싶었기에, 그 개선 방법 중 하나로 선택한 것이 추상적 사고다. 평소 망상 같은 것을 잘 하지 않는 성향이기에, 과연 할 수 있을까 의심도 들었지만. 브라운은 의식적인 연습으로도 충분히 가능하다고 말해주셨다.

역시나 쉽지는 않았다. ` 이 순간부터 나는 추상적으로 생각해 보는 거야! 시작~` 한다고 해서 되는 게 아니었다.
그래도 계속 의식하면서 한 번 정도는 추상적으로 돌려 생각해 보기를 연습하고 있다.
 
가장 최근에는 스터디를 진행하며 instanceof에 대해 추상적으로 생각해 봤다. 객체지향 생활 체조 원칙에는 `instanceof 사용을 지양하라`라는 원칙이 포함되어 있다. 이전에는 `instanceof를 왜 지양하라는 거지? 굳이? 뭐 일단 그러라니까 instanceof를 사용하지 않고 다른 방식으로 구현해야겠다.` 정도의 사고에만 머물렀다.

이번에는 `내가 왜 instanceof를 사용해야 했을까`에 대해 먼저 생각해 봤다. 상속 구조에서 클라이언트가 서브 타입(자식)을 구분하기 위해서였다. instanceof를 사용하지 않고 끝내 구현한 방식도 결국 서브 타입을 구분하기 위한 다른 기술적 방법 중 하나였다.
 
상속은 단순히 중복 코드 제거가 아니라 클라이언트 입장에서 슈퍼 타입만 바라봄으로써 더 유연한 설계를 가져가는 것이 그 목적이다. 그렇다면 클라이언트에서 서브 타입을 구분하고 있는 내 코드, 과연 상속을 사용하는 것이 적절한 설계일까에 대해 생각해 볼 수 있다. 그 설계가 적절했을 수도 있고 아니었을 수도 있다. 레벨 2에서 지독하게 경험한 것처럼 프로그래밍에 정답은 없기 때문이다.
 
하지만 instanceof를 사용해야 했던 그 순간, 과연 이 설계가 적절한지에 대해 의문을 가져볼 수는 있다. 만약 부적절하다고 판단된다면 상속이 아닌 합성으로 아예 설계를 변경해 문제를 해결해 볼 수도 있을 것이다.
결국 instanceof 사용을 지양하라고 하는 것은, 단순히 기술적 제약이 아닌 설계에 대한 제약으로 이어질 수 있다.
 
중요한 것은 추상적 사고하기를 통해 이렇게 더 본질적인 문제에 다가갈 수 있다는 것이다.
좀 억지스러운 면도 있다고도 느꼈지만, 꾸준히 의식적으로 연습해 보면 좋을 것 같다.


이렇게 회고는 모두 마쳤지만, 그 끝은 즐거웠으면 좋겠다.
나중에 레벨 2를 돌아봤을 때 `열심히 잘했구나~`하고 기억될 수 있도록!
레벨 2에서 받았던 긍정적 피드백 일부를 기록하며 회고를 마무리한다.