이번 주차 미션은 3주차 미션이었던 Spring Boot를 이용한 CRUD 게시판 구현에서 댓글 기능, 회원가입/로그인(Spring Security, JWT) 기능 구현이었다.
지난주의 CRUD 기능은 여차저차 구현해냈으나 솔직히 제대로 된 개념을 습득하지 못했었다. 그래서 4주차의 반 이상은 Spring 심화 강의를 보는데 시간을 쏟았던 것 같다. Spring 심화 1주차 강의에서는 3주차 구현했던 CRUD에 대한 개념과 Spring Bean, MVC 패턴, DI 등 기본 지식 배경에 대한 상세한 내용들이 있었다. 3주차의 내용이었지만 굉장히 많은 배움이 있었고 궁금증이 모두는 아니지만 많이 해소된 느낌이었다.
하지만 4주차 과제는 그 다음 Spring 심화 2주차 강의 내용에 해당하는 부분이었다. 2주차 강의도 전부 보며 실습했지만 너무 어려웠다...
너무 강의를 보며 공부한 탓에 과제를 할 시간이 너무 부족했다.
맞다. 이번주는 과제를 완성 못 하고 배포도 못한 채 깃허브 링크밖에 제출 하지 못했다. 너무 분하고 자괴감이 많이 드는 한 주였다.
3주차 내가 구현한 코드 위에 과제를 진행할 수도 있었지만 나는 처음부터 CRUD부터 다시 구현했었다. 왜냐면 CRUD가 내가 이해를 아직 못했다고 생각했기 때문이다. 판단을 잘못 했던걸까? 그래도 이전 개념에 대해 조금 익숙해져서 도움이 됐다고 생각은 들었는데, 결국에는 그냥 나는 마감 기한 내에 완성을 하지 못한 사람이었다.
JWT(JSON Web Token)은 강의를 보며 개념만 공부했지만 시도조차 못해봤다. 댓글 기능도 해결 해내지 못했다.
댓글 기능의 주요 키포인트는 JPA의 활용(엔티티 매핑, 테이블 연관관계)이었다. 난 그 키포인트를 깨닫지 못해 많은 시간 삽질을 했다. 내가 3주차 사용했던 CRUD에서 사용했던 JPA의 기능은 극히 일부분이었다는 것을 깨달았다.
회원가입/로그인 (권한)의 영역도 다시 공부해서 구현해봐야겠지만 지금 나는 JPA가 더 시급하다. 구글링도 많이 해봤지만 테이블 연관관계에 대해서 바로는 이해가 되지 않았다.
결국 돈을 들여 강의를 구매했다.
나는 조금 더 차근차근 공부하길 원한다.
물론 개인미션, 특히 팀미션은 절대 민폐주면 안된다. 미션이 최우선이되 공부를 틈틈히 할 생각이다.
이번주는 계획에 대한 판단 실패였던 것 같다. 이번 5주차는 미션을 일단 어떻게든 구현해보고 그 다음에 원리를 분석을 해보려고 한다. 아직도 난 학습법에 대해 최적의 방법을 찾지 못한 듯 하다. 그치만 한가지 분명한 것은 개발자는 만들어 내는 사람이다. 만들어 내는 것은 당연하다. 그치만 파고 들어야 한다고 생각한다. 기본 개념에 대해, 원리에 대해 완전하지는 않더라도 흐름조차 깨닫지 못했다면 파고들어야 한다고 생각한다.
그리고 이번주 또 한가지 사실을 깨달았는데, 요구사항을 보고 머릿 속에서는 어떤식으로 처리하면 좋을지 상상의 로직은 그려졌다. 하지만 상상에서 현실이 될 수는 없다. 그 이유는 무지해서 생각을 코드로 표현을 할 수가 없었기 때문이다. 그리고 내가 상상했던 로직은 실생활의 사고 방식이었던 것이다.
프로그래밍적 사고는 실생활의 사고와 다르다.
프로그래밍으로 풀어 낼 수 없었던 가장 큰 이유는 내가 무엇을 모르는지 몰랐기 때문이다. 그래서 더욱 더 흐름에 대한 개념이라도 파악을 해야 한다고 생각한다. 이 방대하고 복잡한 프레임워크를 내 머리속에 전부 내 머릿속에 담을 수는 없다. 꾸준한 공부를 통해 흐름을 알고 내가 모르는 것이 무엇인지 키워드라도 떠올릴 수 있는 경지까지는 끌어올려야 한다고 생각한다.
이번주 과제제출을 실패한 것에 조금도 합리화 시킬 생각은 없다. 난 이번주 실패자가 되었고, 충분히 반성하고 개선해서 다음주에는 실패를 하지 않을 것이라는 오기와 패기를 느낄 뿐이다.
어떤 누군가는 이렇게 개념이나 흐름을 파악하려고 나처럼 발악하지 않아도 자연스럽게 받아들이고 놀이를 하듯 즐기는 그런 천재적인 사람도 있을 것이다. 나는 천재는 아닌 듯 하다. 하지만 나는 즐기지 못하는 것이 아니다. 내가 좋아하는 일을 잘 하고 싶어 미치겠기 때문에 이렇게 배우려 하는 것이다. 나는 배우는 것이 즐겁다.
지금 내가 남들보다 뒤쳐지고 두각이 드러나지 않을지라도 상관없다. 멀리보고 파고드는 만큼 이 프로그래밍만큼은 날 배신하지 않을거라 믿는다.
금주의 키워드에 대해 다뤄보겠다. 마침 이번 주 공부하며 개념정리 해뒀던 내용들이라 그대로 옮겨 적기만 하면 될 것 같다.
(금주 항해톡 주제로 준비한 발표자료로 대체)
[presentation] SQL vs NoSQL
(포스팅한 기술 블로그로 대체)
[CS:디자인패턴]MVC