Weekly I Learned/2023's(1. ~ 12.) WIL

2023년 4월 2주차(4/10 ~ 4/14) Weekly I Learned "선택과 집중!"

ikjo 2023. 4. 16. 02:26

지난 한 주 되돌아보기

4월 2주차에는 (늘 그렇듯이) SSAFY 의 교육과 함께 알고리즘 문제도 꾸준히 풀면서 남는 시간을 짜내어 팀 프로젝트 개발도 꾸역꾸역 진행했다. 비록 많은 시간을 할애할 수는 없었지만 팀 프로젝트 개발로 어느 정도의 결과물을 만들어내 나름대로 보람있었던 한 주였다. 👀

 

SSAFY, 알고리즘 교육 과정이 모두 종료되었다!

4월 2주차(화요일)부로 SSAFY 의 마지막 알고리즘 정규 교육 과정이 모두 종료되었다. 약 1달 가량 진행되었던 1차 알고리즘 교육 기간과 약 2주 가량 진행되었던 2차 알고리즘 교육 기간 동안 다양하고 많은 알고리즘 문제들을 풀면서 내가 당초 알고리즘에 특화된 교육 과정인 SSAFY 를 통해서 이루고자 한 '알고리즘 역량 향상'을 어느 정도 이룰 수 있었다고 생각한다. 하지만, 아직도 알고리즘 역량은 많이 부족하다고 생각하며, 앞으로 더욱 많은 연습이 필요하다고 생각한다.

 

마스터즈 코스 수료 이후 지금까지의 시간을 되돌아 보면 프로젝트 보다는 알고리즘 문제 풀이에 더 많은 시간을 할애했었던 것 같다. 예나 지금이나 '기업 코딩테스트를 무난히 통과할 수 있는 수준'을 목표로 알고리즘 공부를 해왔었는데, 그 길이 순탄치만은 않았고 지금도 그렇다. 현재도 나의 수준은 어떤 기업의 코딩테스트는 붙고 어떤기업의 코딩테스트는 붙지 못하는 수준이라고 생각한다. 

 

비록 나는 '알고리즘' 학습을 기껏해야 작년 1월부터 시작해오긴 했지만, 지금까지 알고리즘을 학습해오면서 느꼈던 점은 알고리즘은 매우 '어렵다'는 점과 동시에 매우 '재미있다'는 점 그리고 '실력이 매우 천천이 늘어난다'는 점인 것 같다. 또한, 많은 분야가 그렇겠지만 알고리즘 역시 '재능이 매우 중요하다'는 것을 느낄 수 있었다. 개인적으로 생각해보았을 때 나는 재능이 있다고 하기도 그렇고 재능이 없다고 하기도 그렇고 딱 중간 정도라고만 생각한다. 특히, 알고리즘을 학습함에 있어 수학이 상당히 중요하다는 것을 느낄 수 있었는데, 나는 학창 시절 수학에 취약했었기에 알고리즘에 있어서도 수학적 사고가 필요한 유형의 문제 풀이에 많은 어려움을 느끼고 있다. 🤣 (그럼에도 불구하고 전기전자공학과를 꾸역꾸역 졸업할 수 있었다. 👀)

 

아무쪼록 SSAFY 의 알고리즘 교육 과정이 모두 끝난 지금, 앞으로의 알고리즘 학습 방향에 대해 많은 생각이 든다. 마스터즈 코스 수료 이후 알고리즘에 많은 시간을 할애해오면서, BFS, DFS, 백트래킹, 구현 등 기업 코딩테스트에 자주 출제되는 문제 유형에는 어느정도 자신감이 생겼으나, 아직도 다이나믹 프로그래밍 등의 어려운 문제 유형에는 부족함을 많이 느낀다. 더욱이, 현재 단계에서 더 성장하기 위해서는 이전보다 더 많은 노력이 필요하다고 생각이 든다.

 

그렇다고 앞으로도 이전 처럼 알고리즘에 많은 시간을 할애할 수는 없는 노릇이다. 현재 프론트 엔드 개발자, 디자이너와 협업하여 진행하고있는 팀 프로젝트 개발도 착수되어 한 주 한 주 일정량의 성과를 내야하고, 앞으로는 SSAFY 에서도 웹 개발 프로젝트를 중심으로 교육이 이루어지기 때문이다. 특히 (서비스 기업) 취업을 중요한 가치로 생각해보았을 때에는, 알고리즘은 일반적으로 '채용의 필터' 역할에 불과하다. 상당수의 서비스 기업의 경우에는 기술 면접과 실무에서는 알고리즘 역량 보다 웹 개발 역량이 더욱 중요시 하리라 생각한다. (물론, 기업에 따라서 다를 수는 있다.) 더욱이 나의 경우 알고리즘에 대한 러닝 커브가 갈수록 완만해지고 있기에 실력 상승 또한 더딘 상태에 있다. 즉, 현재 나에게 취업에 있어서 알고리즘은 인풋 대비 아웃풋 '가성비'가 적다는 것이다.

 

