1. 본격적으로 마주하게 된 Algorithm & Data Structure
Section 2의 백미는 역시 Algorithm과 자료 구조였다.
이 파트는 Section 1 때 코플릿을 조금 풀었던 것이 그야말로 '준비운동에 가까웠구나' 싶을 정도로 어려운 파트였다.
첫 주에 재귀 및 Graph & Tree 구조를 배웠는데, 그 주에 지금까지의 부트 캠프 기간을 통틀어서 가장 크게 멘탈이 흔들리는 것을 경험할 수 있었다.
나 자신이 완전히 산산조각 나는 느낌이랄까.
솔직히 이 때, 내 학습 능력에 대한 믿음과 앞으로도 잘 해낼 수 있을 거라는 자신감이 많이 떨어졌다.
하지만 마냥 이대로 덮어놓고 볼 수는 없었다.
스스로의 문제점을 찾던 중, 일단 나는 프로그래밍적 사고 방식이 부족하다는 점을 느꼈다.
문제를 풀 때, 무작정 for문을 2중, 3중으로 둘러놓고 그 안에서 if문과 else if문을 무턱대고 적어 넣게 되는 나 자신을 발견하고는, '아 이건 진짜 아니다' 싶었다.
그렇게 스스로의 부족함을 깨닫고, 프로그래밍 관련 문제 풀이에 익숙해질 수 있는 방법들을 찾아나섰다.
어느 정도 검색을 해보고, 문제 유형들을 살펴보다 보니 문득 이런 생각이 들었다.
'어쩌면 문제 유형에 딱 맞는 적합한 풀이 방법들만 익혀놔도 충분하지 않을까?'
내로라 하는 프로그래밍 문제 풀이 사이트들을 뒤져보면 그야말로 문제들의 산이 쌓여 있는 것을 확인할 수 있다.
이렇게 많은 문제들을 맨땅에 헤딩하면서 풀어나가는 것은 너무 비효율적이라고 생각했다.
다만, 문제 풀이 사이트의 문제들에서 한가지 확인할 수 있었던 것은 '문제 유형' 을 표기해 놓는 경우가 있다는 점이었다.
여기에서 나는 문제 유형 별로 적합한 풀이 방법들을 따로 공부해보자는 아이디어를 얻었다.
그래서 나는 내가 스스로 명명한 '급할수록 돌아가라' 라는 전법을 구사하기로 마음 먹었다.
하지만 '적합한 풀이 방법들에 대한 source를 어디에서 얻을 것인가?' 에 대한 고민으로 한번 더 막혔다.
처음에는 책이나 인터넷 강의를 활용해볼까 했는데 이 두가지 매체에는 치명적인 단점이 있었다.
바로 '돈'과 '시간'이다.
무직자의 입장에서는 꽤나 큰 돈을 들여서 책이나 인터넷 강의를 구매해야 하며, 구매한 컨텐츠를 소비하는 데에 또 막중한 시간을 들여야 한다.
시간을 많이 들이다 보면 React나 Spring 등에 대한 공부가 상당히 소홀해질 수 있기 때문에 시간을 많이 잡아먹는 것도 명백한 단점이라고 생각했다.
그래서 생각해 낸 차선책이 바로 유튜브이다.
Algorithm & Data Structure, 기술 면접, 프로그래밍 문제 풀이 등을 다루는 채널을 찾다보니 2개의 상당히 유용한 채널을 찾아낼 수 있었다.
엔지니어대한민국 님의 채널과, 승지니어 님의 채널이 바로 그것이다.
엔지니어대한민국 님의 채널에서는 이론을 공부하기에 아주 훌륭했고, 승지니어 님의 채널에서는 문제 풀이 방법에 대해서 알아가기에 탁월한 선택이었다.
(참고로 두 분 다 JavaScript가 아닌 Java를 주로 다룬다.)
그렇게 요즘에도 두 분의 영상을 꾸준히 챙겨 보면서 '문제를 무작정 풀어나가기' 보다는 '문제에 접근하는 방법' 을 배워보자는 이른바 '급할수록 돌아가라' 라는 전법을 실천하고 있다.
그리고 한가지 첨언하고 싶은 것이, 나는 책과 인터넷 강의를 활용하는 방법에 대해서 부정적으로 생각하지는 않는다는 점이다.
오히려 부트 캠프가 끝나면, 책이나 인터넷 강의를 십분 활용해 볼 예정이다.
다만 내가 지금 이 시점에서 유튜브를 선택한 이유는 무엇보다도 '효율성' 을 고려했기 때문이다.
배울 것이 많은 시기이기 때문에 부트 캠프 기간 동안에는 Algorithm & Data Structure에 대해서 이렇게 공부하기로 전략을 세운 것이다.
2. Spring과의 재회
드디어 Spring에 대해 학습하는 스케쥴이 다가오고 있는 것을 확인했을 때, 그것이 왜 그렇게 반가웠는지 모르겠다.
아리송하고 헷갈리는 Algorithm이나 React가 아닌, 내가 미리 학습해놓아서 뚜렷하게 알고 있는 파트여서 그랬을까.
확실히 Spring에 대한 스케쥴이 잡혀 있었던 2주 동안, 상당히 수월하게 학습을 진행할 수 있었다.
그래서 짜투리 시간에 Algorithm 관련해서 조금 더 공부해볼 수 있는 시간을 확보할 수 있었다.
그리고 부트 캠프에 들어오기 전에 묵혀두었던 토이 프로젝트를 다시 꺼내보게 되었다.
Spring에 대해서 다시 공부하게 된 만큼, 토이 프로젝트를 마음대로 조립해보고 망가뜨려보면서 추가적으로 더 공부해나가도 괜찮겠다는 생각이 들었다.
하지만 이렇게 손쉽게 Spring에 대해서 학습하고 있다고 해서 방심해서는 안된다.
Java 심화반은 Spring으로 프로젝트를 구축해나갈 것이기 때문에 구조 설계에 대해서 더 깊이 파고들어야만 한다.
아는 내용이라고 해서 무심코 넘겨버리지 말고 꼼꼼히 학습하는 태도가 더 필요할 것 같다.
그리고 사실 요즘 내 주요 관심사는 '어떻게 Spring Framework에서 React로 렌더링할 수 있을까?' 이다.
수아뎁 님의 블로그 글을 참고하면서 직접 만들어보니 조금은 이해가 되었지만 아직은 뭔가 아리송한 느낌이다.
시간이 남는다면 간단한 로직을 넣어서 좀 더 만들어봐야겠다.
3. 시간이 빠르게 지나간다.
Code States의 Section 2를 거쳐가면서, 가장 주요하게 느꼈던 발견점이다.
Section 1 때는 적응하느라 시간이 빨리 갔다면 Section 2는 어려워서 공부에 집중하느라, 주어진 과제를 해결하느라 시간이 빨리 가는 느낌이 든다.
이럴수록 재고해봐야 할 점은 '과연 시간을 제대로 활용하고 있는가?' 이다.
Code States는 '자기주도적 학습'을 모티브로 한다.
하지만 그저 매일매일 배우라니까 배우고 과제 풀어보라니까 또 과제 제출에만 급급해지고 하다보니, Code States에서 제공하는 '자기주도적 학습'의 범주, 그 안에서 수동적으로 학습하고 있다는 생각을 하게 되었다.
이제 Code States에 몸 담은지 2개월 정도가 흘렀는데 그새 일련의 학습 패턴들에 익숙해지고 매너리즘에 빠져버린 것이다.
이는 지극히 경계해야 할 상황이다.
따라서 더욱 더 자기주도적으로 학습하지 않으면 안되겠다는 생각이 들었다.
어떤 챕터를 학습하더라도 해당 챕터를 도대체 왜 학습해야 하는 것인지, 그걸 배워서 어떻게 활용해 볼 수 있을지, 그 근본적인 의미에 대해서 더 깊게 생각해보는 습관을 가져야만 하겠다.
무엇보다 중요한 것은 내가 그 주제에 대해서 관심을 갖고, 조금이라도 더 알아보려는 태도이다.
4. 개발은 즐거워야 한다.
위 문제에 대해서 고민해보고 내린 결론이다.
Code States에 들어오기 전에, 인프런이라는 사이트에서 비전공자를 위한 개발자 취업 올인원 가이드 라는 강의를 들었던 적이 있다.
이 강의에는 '취업 및 이직을 위해서 어떻게 공부하고 준비해야 하는가?'에 대한 내용들이 담겨 있었다.
강의를 듣던 중 이런 생각들이 꼬리에 꼬리를 물었던 적이 있다.
'아니 어떻게 블로그 관리도 하고, 토이 프로젝트도 하고, 개발 관련 기술 서적도 읽고, 인터넷 강의도 듣고, TIL도 적고, 그룹 스터디도 하고, 코딩 테스트도 준비하고, 포트폴리오도 준비하고 이걸 다 하지?'
'개발자는 여가 시간이란 게 없나?'
'개발자는 사람인가?'
이러한 질문들에 대한 답은 간단하다.
바로, 그만큼 재미있으면 장땡이라는 것이다.
이 문제에 대해서 해결할 수 있다면, 위쪽에서 살펴보았던 '시간이 빠르게 지나가는 와중에 나는 제대로 학습하고 있는가?'에 대한 고민을 덜어낼 수 있다.
본인이 재미있고, 작동 원리에 대해서 궁금하다면 스스로가 알아서 찾아볼 것이며, 충분히 학습할 것이기 때문이다.
그렇기 때문에 나도 개발의 본연의 재미를 찾고자 한다.
토이 프로젝트를 만들더라도 구조가 완성되어 가는 모습을 보며 소소한 즐거움을 찾을 것이며, 코딩 테스트 관련 문제를 풀 때도 못 풀 것 같았던 문제를 해결해낸 데에 대한 만족감을 충분히 만끽할 것이다.
Sprint 과제를 진행하더라도 테스트를 해결할 때는 다소 급하게 할 수는 있어도 이후에 작동 과정을 분석해보면서 즐거움을 찾고자 한다.
기왕 개발자가 되기로 마음 먹은 거, 오래토록 일해보고 싶다.
'지속 가능성'을 위해서는 역시 재미를 느끼면서 공부하는게 최고의 방법인 것 같다.
그리고 추가적으로, 이전에 읽었던 『프로그래머의 길, 멘토에게 묻다』 에서 감명 깊게 읽었던 문구를 한번 더 인용해보고 싶다.
5. 기수 이동에 대한 생각 vs Java반에 대한 집착
32기 Java 심화반은 총원 16명으로, 다른 기수에 비해 인원 수가 상당히 적다.
그렇기에 '티키타카'가 잘 발생하지 않는다.
여기서 '티키타카'란, 다른 기수에는 인원이 100명이 넘어가다 보니 분명 그중에는 조금이라도 튀어보이는 인원이 있을 것이고, 그 튀는 사람들이 튀는 행동(이를테면 엉뚱한 질문이라던가 사소한 농담이라던가)을 하게 되면 또 다른 튀는 사람이 맞받아쳐주고, 이러한 일련의 과정 속에서 자연스럽게 기수 전체의 분위기가 즐거워지지 않을까, 하는 추측에서 비롯된, 내멋대로 만들어본 용어이다.
그렇다보니 문득, 몰입반의 분위기도 한번 경험해보고 싶다는 생각도 들었고, 더 많은 사람들을 만나보고 싶다는 생각도 들었다.
Section 1 회고 에서도 밝혔듯이, 내가 국비지원 학원을 수료했음에도 또다시 다른 교육코스를 선택한 이유 중에 하나가 '함께 공부했던 동기들이 남아있지 않아서'였다.
이번에는 부디 수료 이후에도 어떤 프레임워크에 대한 궁금증이 되었든, 취업 및 이직에 대한 정보가 되었든, 유용한 것들을 서로 공유할 수 있는 동기들을 만들어두고 싶다.
그리고 뭔가 프로젝트 팀을 짜기 위한 정치질(?)도 은근히 경험해보고 싶다.
32기 안에서는 인원이 적다보니 프로젝트 팀을 미리 짜려는 행위가 적잖이 이기적으로 보일 수도 있겠다는 생각도 들고, 뭔가 32기 전체가 균형 있게 팀이 짜여 있는 것을 더 추구해야 될 것만 같아서 좀 부담스럽다.
하지만 그럼에도 불구하고 내 안에 Java반에 남고 싶어하는 열망도 만만치 않다.
어쨌든 한국은 Java 공화국이라는 말이 나올 정도로 Java를 많이 사용하고 있으며, 나 또한 국비지원 학원과 그 이후 개인 공부 기간 동안 Java를 더 길게 공부해왔다보니 계속 Java를 더 공부하고 싶다는 생각이 든다.
나중에 풀스택 개발자가 될지 어떨지는 차치해두고서, 일단 첫 커리어는 Java 백엔드 개발자로 시작하고 싶다는 열망이 크다.
그리고 사실 JS반이나 Java반이나 은근히 비슷할 것 같기도 하다.
오히려 인원수가 갑자기 많아지면 적응을 못하고 혼란을 겪게 될 경우의 수도 적지 않다.
그래서 일단은 '현상유지' 정책을 가져야겠다.
어쨌든 HA를 통해서도 분기가 나뉠 수 있는 것이니 너무 심각하게 고민할 필요까지는 없는 것 같다.
우선적으로 생각해봐야 할 것은 아무래도 취업이다.
나는 Java 백엔드 개발자로 취업하고 싶다!
6. 다음 Section에서는 어떻게 할 것인가?
이런저런 글들을 작성했지만 사실 또 새로운 것을 받아들이고 낯선 작업 과정을 수행하다보면(Section 3는 서버 구축 및 DB 활용 등 꽤나 낯선 작업이 많을 것으로 예상된다) 이런 기조들을 잊어버리게 될 가능성도 적지 않다.
개발의 본연의 즐거움을 추구하는 태도는 계속 마음 속에 유지하면서, 또한 반드시 수행해야 할 약속들을 정리해놔도 되겠다는 생각이 든다.
- 주말에는 적어도 한 문제는 유튜브를 통해 공부하고 적어도 한 문제는 직접 풀어보는 시간을 갖자.
- 언제든 여유 시간이 남으면 꼭 토이 프로젝트를 조립해보자. (다만 너무 완성하는 데에 집착하지는 말자)
- 일주일에 하나 정도 씩, 프로젝트에 사용해볼 만한 아이디어를 정리해보자.
- 평일 저녁 2시간 철저한 복습 및 간단한 예습 시간을 반드시 준수하자.
'Essay > Code States' 카테고리의 다른 글
Code States 전체 후기 <이젠 정말 취업 뿐이야!> (6) | 2021.11.21 |
---|---|
Final Project <기본에 충실했으면 어땠을까> (0) | 2021.11.19 |
First Project <연습으로써 충분했지만 그래도 많이 아쉬운> (0) | 2021.10.15 |
Section 3 <어느새 100일> (0) | 2021.09.29 |
Section 1 <산뜻한 첫 출발> (0) | 2021.07.16 |