1. '눈 깜짝할 새'
Section 2의 회고에다가 시간이 빠르게 지나가는 느낌을 받는다고 적었다.
하지만 Section 3는 그 정도 수준을 넘어섰다.
정말 자고 일어나니 어느새 HA까지 도달해 있는 느낌이었다.
왜 그랬는지에 대해 생각해보자면, 사실 내가 그만큼 열심히 하고 코딩에 몰두했다기보다는 그만큼 익숙해져서 이렇게 시간이 빠르게 흘러갔다는 생각도 든다.
어느새 코드스테이츠에 몸 담은지가 꽤 오래되었다보니, 코드스테이츠 일과 이후 평일 저녁이나 주말을 어떻게 사용해야 할지 노하우가 생겼으며, 그대로 루틴을 반복하다보니 생각지도 않는 사이에 이렇게나 시간이 흐른 것이 아닐까.
이렇게 흘러가는 시간 속에서 내가 취한 전략은 간단했다.
일단 코드스테이츠 일과 중에는 그대로 주어져 있는 학습 목표를 달성하는 데에 중점을 두었고, 그 이후의 시간에는 TO DO LIST를 간단하게 작성해서 그것을 실행하는 데에 초점을 두었다.
TO DO LIST라고 해서 뭐 거창할 것 없이, 그저 내가 부족했던 부분들을 보충하거나 다음에 어떤 내용들을 학습하게 될지 미리 훑어보는 계획들을 많이 적어놓았다.
내가 생각보다 게으른 사람이라 그런지, 이 간단한 계획이 있고 없고의 차이는 어마무시했다.
이전에는 공부를 하겠다고 마음을 먹어도 막상 뭘 해야 할지 난감해서 시간을 허투루 소비하는 일이 많았는데, 미리 계획을 간단하게 작성하고 공부를 시작하니, 확실히 더 효율적으로 시간을 사용하는 느낌이 들었다.
사실, 나한테는 매일매일 어떤 동기부여를 가하며, 학습에 대한 열의를 불태우는 것보다도, 이렇게 간단한 계획을 세워서 실천해 나가는 방식이 더 잘 맞는 것 같다. 😅
2. Section 2 와는 달랐던 점들
일단 내가 제일 까다롭다고 여겼던 React가 학습 과정에서 사라졌다.
Course Reflection 시간에 크루님이 'Section 3는 Section 2에 비해서 어렵지 않았냐'는 질문을 건내주셨다.
과연 그랬는지에 대해 생각해보느라 미처 답변을 달지 못했지만, 소신발언을 해보자면 Section 3는 Section 2에 비해 한결 수월했다.
Section 2에서는 일단 처음 상대해보는 Algorithm & Data Structure가 상당한 멘붕 요인이었다.
그리고 나는 아직도 Section 2에서 만났던 React Redux가 미처 잘 정리되지 않은 상태이다.
연일 계속되는 Toy 문제들의 까다로움은 말할 것도 없었다.
하지만 Section 3로 넘어오고 나서는, Algorithm & Data Structure 문제들에 대해서 검색해보는 요령이 생겼다.
학습하는 내용들 중에서도 JPA, HTTP & Network 등은 내가 인터넷 강의들을 미리 들어둔 덕에 조금씩은 알고 있는 내용들이었다.그리고 답이 안나오는 Toy 문제들은 이해만 하고 넘어가는 유두리가 생겼다.
그렇다보니, Section 3는 정신적으로 덜 힘들었다.
다만 이후에 진행하게 될 프로젝트를 어떻게 헤쳐나가야 할지에 대한 막연한 두려움 정도가 있을 뿐이었다.
3. 내가 알았지만 몰랐던 것들
나는 국비지원 학원을 수료한 이후에도 석달 정도 인터넷 강의를 들었다보니, 조금은 친숙한 녀석들이 이번 Section에 많이들 보였다.
하지만 강의를 들었다고 해서 주어진 문제들을 손쉽게 해결해 나갈 수 있는 것은 또 아니었다.
이론적인 부분들에 대해서 학습을 진행했지만, 이를 통해 직접 코드를 설계해보고, 테스트해보는 과정이 없었다보니 놓치고 갔던 부분들이 상당히 많이 있었다는 생각이 들었다.
어떤 부분들이었는지 간단하게만 짚고 넘어가고자 한다.
3-1. JPA
나는 인프런 사이트에서 김영한 님의 JPA 강의 로드맵을 다 수강했다.
이 강의를 통해서 Spring Data JPA 라는 친구의 막강한 편의성에 깊은 감명을 받게 되었다.
Spring Data JPA를 활용하면 아래와 같이 Repository의 로직을 상당히 간단하게 구현할 수 있게 된다.
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}
그래서 나는 이후 Toy Project를 만들 때에도 이 Spring Data JPA만을 위주로 사용했다.
하지만 이는 학습 과정으로써는 썩 좋지 않은 방식이었다.
코드스테이츠에서 JPA를 다시 배우며 주어진 과제를 풀어나갈 때, 솔직히 나는 문제들을 상당히 수월하게 풀어낼 수 있으리라고 생각했는데 실상은 그렇지 않았다.
오히려 JPA 기본 사용 문제가 까다롭게 느껴져 잘 풀어내지를 못했다.
그만큼 내가 JPA의 기본을 무시한 채 고급 라이브러리에만 의존해왔다는 뜻이었다.
앞으로는 코드의 구현 자체에만 몰입할 게 아니라, 어떤 원리로 작동하는 것인지에 대한 기본 개념에 더 관심을 기울여야만 하겠다는 생각이 든다.
3-2. Security? Spring Security?
Spring Security에 대해서는 따로 인터넷 강의를 듣지는 않았다.
하지만 코드스테이츠에 들어오기 직전에 Toy Project를 만들어보면서, 내 코드에도 Spring Security를 구현해봐야겠다는 생각이 들었고, 검색을 통해 이것저것 알아가며 어떻게든 구현을 해놓았다.
그랬기 때문에 이 챕터도 어느 정도 수월하게 학습할 수 있지 않을까 생각했는데 크나큰 오산이었다.
Security에 대해서는 내가 모르는 영역들이 너무나도 많았고 이번 기회에 충분히 학습할 수 있게 되었다.
또 한가지 잘못 알고 있던 부분이 있다.
내가 Toy Project를 만들면서 Spring Security를 구현하고자 할 때에는 build.gradle에서 Spring Security 라이브러리를 가져오도록 해놓고, 이 라이브러리를 통해서 Spring Security를 구현해 나가는 방식으로 진행했었다.
하지만 코드스테이츠의 학습 과정에서는 이런 라이브러리를 가져오는 작업이 없었다보니 '이건 Spring Security는 아니고 그냥 Security인가?' 하는 생각이 들었다.
결론부터 말하자면 오산이었다.
크루님이 설명해주시기를, 현업에서는 그냥 Spring을 사용하면서 그 안에 보안 관련 로직을 넣게 되면 그걸 그냥 Spring Security라 부른다고 해주셨다.
이로써 미래에 쪽팔릴 일이 생길 여지가 하나 사라졌다. 🤣
4. '배포 공포증'
이전에 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스라는 책을 통해 AWS 배포 과정을 학습했던 적이 있다.
그때 당시에 Windows 환경에서 개발하느라 더 까다로워서 그랬는지 어땠는지 몰라도, 실습 과정은 안타깝게 실패했다.
게다가 '탄력적 IP'라는 것을 제대로 해지하지 못해서 추가 요금이 계속해서 발생하는 이슈까지 생겼었다.
상황이 이렇다보니 나에게 있어서 배포는 '상당히 까다롭고 복잡한 것' 이라는 이미지로 다가왔다.
하지만 이후 코드스테이츠에서의 AWS 챕터를 학습해나가다보니, AWS 콘솔을 다루는 일에 상당히 익숙해졌다.
그리고 무엇보다도, AWS에서 제공하는 EC2, S3, RDS, Route53, IAM 등이 각각 어떤 역할을 하며, 어떻게 활용할 수 있는지에 대해 충분히 학습할 수 있었다.
확실히, 이전에 가졌던 배포에 대한 막연한 두려움을 한결 떨쳐낼 수 있었다.
이후 프로젝트를 진행할 때에도 이렇게 배운 것들을 토대로 잘 배포해볼 수 있겠다는 기대감도 생겼다.
그리고 이전에 해지하지 못했던 '탄력적 IP'도 마침내 해지할 수 있게 되었다.
그러나 추석 연휴 이후에 배포 자동화 라는 챕터를 배우게 되었는데, 이 부분은 좀 까다로웠다.
구글링을 통해 어떻게든 문제를 해결해나갔지만 결국 환경 변수를 설정해주는 부분에서 또 막혔다.
무엇보다 힘들었던 점은 어떤 에러가 발생했는지 확인하기가 까다로웠다는 점이다.
이는 사실, 내가 배포 과정에서의 에러를 확인하는 작업에 익숙하지 않아서일 수도 있다.
결국에 익숙하지 않은 것이 문제다.
그러니 계속해서 시도해보고, 막히면 에러가 어디에서 어떻게 출력되었는지, 이를 해결하려면 어떻게 해야 하는지 검색해보면서 알아가는 수 밖에 없는 것 같다.
여담이지만, 이 덕분에 그동안 인텔리제이나 크롬의 콘솔창에서 출력해주는 상세한 에러 문구들이 얼마나 고마운 존재들이었는지 실감하게 되었다.
그리고 잘 검색하는 능력도 상당히 중요하다고 생각한다.
이번에 Spring Security와 배포 자동화를 배울 때, 구글링을 엄청나게 해댔다.
하지만 내가 원하는 뾰족한 해결책을 찾아내기가 여간 어려운 게 아니었다.
영어로도 많이 검색해보고 하면서, 좀 더 잘 검색하는 방법을 터득해야만 하겠다.
5. 프로젝트 주제 선정
프로젝트에 대해 미리 어느 정도 생각해보고 대비할 필요성을 느낀다.
하지만 사실 프로젝트의 주제 선정부터가 참 난감하다.
국비지원 학원에서 나는 지나치게 '정보 나열식'인 프로젝트를 만들었는데, 수많은 Dummy Data를 집어 넣는 작업에 지쳐버렸던 기억이 남아있다.
그렇기 때문에 이번에는 그러한 '정보 나열식' 프로젝트는 좀 피하고 싶은 마음이다.
근데 그렇다고 딱히 뾰족한 수가 있는 건 또 아니라서 어떤 주제로 만들어 나가는 것이 좋을지 확신을 못하겠다.
추상적으로는 몇 가지 주제를 떠올려봤는데 구체적으로 그것을 어떻게 풀어나갈지도 막막하다.
또 한 편으로는 지망하는 개발자 취업 산업군에 맞춰서 프로젝트를 만들어 볼까 하는 생각도 든다.
하지만 나는 '커머스'나 '핀테크' 쪽에 관심이 있는데, 이에 맞춰서 프로젝트를 만든다고 하면 결제 관련 로직을 꼭 넣어야 될 것만 같고, 그러한 작업을 지금 우리 수준에서 해낼 수 있을지는 솔직히 잘 모르겠다.
사실 냉정하게 봤을 때 중요한 점은, 만들 수 있는 것을 잘 만드는 것이다.
그러므로 너무 거창하게 만드려는 생각보다는 우리가 해낼 수 있는 상한선을 명확히 하고, 그 안에서 섬세하게 작업을 진행하는 편이 좋아보인다.
'Essay > Code States' 카테고리의 다른 글
Code States 전체 후기 <이젠 정말 취업 뿐이야!> (6) | 2021.11.21 |
---|---|
Final Project <기본에 충실했으면 어땠을까> (0) | 2021.11.19 |
First Project <연습으로써 충분했지만 그래도 많이 아쉬운> (0) | 2021.10.15 |
Section 2 <개발하는 즐거움에 대해서> (2) | 2021.08.19 |
Section 1 <산뜻한 첫 출발> (0) | 2021.07.16 |