하지만, 시간이 지남에 따라 기업 코딩테스트에서 요구하는 알고리즘 역량이 점점 올라가고 있는 추세(알고리즘 상향 평준화)에 있다. 따라서 알고리즘 문제 풀이를 소홀히 할 수는 없는 노릇이기에, 현재 SSAFY 교육생들과 함께 진행하고 있는 알고리즘 스터디를 꾸준히 하고자 한다. 아울러 어떤 문제를 해결한다고 끙끙대며 몇시간 흘려보내기 보다 모를 때에는 과감하게 넘어가거나 문제 풀이를 위한 아이디어 내지 해답을 확인하고자 한다. 무엇보다 장기적으로 꾸준하게 알고리즘 문제를 풀고자 하기에 백준 1일 1커밋 운동을 계속 이어나갈 생각이다. 🏃‍♂️

 

 

SSAFY, DB 를 다루다!

4월 2주차 SSAFY 에서는 알고리즘 교육 과정을 끝 맺고 이후에는 DB 를 중점적으로 다루었다. join, subquery, index, database modeling 등 매우 중요한 내용들을 다루었는데, 기존에 알고있었던 내용들을 복기하고, 미처 알지 못했었던 내용들을 보충해나가는 시간을 가졌다. 또한, 현재 프로젝트도 진행하고있어 해당 내용에 대해 제대로 알고가야 할 필요성을 느껴 좀 더 몰입해서 학습했었던 것 같다. 이제 다음주부터는 드디어 Spring 을 다룬다고 하는데, Java, HTML, CSS, JS, 알고리즘 등 웹 개발을 하기 위한 기초를 중점적으로 다루어왔던 SSAFY 교육 과정도 이제 본격적으로 웹 개발 및 프로젝트 과정에 들어서는 것 같다. 🎉

 

자기 개발 스터디, '개인 정보 DB 저장와 암호화'에 대해 발표해보았다!

2022년 알고리즘 스터디로 시작했었던 스터디가 스터디원들의 각자의 사정으로 현재는 '자기 개발 스터디'라는 명목으로 꾸준하게 운영되고 있다. 생각해보면 1년이라는 시간 넘게 꾸준하게 매주 모임을 가지는 것도 놀라운 일인 것 같다. 👀 (물론, 화상 회의이지만)

 

아무쪼록 이번 자기 개발 스터디에서 나는 최근 SSAFY 에서 진행하는 작은 프로젝트를 진행하면서 배운 '개인 정보 DB 저장과 암호화'에 대한 내용을 스터디원들과 공유하는 시간을 가졌다. 이전 마스터즈 코스 당시 프로젝트를 진행할 때에는 주로 OAuth2 를 기반으로 하여 인증 기능을 구현했었기에, 비밀번호를 클라이언트로 받아서 처리했었던 경험이 없었던지라 좋은 경험이 되었다. 내가 경험했었던 내용을 누군가에게 설명함으로써 더욱 나의 지식과 경험으로 굳힐 수 있기에 이러한 스터디 모임이 여러모로 도움이 된다. 🥂

 

팀 프로젝트 개발, 인증 및 인가 기능 구현 완료!

3월 1주차부터 본격적으로 팀 프로젝트 개발을 시작하면서, 가장 먼저 구현하고자 했었던 것은 Spring Security 기반의 OAuth2 + JWT 인증 및 인가 기능을 구현하는 것이었는데, SSAFY 과정과 함께 알고리즘 문제 풀이 등으로 팀 프로젝트 개발에 많은 시간을 할애하지 못했었던데다가 Spring Security 도 처음 사용하는 기술이었기에 많은 어려움이 있었지만 꾸역꾸역 하다보니 4월 2주차에 들어서 초기 목표를 달성할 수 있었다. 아울러, 기능 하나를 구현하고나니 이것저것 구현하고싶은 생각이 샘솟았다. 앞으로 SSAFY 에서도 웹 개발을 중점적으로 교육이 진행되기에 현재 하고있는 팀 프로젝트 개발에 더욱 몰입할 수 있으리라 생각한다. 💪