원티드랩 사전과제를 일주일 정도 진행했다.
시간이 짧아서 회고 소재가 될까 싶기도 하지만
좋은 경험이었다고 생각하기에 글을 작성한다.
이유는 알 수 없지만
내게는 출처 불명의 근자감이 생겨버렸다.
아마 이제 곧 부트캠프를 졸업한다는 것 때문에 생긴 근자감같다.
6개월 간 열심히 공부했고, was/스프링카페/이슈 트래커/스프링 카페 벌써 네 개에 달하는 프로젝트도 해봤다. 초반에는 자바로 다양한 미션을 해결하는 혹독한 수련도 했다.
새벽까지 공부한 적도 꽤 많았고
기술적인 공부도 열심히 했다고 자부한다.
그래서, 원티드랩 사전과제인 '카페 구현'을 처음 봤을 때는 솔직히 금방 끝낼 수 있을 줄 알았다.
역시 근거없는 자신감은 한번 된통 당해봐야 속시원하게 사라진다.
사전과제를 코드를 구현하면서 정신이 반짝 들었다.
생각보다 쉽지 않았던 탓이다.
일주일 안에 끝내기에는 볼륨이 큰 편이었다. 구현해야 하는 기능 중에는 생소한 것들도 꽤 많았다.
실시간 알림 전송에 어떤 라이브러리를 쓰고 이를 어떻게 구현해야할지?
소프트딜리트를 한 post를 어떻게 하드딜리트할 것인지?
대댓글을 만들고 싶은데 설계를 어떻게 하지?
이미 한두번 구현해본 것들도 막상 다시 하려니 쉽지 않았다.
구현 방법부터 기억이 나지 않았다.
예전에 작성한 글들을 더듬어 보면서 기능을 구현했다.
구현에 있어서 양자택일의 순간에, 선택을 하는 것도 쉽지 않았다. 과거 팀플을 했을 때 한번씩 고민했던 것인데, 이제는 내 스스로 결정을 해야 하는 문제가 됐다.
예전에는 여러명이서 의견을 조율했기에 '선택을 잘했다'라는 확신이 어느정도는 있었다. 이제 혼자 그 부담감을 떠 맡아야 하니 '잘 선택한 게 맞나?'라는 불안감이 미묘하게나마 남았다.
결국, 지인 찬스를 쓰면서 '이러이러한 결정을 했는데 어떻게 생각하냐?라고 물어보기도 했다. (이 과정에서 '이해했다'고 생각했던 것들이 실제로는 아니었다는 걸 깨닫기도 했다. ㅎㅎ)
우리 형이 내게 매번 하던 말이 있다.
"스프링으로 카페 만드는 것부터 잘해봐라"
이미 만들어봤는데 더 잘해볼 게 있나? 싶었지만
아니었던 것이다 ㅎㅎ
카페에도 기능이 정말 많았고, 성능 튜닝을 위해서 고민해야 할 지점들이 많았다.
수십만 건에 달하는 공공데이터를 db에 저장해서 활용하는 멋진 api를 만드는 것도 좋은 경험이다. 하지만, 개발은 그것만이 전부가 아니었다는 걸 새삼스레 배우게 됐다.
원티트랩 사전과제는 '해커톤'은 아니다. 다만, 단기간에 과제를 완성해서 제출해야 한다는 점에서는 성격이 유사하다.
이 기간 새벽 4시까지 자고 다음날 1시에 일어나서 다시 하루종일 개발을 했다.
(부트캠프를 다니면서도 프로젝트 막바지쯤에야 이랬지... 이런 경험을 자주한 건 아니었다.)
정말 많은 개념들을 새롭게 배우고, 정리했다.
블로그에 글로 정리하면서도 이론적인 것도 많이 알게 됐다.
'개발 =문제해결'이라는 것도 다시 배웠다. 혼자서 a부터 z까지 개발을 하면서 마주친 이슈가 정말 많았던 탓이다...
하나하나 다 해결하다 보니 이런 게 곧 문제해결 능력으로 이어지는 구나..하고 감탄하기도 했다.
이 과제를 한달동안 했다고 해서 훨씬 더 좋은 경험을 했을 거라고 생각하지는 않다. 길게 가져갈 과제가 있고, 단기간에 끝낼 챌린지들이 있는 거 같다.
후자의 경우에는 짧은 순간에 집중해서 성장할 수 있어서 자극이 된다. ㅎㅎ
문서화가 얼마나 중요한지도 알게 됐다.
이번 프로젝트를 하면서 과거에 문서로 정리했던 부분들을 레퍼런스로 참고할 수 있었다.
나는 문서로 정리하면서 레퍼런스로 삼은 것들의 출처를 인용 바로 아래에 남기는 편인데, 덕분에 헷갈리는 지점이 있으면 원출처를 보면서 다시 공부할 수 있었다.
바쁜 시간을 쪼개야 하는 상황에서, 처음부터 끝까지 다시한번 구글링으로 서치를 하면 시간이 얼마나 걸릴지... 아득하다..ㅎㅎ
아쉬웠던 점도 있다.
자랑은 아니지만, 바쁘다 보니 실시간 개발을 했다.
시간이 없다는 핑계로 엔티티 설계를 하지 않고 개발에 들어갔다.
기능 플로우도 정리하지 않았다.
먼저 구현을 하고 필요하면 엔티티를 만들거나
기존 엔티티에 연관관계나 필드를 추가했다.
(사실 기자로 일할 때도 바쁘면... 글의 목차같은 것들을 미리 짜지 않고 바로 글부터 쓰긴 했다...)
처음부터 설계를 했으면 더 편했을 거 같다는 생각이 든다.
이번에 db에 더미데이터를 수십만건씩 배치로 넣으면서 개발을 했는데 그러다 보니
엔티티나 연관관계가 새로 생길 때마다 db 데이터를 지우고 다시 넣는 일을 반복했다..
엄청난 시간 낭비를 한 건 아닌데... 굳이 이렇게 할 필요가 있었을까 싶다. 연관관계에 하나씩 맞춰서 데이터를 넣는 게 마냥 쉬운 일은 아니었다ㅎ..
뭔가를 하지 않고서 후회하는 걸 좋아하지 않는 편이다.
그냥 해보고 후회하자.
내게는 일종의 신조인 셈이다.
그래서, 평소 스스로를 혹사하면서 이것저것 시도하는 편이다.
매번 힘들어하면서도 후회하지 않는 한 가지는 도전을 해봤다는 것이다.
경험은 내게 항상 후회 그 이상을 주었기 때문이다.
원티드랩 사전과제를 하기 전에는 굳이 이걸 할 필요가 있을까?
고민했다.
사람들에게 해보라고 권하면서도 스스로도 이걸 굳이?.. 싶었다.
하지만, 짧은 시간동안 한단계 성장했다는 걸 알게 됐다.
역시 도전은 최고다.
이러한 경험에 자극받아서
시간이 되는 한 해커톤이나 공모전들을 도전하면서
성장하는 경험을 계속 해볼려고 한다.
(지금도 블레이버스라는 해커톤에 참여했다 ㅎㅎ)
😆