지난 한 주 되돌아보기
마스터즈 코스를 수료한 후 7~8월에는 다소 느슨하게(?) 학습을 했었던 것 같은데, 시간이 갈수록 올 한해가 마무리되고 있음이 느껴지다보니 점점 학습에 매진하게되는 것 같다. 😅 과연 남은 기간 동안 올해 목표하고 있었던 것들을 다 이룰 수 있을지는 의문이지만, 일단 꾸준히 노력하고자 한다. (사실 목표했었던 것 외로 이룬 것도 많긴 하다.)
본격적으로 스프링 공부 시작!
15주차간 진행됐었던 온라인 기초 자바 스터디를 지난 11월 1주차에 마치고 11월 2주차부터 본격적으로 스프링 공부를 시작하게 되었다. 우선 지난 마스터즈 코스 중에서도 다 듣지 못했던 김영한님의 스프링 MVC 강의 2편의 남은 부분들을 마저 학습했다. 다만, 타임리프는 지금 당장 사용하지 않기 때문에 일단 보류해두었다.
마스터즈 코스 중에 강의를 들을 때는 단순히 이런게 있고 기능을 구현하기 위함(사용 방법 등)에 초점을 맞추었었지만, 요즘 강의를 들을 때는 단순히 기능 구현보다는 해당 기술이 어떤 원리로 동작하는지에 초점을 맞추고 있다. 이번 강의를 들으면서 검증, 예외, 쿠키 및 세션, 컨버터 등에 대해 학습할 수 있었는데, 이미 사용했었던 경험이 있었던 기술이지만, 내부적으로 어떻게 동작하는지 좀 더 이해할려고 노력했었다.
사실 이번 스프링 MVC 강의 2편 이전에 들었던 강의들도 단순 기능 구현에 초점을 맞추고 들었던 강의들이 꽤나 있었는데, 해당 강의들도 이제는 좀 더 심도있게 학습하고 싶은 욕심이 들었다.
프로젝트 디자이너 모집 완료!
프로젝트 아이디어 구상을 마친 후 대략 한달 동안 진행됐었던 디자이너 모집이 마침내 마무리될 수 있었다. 이미 기획 밑그림을 그려놓은 상태였던지라 디자이너를 구하는 일은 쉬운 일이 아니었지만, 꾸준한 모집 활동 노력 덕에 드디어 팀원 모두가 원하는 디자이너 분을 찾을 수 있었다.
이제부터는 본격적으로 기획안을 구체화하고 비지니스 프로세스를 설계해야할 단계에 있는데, 이것만 하더라도 대략 1~2주 정도는 추가적으로 소요되지 않을까 싶다. 😅 아무쪼록 오랜 시간 걸렸었던 만큼 현재의 팀원들과 의기투합하여 좋은 결과물을 만들어내고 싶은 욕심이 있다.
알고리즘 문제 꾸준히 풀기
개인적으로 마스터즈 코스 당시에는 하루에 알고리즘 한 문제 푸는 것도 굉장히 버거운 일이었지만, 요즘에는 알고리즘 한 문제 푸는 것은 성에 차지 않아 3~4문제는 풀고있는 실정이다. 😅 아무래도 마스터즈 코스 당시에는 기본적인 유형의 알고리즘 문제도 매우 낯설었기 때문이라 생각이 든다. (경험 부족)
마스터즈 코스 수료 이후에는 나름대로 알고리즘 문제를 꾸준히 풀어오면서 이제는 기본적인 유형들은 어떻게 풀어야할지 어느 정도는 감이 오기에 문제를 푸는데 있어 부담이 많이 줄어들었다. 더욱이 (자기소개서를 작성하지 않아도 👀) 코딩테스트에 응시할 수 있는 기회만 있으면 모두 참여했었던 것도 알고리즘과 친밀(?)해지는데 많은 도움이 되었던 것 같다. 💦
아무쪼록 11월 2주차에도 프로그래머스와 백준에 있는 문제들을 꾸준히 풀면서 차근차근 연습하는 중에 있었다. 또한, LG CNS 코드 몬스터(code monster) 코딩테스트(예선)에도 응시했었다. 결과는 3시간 동안 4문제 中 1 Solved로 처참했다. 😂 2번 문제의 경우 시험 종료 후 15분만에 Solved 했기에, 그래도 제한 시간 내에 2문제는 풀 수 있었는데 하는 아쉬움이 많았다. 난이도는 개인적인 체감상 최근에 응시했었던 데브매칭, 윈터코딩, LG U+, 가우스랩스 등의 코딩테스트 대비 월등히 높았다.
아울러, 이번 코딩테스트 역시 지난 가우스랩스 코딩테스트와 마찬가지로 복사 및 붙여넣기가 허용되지 않았기 때문에 IDE에서 작성한 것을 제출란에 일일이 옮겨적어야만 했는데, 이렇게 일일이 적는데만 해도 (오타 수정 시간 등 포함) 한 문제당 15 ~ 20분 정도는 소요됐었던 것 같다..😂 (복붙만 됐어도 2번 문제 맞았을텐데 하는 강한 아쉬움...) 문득, 코딩테스트 언어를 Java 대비 상대적으로 적은 코드를 작성해도 되는 파이썬으로 갈아타야되나 하는 생각이 드는 순간이었다. 😇
참고로 앞서 Solved 라고 언급은 했지만 모든 테스트 케이스가 주어지는 문제가 아니었기에 이는 나의 논리적인 판단에 한정해서만 정답이라는 의미이다. 😅 (LG 측에서 채점 시 틀릴 수도 있다는 것이다. 😊)
면접 대비 역시 꾸준히!
지난번 예상치 못한 면접의 기회로 그동안 꾸준히 면접 대비를 하지 않았었던 것이 많은 후회가 됐었기에, 알고리즘 문제와 같이 면접 대비 역시 꾸준히 하는 중에 있다. 명목상으론 면접 대비라곤 했지만, 사실 면접 준비를 하는 과정에서 해당 기술에 대한 이해도를 키울 수 있어 나름대로 많은 도움이 되는 것 같다.
사실 프로그래밍을 함에 있어 타성에 의해 코드를 작성하는 경우도 많은데, 면접이라는 상황을 떠올리다보면 코드를 작성하는 또는 이 기술을 사용하는 '의도'에 대해 생각해볼 수 있어 나름대로의 훈련이 되는 것 같다.
최근에는 JPA N + 1 문제 발생 원인과 해결 방안, JPA 프록시 객체, Spring과 Spring boot의 차이 등에 대해 개인적으로 학습해보았다.