[우아한테크코스] LV2 - 웹 자동차 경주 미션 회고
들어가면서
10초 같은 10일의 방학이 지나고 어느덧 레벨2가 시작했다. 레벨2 첫번째 미션은 레벨1에서 구현했던 콘솔기반 자동차 경주 프로그램을 웹 기반으로 다시 구현해보는 것이었다. 이번 페어는 오리였으며 굉장히 금방 지나간 것 같은 3일이었다. 1년 전에 무료 스프링 입문 강의를 노베이스로 한 번 들었던 것 말고는 경험이 전무했던 나와는 다르게 오리는 스프링을 사용하는 것에 익숙해보였다. 덕분에 해메일 수 있었던 레벨 초반에 감을 빠르게 잡을 수 있었던 것 같다.
레벨 초반 미션이고 스프링을 처음 시작하는 사람들도 진행할 수 있도록 해야 했기에 요구사항이 많이 빡세지 않다는 것이 느껴졌다. 하지만 스프링을 거의 처음 접하는 입장으로서 시시각각 쏟아져 나오는 키워드들과 모르는 개념들은 충분히 사람을 질리게 만들기에 충분했다.
그래서 이러한 키워드들에 대한 학습은 한차례 뒤로 미루고 미션을 먼저 마무리하는 것을 목표로 진행했다. 그러다보니 기존에 알고있던 Layered Architecture와 스프링 Annotation을 어떤 방식으로 사용해야 하는지를 중심적으로 학습하게 되었다.
공부한 개념들
[Repository와 Dao를 분리하는 기준]
https://makemepositive.tistory.com/33
[Layered Architecture에 대한 개인적인 고찰]
https://makemepositive.tistory.com/35
셀프 회고
[쏟아지는 키워드]
Spring을 시작하고 나서 계속 느끼고 있는 것은 학습해야할 키워드가 많아도 너무 많다는 것이다. 현실적으로 이를 모두 학습하고 미션을 진행한다는 것 자체가 불가능하기에 최대한 그때그때 떠오르는 궁금증들을 따로 적어두고 기능을 구현하고있다. 걱정이 되는 점은 이렇게 얼레벌레 미션을 하고 나서 키워드 학습을 하는 것이 과연 효율적일까 하는 것이다. 그 때 그 상황에서 궁금했던 것을 바로 해결해야 그 상황에 대한 것들이 머리속에 더 각인되지 않을까 생각했다.
하지만 모든 의문을 해결하면서 미션을 진행하려고 하면 제시간에 미션을 제출하는 것은 힘들다는 걸 이미 몸소 체험해봐서 알고 있다. 그러면 결국 앞에서 생각한대로 궁금한 점들을 나중에 따로 해결하는 방식을 사용할 수 밖에 없다는 결론이 나온다. 그래서 생각해본 방법은 키워드나 떠오른 궁금증을 일단 적어두고 넘어가는 상황에서 최대한 그것들이 등장한 현재 상황을 같이 적어두는 것이다. 얼마나 효과적일지는 모르겠지만 적어도 시간이 지나서 쌓아둔 기술부채를 해치우러 돌아왔을 때 덩그러니 키워드와 질문만 있는 것보다는 다시 갈피를 잡는데 도움이 될 것이라 생각한다.
[학습의 방향]
이번 레벨2 OT를 듣고 이번 레벨에서 스프링 자체를 학습하는 건 부가적인 것이라는 생각이 들었다. 계속 초점을 맞춰왔던 것은 스프링 자체가 아니라 어떻게 하면 새로운 프레임워크, 기술을 빠르게 학습해서 내가 원하는 기능을 구현하는데 사용할 수 있는가였다. 그래서 코치님들이 학습방법에 대한 고민을 해보라고 많이 말씀을 해주셨던 것 같다.
이런 생각을 가지고 학습테스트를 진행하면서 정말 진득하게 공식문서를 찾아봤던 것 같다. 특정 키워드가 어떤 개념인지에 대한 것도 공부하긴 했지만 가장 의미있었던 과정은 아무것도 모른다는 상태를 가정하고 어떻게 공식문서에서 내가 원하는 기능을 탐색하고 사용할 것인지 고민했던 시간이었다. 해당 과정을 정리한 내용은 다음 링크에 정리해두었다.
위와 같은 과정을 거치면서 처음에 가졌던 공식문서에 대한 막연함과 두려움은 없앨 수 있었다. 하지만 여전히 미션에서 손가락이 굳어버리는 느낌은 여전했다. 학습테스트를 진행하면서 공식문서를 통해 정리했던 키워드들임에도 불구하고 실제로 사용하려고 하면 빈번히 막혔다. 여기에서 나는 무언가 잘못하고 있다는 걸 인지했지만 어떤 이유인지는 몰랐었다.
그러던 중 얼떨결에 스프링을 처음 접하는 크루들을 대상으로 진행했던 모임에 참여하게 되었다. 분명 강의실을 비워달라고 했었는데 외부에서 브리와 얘기하던 라온과 함께 묶여서 끌려들어가게 되었다. 예상치 못한 시간이었지만 다른 크루들과 얘기하다 보니 스스로 깨닫게 되었던 사항이 있었다.
준팍을 비롯한 여러 크루들이 나와 비슷하게 공식문서를 통해 키워드 학습을 진행하려고 시도했고 해당 과정에서 어려움을 많이 느낀다고 말했다. 나 또한 그러했기에 왜 우리는 분명히 학습했음에도 불구하고 어려움을 느끼는 것인지를 고민하게 되었다. 이에 대해 내린 결론은 공식문서를 깊게 판다고 미션에서 스프링 기능을 가져다 쓸수 있는게 아니라는 것이었다.
공식문서에서 JdbcTemplate이라는 키워드에 대해 설명한 부분을 모두 공부해서 이해했다고 해보자. 그러면 그 사람은 개발을 진행할 때 JdbcTemplate을 자유자재로 사용할 수 있는 사람일까? 이렇게 질문을 던지면 누구도 그렇다고 쉽사리 답하지 못할 것이다. 오히려 조금이라도 비슷한 문제를 직접 스프링을 활용해 해결해본 경험이 있어야 실제 사용 시 생각의 트리거를 당길 수 있다. 그래서 스프링과 같은 방대한 프레임워크를 학습하는 방식이 일단 사용해봐야 한다고 말하는게 아닐까라는 결론을 내렸다.
나의 현재 우테코 우선순위를 묻는다면 미션이다. 그런데 특정 키워드에 꽂혀서 미션을 진행하지 못하는 경우가 계속 발생한다면 레벨1 때처럼 시간에 쫓겨서 살 수 밖에 없을 것이다. 그래서 이제는 이해가 되지 않더라도 일단은 미션에 써보기로 했다. 공식문서를 통해 학습을 하고 키워드 정리와 원리 이해등은 차순위로 내려두기로 했다. 하지만 사람의 습성이 쉽게 변하는게 아닌지라 어느샌가 정신차려보면 학습 Depth를 밑으로 밑으로 파고드는 자신을 발견하기 다반사였다. 이를 의식적으로 조절해서 다음 미션은 꼭 최종 제출 전 피드백 2번 이상 받아보도록 해야겠다.