크래프톤 정글이란
크래프톤에서 운영하는 교육 과정이다. 전 기간 동안 용인의 크래프톤 정글 캠퍼스에서 합숙하며, 자기주도적 몰입학습과 팀 기반 협업을 기본 철학으로 삼는다.
왜 지원했나
컴퓨터 학부를 졸업했지만 제대로 된 OS 프로젝트 하나 해보지 못하고 나온 것이 계속 마음에 걸렸다. 그리고 AI/AX 시대에도 변하지 않고 남을 근본 지식에 대한 욕구가 있었다.
이 두 가지를 채워줄 수 있는 곳이라고 판단해 지원했다.
선발 과정
학습 자료를 기반으로 입학 시험을 치르고, 그 결과를 바탕으로 기술 면접과 인성 면접을 거쳐 선발된다.
입학 시험 난이도
게임 랩이나 게임 테크 랩의 난이도는 알지 못한다. SW-AI 랩 기준으로만 적는다.
웹 프로젝트를 경험해본 입장에서는 부담스러운 양이 절대 아니다. 순수 개발 분량만 보면 하루면 충분히 구현할 수 있는 수준이고, 이후에는 각자 욕심에 따라 리팩토링이나 주석 작업에 시간을 쓰면 된다.
다만 비개발 직군에서 지원하거나 웹 프로젝트 경험이 없다면, 혹은 파이썬이나 JS 경험이 적다면 시간 투자가 조금 필요할 것 같다.
개인 사이드 프로젝트를 병행하면서 시험과 면접을 준비했는데도 시간이 부족하다는 생각은 들지 않았다.
바이브 코딩
입학 시험에서 특별히 막고 있지 않다. 실제로 면접에서 프론트 코드는 전부 바이브 코딩으로 생성했다고 말했다.
다만 자기가 뭘 하고 있는지는 알고 썼으면 한다. HTML 코드의 역할을 전혀 모르는 상태, 혹은 파이썬의 서드파티와 내부 라이브러리 import 구조나 코드 흐름을 전혀 모르는 상태에서 코드만 생성했다면 잘못 이해한 수준이 아니라 아예 모르는 수준이다. 이건 지양해야 한다고 생각한다.
주석
나는 많이 적은 편인 것 같다. 각 함수의 의미와 그렇게 구분한 이유, 특정 코드가 갖는 책임, 그리고 프론트가 아니라 백엔드에서 처리해야 하는 이유 등을 다양하게 적었다.
리팩토링에 좀 미쳐 있는 편이라 그런 것 같기도 하다.
면접
면접은 한 번 진행되고 크게 두 가지를 본다. 이 사람이 살아온 방식(합숙 생활을 잘할 사람인가)과 기술적인 부분(배포된 자료를 공부했는가, 자기가 짠 코드를 최소한 설명할 수 있는가)이다.
인성 면접
예의를 지키는 것과 긴장하는 것은 다르다고 생각한다. 나도 준비한 것을 말하지 못하면 어쩌나 하는 긴장은 있었지만, 분위기가 나를 압박한다는 느낌은 전혀 없었다. 코치님으로 보이는 분들이 들어오셨고, 예의는 지키되 언젠가 친해질 수 있는 분들이라 생각해 편하게 대답했다.
지원 동기, 단체 생활 여부, 알바나 재직 여부, 취미 등을 물으셨다. 기억에 남는 건 두 가지다.
단체 생활. 재수 기숙학원에서 1년간 생활한 경험을 이야기했다. 불화 경험이 있었는지 묻는 질문에는 단순히 항상 잘 지냈다고 답하지 않았다. 사람의 긍정적인 장점 위주로 보려 노력하고, 그 사람이 나에게 긍정적 영향을 주는 사람이라고 스스로를 세뇌해서 관계를 유지하려 한다고 답했다.
취미. 인성 관련 질문 중 가장 마지막, 기술 면접 직전에 나온 걸 보면 긴장을 풀어주시려는 질문이 아니었나 싶다. 그래서 나도 분위기를 풀고 싶었다. 풋살을 좋아했는데 나이 먹고 무릎이 아파서 못 한다는 식으로 답했다. 적당한 예의 속에서 적당히 기세 있게 대답했던 것 같다.
기술 면접
어디까지 적어도 되는지 몰라 추상적으로만 적는다. 손코딩(단체 질문)과 본인이 작성한 코드 기반 질문, 두 갈래였다.
여기서 느낀 것은 우리가 증명해야 하는 게 역량이 아니라 의지와 자세라는 점이다.
나는 내가 짠 코드에서 사용한 함수나 라이브러리에 대한 질문 두 개와 학습 자료 관련 질문 하나를 받았다. 학습 자료 질문은 잘 답했다. 코드 질문 중 하나는 기술 자체를 물으신 것 같은데 쓰임에 대해 답해버려서 제대로 답하지 못했다고 생각했고, 면접 이후에 따로 공부했다. 나머지 하나는 아주 기초적인 JS 문법이었는데, 특정 언어 문법이라 모르겠다고 솔직히 말씀드리고 코드 흐름상 이런 사용이 아닐까 생각한다고만 답했다.
이래도 된다는 뜻은 아니고, 이래도 합격은 했다는 뜻으로 적는다.
손 코딩
프로그래머스 Lv0, 백준 브론즈 수준이다. 당연히 풀 수 있어야 한다고 생각하는 난이도다. 제한 시간이 있어 긴장할 수는 있지만, 코딩을 해본 사람이라면 30초 안에 구현 가능한 수준이다.
AI 활용에 대해 답한 것
따로 물어보셨다기보다는 입학 시험 코드를 어떻게 구현했냐는 질문에 답한 내용이다.
백엔드는 경험이 있어서 AI를 거의 쓰지 않고 직접 구현했고, 프론트는 대부분 AI로 구현했다고 말했다. 언어 자체를 학습하는 것은 큰 의미가 없다고 판단해 AI를 통해 코드가 도는 구조와 흐름만 파악했다고 말씀드렸다.
이렇게 답할 수 있었던 건, head 태그에 라이브러리와 프레임워크 import 선언이 들어가고 body 전체에 CSS와 함수 사용 코드가, 가장 하위에 script 태그로 JS 구현이 들어간다는 것을 알고 있었기 때문이다. 전체 코드를 리팩토링하라고 해도 할 자신이 있었다. 프론트엔드를 직접 해본 적은 없지만 프론트 하는 친구와 React의 컴포넌트 개념이나 코드 재사용 기준에 대해 이야기해본 적이 있어서, 어떤 기준으로 판단해야 하는지는 말할 수 있었다.
바꿔 말하면 이렇게 답할 거라면 자기 한계와 가능한 영역을 명확히 말할 수 있어야 한다고 생각한다.
FastAPI가 내 주력 백엔드 프레임워크지만, 이걸 주력으로 잡는 개발자는 거의 없다. 대부분 Spring, PHP, NestJS를 쓰거나 파이썬이라도 Django를 쓸 것이다. 그런데 FastAPI로 바닥부터 리팩토링하고 코드를 계속 개선하면서 느낀 건, 저 프레임워크들이 MVC 구조 안에서는 결국 비슷한 형태로 코딩된다는 점이다. 확장 모듈이나 호환 라이브러리는 모두 다르지만 모듈, DI, service, repository 구조처럼 공유하는 가치가 분명히 있다.
그래서 언어보다는 그 자체가 갖는 가치에 집중해야 한다고 생각하고, 조금 당당하게 저렇게 말할 수 있었던 것 같다. 물론 이걸 권하지는 않는다. 사람마다 성향과 경험이 다르니 확률이 높은 쪽, 즉 모든 코드를 직접 학습하는 방향을 추천한다.
결과
합격이다.
앞으로
열심히 하고, 사람들과 많은 대화를 나눠보고 싶다. 팀장 자리도 재밌을 것 같아서 기회가 있다면 맡아보고 싶다. 등록도 진행 중이라 입소해서 열심히 해야겠다는 생각이 든다.
목표
최근에는 코테나 실시간 코딩, CS보다 AI 활용을 묻는 경우가 많아진 것 같다. 하지만 알고리즘과 자료구조에 확실히 시간을 쓸 수 있는 기간이니, 코테는 프로그래머스 Lv3(최소)에서 Lv4(최대)를 기준으로 노력해보려 한다.
면접에서 준비했지만 말하지 못한 CS적인 꿈이 하나 있다. 백엔드 주니어 개발자 기준으로, 엔드포인트 호출 상황에서 내부 동작부터 커널 동작까지, 혹은 그보다 더 로우한 레벨까지 완전히 설명할 수 있는 개발자. 그리고 새로운 프레임워크나 언어 버전의 개선 사항이 화제가 될 때 그것이 영향을 주는 범위를 직관적으로 말할 수 있는 개발자다.
정글에는 PintOS와 LLM을 프레임워크나 라이브러리 의존 없이 직접 구현하는 주차가 있다. 이때 많은 것을 학습해서 주니어 기간의 목표를 이룰 단초로 삼고 싶다.
정글과 무관하게 원래 만들고 싶던 사이드 프로젝트도 하나 있다. 피그마처럼 엣지를 연결하거나 블록 코딩하는 느낌으로 AI/AX 서비스나 모듈 자체의 로직을 연결할 수 있는 서비스다. 지난 기수의 '나만의 무기 만들기'에 비슷한 것이 있는 걸 보고, 나와 같은 고민이나 열망을 가진 사람들이 있구나 싶어 조금 만족스러웠다. 해당 코드가 공개되어 있으니 이번에 더 열심히 해서 더 강렬한 무언가를 만들어볼 수 있지 않을까 한다.