42경산 2기 2차 라피신 후기
들어가기에 앞서
- 라피신 과정이 종료된 후 작성하는 글이기에, 정확하지 않은 내용이 있을 수 있습니다.
- 저는 컴퓨터공학을 전공 중이고 라피신 이전 오랜 기간 프로그래밍을 해왔기에, 처음 접해보시는 피시너와 관점 차이가 있을 수 있습니다.
- 비밀유지계약을 위배하지 않는 선에서 교육과정에 관해 설명합니다. 따라서 구체적인 과정의 내용은 설명하지 않습니다.
- “42”라는 교육기관에 대해 구체적으로 설명하지 않습니다.
라 피신을 도전하게 된 계기
학교에서 진행한 취업박람회 행사에서 42경산 부스를 발견하였습니다. 전 이미 “42” 라는 교육기관을 42서울을 통해 알고 있었고, 42경산 캠퍼스가 생겼다는 소식에 바로 신청하겠다고 마음먹었습니다. 다음 날 바로 온라인 테스트를 거치고 라피신을 기다리게 되었습니다.
이제 본격적으로 라 피신 후기를 작성하기에 앞서 글에서 사용될 용어에 대한 정리부터 하겠습니다.
라 피신 (La Piscine)
라 피신(이하 라피신)은 42경산의 본교육을 이수하기 전 거쳐 가야 하는 선발 과정입니다. 피신은 프랑스어로 수영장이란 뜻으로, 수영장에 빠진 극한의 상황에서 살아남는 법을 익히라는 의미를 가진 것 같습니다. 라피신을 진행하는 동안, 교육생은 극한의 환경 속에서 동료와 함께 문제를 해결해나가는 것을 익히고 교재, 교수, 교육비가 없는 특이한 42 교육과정을 적응하는 기간을 가집니다.
- 피시너: 라피신 과정을 진행하고 있는 교육생들을 말합니다.
- AMA (Ask Me Anything): 일주일에 한 번 본과정 교육생과 Bocal(운영 스태프)분들께서 피시너들과 Q&A를 가지는 정기적인 행사입니다.
- Rush: 일반 과제와 다르게 짧은 기간을 갖고 무작위의 피시너와 팀을 맺어 수행하는 과제입니다.
- Intra: 42 교육생들이 과제 등 여러 정보들을 볼 수 있는 웹사이트입니다.
1주차
들뜨는 마음을 안고 시작하는 한 주였습니다. OT에서 라피신에 관한 개략적인 설명을 듣고 다음 날부터 바로 교육이 시작되었습니다. 첫날, 클러스터에 들어서니 정말 듣던 것처럼 컴퓨터와 동료 피시너들만 있는 상황이었습니다. 무엇부터 해야할 지 모르는 상황이라, 그냥 intra에 로그인하고 과제를 수행할 방법을 찾아 나섰습니다. 이 때 이미 과제를 풀고 계시던 주변 피시너분의 도움을 많이 받았습니다.
그렇게 우여곡절 끝에 과제를 시작하게 되었습니다. 첫 과제는 Shell과 관련된 과제였습니다. 기존에 Shell 경험이 있던 저는 자신만만하게 과제를 시작했지만, Shell 과제를 혼자의 힘으로만 푸는 것은 거의 불가능하다는 것을 깨닫는 데에는 많은 시간이 걸리지 않았습니다. 이 때 부터 열심히 주변 분들의 도움을 구했던 것 같습니다. 저는 낯가림이 조금 있어 1주차엔 도움을 구하는 것을 망설였지만, 라피신을 준비하고 계신 독자께선 꼭 1주차부터 주변에 계신 피시너분들과 얘기하고 스몰토크하는 시간을 가지시는 걸 권해드립니다. 일찍 시작할수록 좋아요 :)
1주차는 Shell 과제 두 개를 해결하느라 정신없이 시간이 흘렀습니다. 처음에는 Shell이 정말 싫었지만, 지나고 보니 모두 쓸모가 있고 유용하다는 것을 깨달았습니다.
2주차
2주차에는 라피신에 꽤 적응하고 클러스터 생활도 익숙해진 상태로 한 주를 시작했습니다. 1주차에 신청한 Rush00 팀이 구성되어 팀원분들과 만나게 되었습니다. 이때 만난 jujang님과 jukim3님은 라피신을 완주하는 데에 큰 도움을 주셨습니다. (이 자리를 빌려 감사하다는 말씀드립니다.) Rush00 명세를 살펴보니 예상보다 쉬운 난이도였습니다. 코드를 함께 짜기엔 분량이 많지 않아 팀원분들과 협의 후, 각자 과제를 구현한 뒤 주기적으로 더 나은 코드를 병합하기로 했습니다. 그 과정에서 팀원끼리 구현에 관해 많은 대화가 있었고, 그 덕에 순조롭게 Rush00을 완성할 수 있었습니다. 아쉽게도 제출 과정에서 Norm 이슈가 있어 최종 점수는 0점을 받게 되었지만, 다들 “그럴 수 있지”라며 서로를 격려하며 기분 좋게 마무리 할 수 있었습니다. 라피신에 참여하신다면 Rush00은 꼭 신청하시길 권해드립니다. 라피신 과정 적응에 큰 도움이 됩니다.
Rush를 구현한 뒤엔 C 과제를 열심히 풀기 시작했습니다. 42만의 특징 중 하나인 동료평가도 이 때 많이 진행했던 것 같습니다. 다음 과제로 넘어가기 위해선 두 번의 동료평가를 통해 평가자(피시너)에게 본인의 과제를 설명하고 이해시킨 후 평가를 받아야만 합니다. 평가를 받으려면 평가 포인트가 필요하고, 이 포인트는 평가를 해야만 얻을 수 있습니다. 따라서 포인트를 벌기 위해 열심히 평가하러 다녀야 합니다. 저는 라피신 과정에서 과제해결 만큼 많은 시간을 평가에 할애했습니다. 돌아보면 이 과정에서 배우는 것이 정말 많았다고 생각합니다. 전 남들에게 설명하는 것을 잘 못하는 편이었지만 라피신 과정을 거치면서 머리에만 있던 개념을 꺼내어 설명하는 실력이 늘었습니다.
2주차 초반까지는 평가 진행 방법이 정립되지 않아 피시너들과 많은 토론이 있었습니다. 처음에는 혼란스러웠지만, AMA에서 얻은 조언과 토론을 바탕으로 동료평가 팁을 정리해 보겠습니다.
우선, 동료평가는 시간이 되면 자주 진행하는 것이 좋습니다. 리트라이를 하다보면 정말 많은 포인트를 소모하게 됩니다. 필요할 때마다 평가를 진행하기엔 답답한 점이 많으니, 여유로울 때 평가를 많이 진행하는 걸 권합니다. 두 번째로, 꼼꼼하고 정확하게 평가를 진행하되 날카롭지 않게 진행하여야 합니다. 가끔 그냥 과제를 쭉 훑어보고 OK를 주는 경우가 있는데, 이러한 방식의 평가는 돌아보면 평가자, 피평가자 모두에게 남는 것이 없습니다. 따라서 모든 문제를 꼼꼼하게 확인하고 서로 과제에 대해 많은 토론을 진행하는 것이 좋습니다. 틀린 부분에 대해선 확실히 피드백하고 배워가는 점이 있다면 그 부분도 피평가자와 공유하는 것이 서로에게 좋은 평가가 됩니다. 단, 평가를 진행하거나 피드백을 작성하는 과정에서 너무 날이 선 채로 대화하는 것은 피하시는 것이 좋습니다.
2주차는 동료의 중요성에 대해 많이 깨닫는 한 주가 되었던 것 같습니다.
3주차
개인 과제의 진도를 어느 정도 나간 상태라 비교적 여유로운 한주였습니다. 그래서 이 땐 많은 피시너 분들과 밥도 먹고 얘기도 나누며 시간을 보냈던 것 같습니다. 이를 계기로 피시너분들과 더 친해지고 서로에게 힘이 되어주는 관계가 되었습니다. 이 때문인지 피시너분들과 곧 헤어진다는 게 정말 아쉬웠던 것 같습니다.
3주차에는 Rush01을 진행했는데 Rush00 보다 난이도가 높아 이때 처음으로 밤을 새웠습니다. 밤을 새우며 Rush01을 열심히 마무리하고 팀원분들과 코드 이해를 마쳤을 때 정말 뿌듯했던 것 같습니다. 진행 중이던 C 과제들도 우여곡절이 있었지만, 피시너님들과 함께 해결하여 원하는 만큼의 진도를 달성할 수 있었습니다. 여러모로 뿌듯하고 보람찬 한 주가 되었습니다.
4주차
4주차는 저를 포함한 많은 피시너들이 목표 진도를 맞추기 위해 밤낮없이 열심히 공부한 주였습니다. 동료 피시너들과 많은 도움을 주고받으며 따뜻한 나날을 보냈습니다. Final Exam 전 날 저녁, 저는 목표한 진도를 맞추고, 피시너분들과 “본과정에서 꼭 만나요”라는 인사를 나누고 나왔습니다. 정말 시원섭섭한 기분이 들었습니다. 마지막일지도 모르는 클러스터의 밤하늘 구경을 마치고 집으로 돌아왔습니다
Final Exam은 기존 시험과 다르게 8시간 시험을 치릅니다. AMA에서 본과정 교육생님들의 조언대로 마음을 편하게 먹고 시험에 임했습니다. 문제는 다른 시험에 비해 난이도가 있었고, 구현하는 데에 많은 시간이 소요되는 문제도 있었지만, 각자 노력한만큼의 점수를 얻을 수 있는 시험이었습니다. 저도 만족스럽게 시험을 마쳤습니다. 모든 분께 인사를 드리고 싶었지만, 일정이 있어 일부 피시너님들께만 인사를 드릴 수 밖에 없었습니다. 아쉬운 마음을 뒤로하고 출입 카드를 반납하고 나서는 순간 길다면 길고, 짧다면 짧은 4주간의 라피신이 마무리되었습니다.
기술적인 부분에서의 후기
라피신 과정은 짧은 기간임에도 C에 대해 포괄적이지만 너무 얕지는 않게 다룹니다. 과제와 제시된 문제의 순서는 우아하게 구성되어 있어, 프로그래밍을 처음 접하는 분도 작은 개념들을 조합해나가는 과정을 자연스럽게 배울 수 있습니다. 이러한 프로그래밍 스킬을 습득하는 것은 꽤 오랜 시간이 필요한데, 42에서는 과제를 통해 배워나갈 수 있다는 것은 매우 인상적입니다.
또, 많은 과제가 C를 사용하면서 흔히 사용하는 표준 함수(특히 문자열 처리 함수)를 직접 구현할 것을 요구합니다. 꼭 이런 구현 문제가 아니더라도, 대부분의 과제에서 C 표준 함수(e.g. printf
)의 사용을 금지하고 있기 때문에, 직접 구현해야합니다. 이러한 과제들을 통해 C와 컴퓨터과학의 기초를 효율적으로 습득할 수 있습니다. 저는 이 과정을 통해 특히 포인터와 C-style 문자열 이해도가 크게 향상되었습니다. 이렇듯, C의 추상화 계층 속을 실제로 들여다 볼 수 있는 경험은, 앞으로 소프트웨어 엔지니어가 되기 위한 값진 경험이 될 것입니다.
마치며
42라는 독특한 교육과정은 프로그래밍 뿐 아니라 협업 등 다양한 것을 배울 수 있습니다. 저는 특히 동료들과의 커뮤니케이션을 통해 많은 것을 얻었습니다.
저는 보통 책 없이 프로그래밍을 공부해 왔고, 직접 구현을 통해 실력을 늘려왔기에 더욱더 42 커리큘럼이 만족스러웠습니다. 직접 문제에 부딪혀 보고, 코드를 작성하고 동료들에게 설명하는 과정은 컴퓨터과학을 공부하기에 더할 나위 없이 아름다운 교육과정이라고 생각합니다. 라피신 과정을 망설이고 계시는 분들은 한 번씩 도전해 보시길 권해드립니다.
라피신을 완주할 수 있도록 도와주신 모든 피시너에게 감사의 말씀을 전합니다.
Intra ID. geonhwki 드림