새로운 미션이 시작된 이번 주. 여느 미션들과 다르지 않게 미션 시작 주는 항상 바빴고, 이번 주도 그랬다ㅋㅋㅋ 어느덧 레벨 2의 마지막 미션이 진행되고 있고, 마지막 피드백 강의도 진행되었다. 이걸로 수료까지 남은 기간이 얼마 남지 않았는데, 나는 과연 잘 성장한 걸까, 수료하고 나서 우테코를 선택한 메리트가 확실히 있을까를 다시 돌아보아야 할 때가 아닐까?
사실 우테코에서의 나만의 성장보다는 다른 사람들과의 만남을 더욱 중요하게 생각했기에, 꽤 많이 달성했다고 본다. 좋은 사람과 좋은 시간…🥹 그중에 성장하는 서로의 모습을 보면서 우리는 더욱 힘을 주고받아 시너지가 좋다 🔥 남은 기간 후회없도록 잘 달려보자 🏃🏻➡️
🚀 외부 API 두둥등장
이번 주 미션은 외부 API를 사용해야 했다. 기존 미션 테마가 방탈출 예약 관리 어플리케이션이었는데, 이제는 고객으로부터 결제까지 받아야 예약이 되도록 요구사항이 추가됐다. 요구사항이 하나둘 추가될수록 코드는 정신을 차릴 줄 모르고… 우선 기능을 구현하기 위해 페어와 열심히 달렸다. 지금까지는 서비스를 제공하는 Server의 역할을 했다면, 이번 미션에서는 다른 서버에 요청을 하는 클라이언트의 입장이 되었다고 본다.
이번 미션의 페어는 위브였다! 화수목 꾸준히 함께 문제를 해결해 나갔다. 위브가 목요일에 테코톡을 준비하기도 하고, 내가 화요일에 일정이 있기도 해서 캠퍼스에 있는 동안에는 머리에 불이 나도록 문제 해결에 시간을 쏟았다. API 요청이 어떻게 오고가는지 화이트보드에 플로우를 그려보기도 하고, 제공된 프론트엔드 코드를 확인하면서 플로우의 어느 단계에 우리가 서있는지 확인하고 있기도 했다.
결제 관련 정보를 DB에 저장했는데, 알고 보니 이건 다음 미션에서의 요구사항인 듯했다. 수업 시간에 API 문서를 정독하라고 하셨는데, 거기에서는 꼭 정보를 저장하라고 해서 우리는 저장하려고 했을 뿐이지만.,, 🥹
외부 API와 통신할 것을 생각하면서, 어떤 클라이언트를 사용할까? 도 주된 관심사였다. OkHttp, RestClient, RestTemplate, Retrofit, FeignClient 등 진짜 많은 선택지가 있었는데, 처음에는 FeignClient를 하려고 하다가 스프링에서의 의존성 문제도 그렇고, 학습 테스트에서 다루었던 것이기에 RestClient로 작성하게 되었다. 테스트 하는데도 진땀을 많이 뺐다. 외부 의존성이 들어오고 어플리케이션이 기존 요구사항보다 늘어나면서, 테스트를 유연하고 정확하게 작성하는 것도 하나의 능력이 되었다.
토스는 상당히 친절하다. 외부 API 치고는 진짜 라이브러리를 가져다 쓰는 것인 줄 알았다. 실제 핸드폰으로 알림이 오기도 하고, 결제가 되었다는 알림도 (테스트지만) 깔끔하게 띄워 주었다. 개발자를 위한 API라는 것이 여실하게 느껴졌다. 테코톡도 듣고 이런저런 일을 하다 보니 5시 55분에야 미션을 제출하게 되었다. 옆에서 함께 달려 준 위브 고생 많았다 🔥
👀 안돌의 고민상담소
금요일 칼퇴를 마음먹은 6시, 지나가는 말로 1기 안돌이 미션 리뷰이들과 이야기하기 위해 잠시 들렀다는 이야기를 듣고, 지금은 아무나 들어와도 된다는 소식을 접하자마자 회의실로 향했다 ㅋㅋㅋ 평소 미션에서도 다른 리뷰어들과의 소통을 즐겁게 나누었던 터라, 새로운 어른(?)의 등장에 많은 이야기를 하고 싶어서 신이 났다.
근데 웬걸, 들어가 보니 다들 돌아가면서 자기소개와 함께 자신이 지금 겪고 있는 고민을 서로 털어놓고 있었다. 개발에 한한 게 아니라, 자신의 이야기, 인생을 돌아보는 이야기가 더 많아서 생각보다 무거운 분위기였다. 우테코 들어와서 각자에게 찾아온 변화, 두려움, 걱정을 쏟아냈다. 안돌은 몇 분 안 되는 자기소개와 고민을 듣고는 크루들의 상황이나, 어떤 생각을 하고 있었는지, 그 사람이 어떤 성향인지를 파악해냈다.
돌고 돌아 나의 차례가 돌아왔고, 요즘 자주 겪는 이야기를 늘어놓았다. 학습하는 방법에 대한 이야기다. 이전 브라운과의 이야기에서도 꺼냈던 말인데, 나는 한 우물을 깊게 파곤 한다. 내 성격에 어떻게 돌아가는지를 알아야 코드를 사용할 수 있다고 생각했다. 그러다 보니 작동원리를 알게 된 시점에서는 이미 레벨 과정에서 다른 수업을 진행하고 있고, 따라가기가 생각보다 버거웠다. 내 앞 차례에 배키가 ‘학자파’라는 이야기를 하면서 나도 고개가 끄덕여졌었다. 정확하게 ‘어떻게’가 궁금했다. 거기에 시간을 많이 쏟다보니 일이 슬슬 밀리기 시작했고, 한 번에 여러가지를 하는 것이 어려웠던 나는 이도저도 아닌 학습이 이루어질 것에 대한 걱정이 올라왔다.
안돌은 ‘공과 사를 잘 구분하라’는 조언을 건네주셨다. 여기에서 이야기하는 공은 미션이고, 사는 내가 개인적으로 궁금해하는 내용들인 거다. 미션의 요구사항(공)을 최대한 빠르게 끝내고, 그 이후에 시간이 남는다면 스프링 뒷편이나 다른 공부(사)를 하면 된다는 것이다. 지금 나는 페어와 미션을 하고 있는 거고, 요구사항에 대한 미션은 기한이 다가오기 마련이라 언제까지고 내가 원하는대로 공부를 할 수는 없으니..
듣고보니 마음이 편해졌다. 뒤쪽 원리가 궁금한 내 머리, 급박하게 지나가는 학습 키워드들을 놓치기 쉬운 두 가지 상황을 간파하는 문장이었다. 일단 지나가는 키워드들은 적어두고, 빠르게 미션을 끝낸 뒤에 키워드들에 대한 학습을 깊게 해야지, 라는 다짐도 하게 되었다. 레벨 2의 마지막 미션에서야 이걸 알았다니, 나중에 공부할 시간이나 있을까 😅
이야기를 모두 마무리하니 10시가 다 됐다. 분명 들어간 시간은 6시였는데, 4시간동안 한 곳에만 앉아서 이야기를 듣다 보니 시간 가는 줄 몰랐다. 여러 가지 문장들이 오고갔고 그 중에는 내가 정말 나중에 떠오르겠다 싶은 이야기도 있었다. 특히 ‘문제가 문제가 아니도록 만드는 것’이 와닿아서 여기저기 이야기하고 다닌다 ㅋㅋㅋ
미리 현직에서 일하시는 분들이 시간을 내어 우리의 고민을 들어주는 게 귀감이 된다. 교육에도 관심이 많다 보니 리뷰어 활동을 꼭 나중에 해보고 싶다는 생각을 꺼내다가도, 언제쯤 저런 지혜를 가지고 리뷰이들에게 도움이 되도록 이야기를 꺼낼 수 있을까? 라는 질문이 떠오르기도 한다. 잘 성장하고 있겠지? 🤔
📚 이번 주는요
이번 주 테코톡이 정말 맛있었다. 리건의 IoC/DI, 위브의 직렬화, 켈리의 정규화와 페드로의 TCP 제어 이야기까지 진짜 너무 좋은 이야기였다. 페드로는 시작 전에 시간이 걸릴 것 같다는 선전포고를 했는데, 말 떨어지기 무섭게 미션 마감에 쫓기던 몇몇 크루들이 도망(?)갔던 기억이 난다 ㅋㅋㅋ
시간이 길었던 만큼, 페드로가 발표에 힘을 꽉 주었던 게 온전히 느껴졌다. 크루들의 이해를 위한 여러 그림을 직접 그려오기도 하고, 네트워크를 배울 때 재미있게 배웠던 기억이 나지만 그 내용을 여기까지 잘 들고와서 설명하는 모습을 보고 놀라웠다.
학교에서 CS 과목들을 들으면서 꾸준히 복습했었는데, 지금 돌아보니 생각보다 많은 부분이 기억에서 휘발되었다고 생각한다. 이거 진짜 까먹으면 안 되는데.. 싶은 게 기억나지 않다가도 키워드를 들어야 아 맞다! 생각이 나는 경우가 한둘이 아닌지라.. 슬슬 사적인 공부를 할 때에는 CS 공부들도 진행해야겠다 싶다.
레벨 2에 알고리즘 세미나를 꼭 열어보고 싶다는 생각을 했는데, 많은 크루들이 미션에 쫓겨 시기적으로 적절한 건 아니라고 생각했다. 버퍼 기간에나 하지 않을까 싶다. 슬슬 버퍼 기간이 온다는게, 2레벨이 종료되고 레벨 3이 시작되면서 팀프로젝트도 함께 진행될 거라는 게, 크루들의 절반 정도는 이제 따로 다녀야하는 게 아쉽기도 하다. 🥹
이번 주가 가기 전에 RestClient를 테스트하는 법, 다양한 Provider에 대한 RestClient를 생성할 수 있는 방법에 대해서 글을 써 봐야겠다. 기술 글도 이것저것 담아두자.