크래프톤 정글 1기 - 5개월 집중 개발 교육 후기
늦게나마 2022.10 ~ 2023.03 크래프톤 정글 1기 5개월에 관한 간략한 후기를 작성한다. 참고로 현재 크래프톤 정글 커리큘럼과 1기 커리큘럼은 조금 차이가 있다. (현재는 마지막 프로젝트 전에 알고리즘 문제풀이와 프레임워크 학습 주간이 추가 됨)
TIL
TIL은 개인의 성향대로 하면 된다. 매일을 회고하는 느낌의 일기 형식도 좋고, 깊이 있는 내용을 몇 일에 걸쳐 작성하는 것도 좋다고 생각한다. 나는 매일 TIL을 작성하겠다는 목표가 있어서 배운 것과 하루의 생각을 남겨 놓았다.
TIL의 목적은 알게된 내용을 누군가에게 잘 설명할 수 있기 위한 정리 과정이라고 생각한다. 나의 경우엔 하루도 빠짐없이 성실히 작성했어도 취업에 큰 도움은 되지 않았다.
미니 프로젝트
입소 후 3명이서 팀을 이루어 기획, 구현, 발표까지 진행하는 미니 프로젝트이다. 기술 스택은 입소 시험에서 사용한 Flask(Python)과 MongoDB, AWS를 사용하였고 가능하다면 Tailwind, jinja2를 활용할 것을 권고하셨다.
기능은 로그인과 게시판(CRUD)을 추가하였다. 만약 미니 프로젝트에서 github를 처음 쓴다면 설정과 사용법으로 인해 미니 프로젝트를 진행하는 동안 굉장히 애를 먹거나 많은 도움을 받아야 할 것으로 예상된다.
자료구조와 알고리즘
주차별로 주요 자료구조와 알고리즘을 학습한다. 정렬, 이분탐색, 분할정복, 스택, 큐, 그래프, DP, 그리디 등 필수 유형의 알고리즘 문제 약 120개를 4주차에 걸쳐 문제를 풀었다. 추가로 프로세스, 캐시 등 컴퓨터의 동작원리에 대해 학습하도록 “컴퓨터 시스템” 도서도 읽어야 한다.
30분 이상 문제에 대해 전혀 실마리가 잡히지 않는다면 모르는 문제라고 판단하고 답을 보고 빠르게 넘어가는 것이 중요하다. 이 4주는 기초 실력을 쌓는 과정이고, 계속 알고리즘 문제를 조금씩 풀어나가야한다.
RB트리 ,Malloc, Echo server
C언어를 사용해서 Balanced Tree, 메모리 할당, 소켓 프로그래밍에 대한 개념을 실제로 구현해본다. 깊이 있는 어려운 내용을 익숙하지 않은 프로그래밍 언어를 학습하며 주차별 프로젝트를 구현해야하기 때문에 시간이 굉장히 빠듯하다.
- RB-TREE
- RB-Tree란1
- 화이트보드에 RB TREE에 대해 적고 설명을 하며 개념을 학습해 나갔다.
- Malloc
- Malloc은 개념을 잡고 설명을 할 수 있는 것이 제일 중요하다.지금 다시 생각해보면 테스트 통과 점수가 0점이던 100점이던 하나도 중요하지 않았다. 결국 면접에서 메모리 구조, 할당 방법, 뭐가 어려웠는지 등을 물어보기 때문에 이를 대비해야한다.
- Echo & Tiny Server
- Proxy Server의 역할과 소켓프로그래밍을 중점적으로 학습한다. 추가로 HTTP 통신에 관해 집중적으로 학습하면 면접에 도움이 된다.
pintOS
pintOS 프로젝트에서 얻어 가야하는 경험은 끈기이다. 조금만 검색해보면 수 많은 정글러들이 pintOS 관련 글을 잘 정리하여 포스팅 해놓았기 때문에 어찌저찌 프로젝트를 진행해나갈 순 있다. 하지만 가능한 블로그 포스팅을 참고하지 않고 팀원들과 머리를 맞대어 pintOS 기능 구현에 며칠씩 도전해보는 경험도 좋다고 생각한다.
우리 팀은 Project3 주차에 Virtual Memory는 거의 진행을 하지 못하였고 Proejct2 의 System Call에서 exit 와 wait에서 자식 프로세스가 exit할 때 부모 프로세스의 sema_down에서 무한 loop가 발생하는 문제를 개선에 집중하였다. pintOS 주차가 끝나고 Virtual Memory는 별도로 학습을 했어야 했지만, 고생한 덕분에 System Call에 대해서는 자신있고 깊이 있게 대답할 수 있게 되었다.
팀 프로젝트
팀 프로젝트에서 가장 중요한 것은 팀 선택이라고 생각한다. 나의 경우엔 팀을 고를 때 팀 리더가 제일 중요한 기준이였다. 팀 리더가 카리스마가 있고, 방향을 제시할 줄 알고, 의견을 수용할 줄 아는 사람이여야 그나마 프로젝트가 순조롭게 진행도지 않을까?라는 생각이 있었다.
그 다음은 기술 스택이였다. 사실 자바 언어를 쓰고 싶었지만, 다른 언어를 사용했어도 괜찮았다. 새로운 언어를 써보는 것도 경험이고, 정글 프로젝트만으로 자바에 대한 개인 개발 역량을 보여주기 어렵다고 판단했기 때문에 무조건 자바를 쓰자 고집을 부리진 않았다. 자바는 수료 후 준비하면 된다는 생각이 있었고, 결과적으로 React를 활용해서 프로젝트를 했던 것이 지금 Vue로 클라이언트를 구현할 때 도움이 되고 있다.
다음은 팀 케미가 중요하다고 생각했다. 물론 팀 케미가 잘 맞는 사람들끼리 하는 것이 제일 좋지만, 잘 맞지 않는 사람들과 팀이 되더라도 상관은 없었다. 학점이 걸려있는 것도 아니고, 안 볼 수도 없는 회사 동료도 아니니까 트러블이 있더라도 좋은 경험으로 남길 수 있다고 생각했다.
이런 기준을 가지고 팀을 선택하였고 다행히 케미가 맡는 팀원들을 만나 꽤 재미있는 Web-RTC 퍼즐 게임 프로젝트를 만들었다. 기술은 모르면 배우고 익히면 되지만 사람 관계는 그러는게 쉽지가 않다. 정글에서 가장 어려운 프로젝트는 나만무 팀 선택하기가 아닐까 싶다.