한 달간의 코딩 테스트 piscine
Ecole 42 4부작 시리즈
선장 : 모두 잠수준비!
아이들 : 네 선장님!
선장 : 잘 안들려요오오옹~~?
아이들 : 네 선장님~~
선장 : 우~~ 와우~~~!
-보글보글 스폰지밥 OST 中-
이전 에꼴42에 대한 소개에서도 언급했지만, 42 학교에 입학하기 위해서는 la piscine(라 피씬) 이라는 1달 동안의 테스트를 통과해야 합니다. 이번 포스팅에서는 여러분이 궁금해하는 piscine 에 대해 좀 더 자세히 알려드리려고 합니다.
목차
La piscine 의 의미
에꼴42에 입학하기 위해서는 한 달 동안의 피씬 테스트를 통과해야 합니다.(진지)
에꼴42설명을 보면 자꾸 피씬피씬거리는데, 일단 피씬이 무엇인지 알고갑시다. la piscine(라 피씬) 은 프랑스어로 수영장이라는 뜻입니다. 참고로 la 는 영어로 치면 the 와 같은 관사의 일종입니다. 그런데 왜 테스트를 테스트라고 하면 되지 수영장이라고 할 까요?
piscine 은 일종의 비유적 표현으로 여러분이 수영을 배우기 위해 직접 물에 들어가서 허우적대야 하듯이 코딩을 배우기 위해선 본인이 직접 삽질 시행착오를 겪어야 한다는 의미입니다.
24시간 개방된 학교, 900 대의 Mac 컴퓨터가 있는 장소에서 600 명과 한 달동안 piscine 을 하게되면 정말로 코딩에 빠져 잠수하는 기분이 듭니다. 그럴 수 밖에 없는 것이, 서로가 서로를 채점하는 peer to peer 방식이라 주변에서는 코딩에 대한 이야기만 하기 때문이죠. 저 같은 경우는 세상과 이곳이 완전히 단절되는 느낌이 들었습니다. 프랑스에서 살다보면 해결해야 하는 현실적인 문제들(체류증, 월세 등)은 잠시 제쳐두고 코딩에만 집중할 수 있었으니까요. 누가 처음 이러한 테스트를 수영장이라고 이름지었는지는 모르지만 정말 아름답고(?) 적절한 표현이 아닐 수 없습니다.
piscine 동안 무엇을 하는가?
piscine 이 열리는 달은 학교(캠퍼스)마다 다를 수 있지만, 그 기간은 **한 달(4주)**로 모두 동일합니다.
그럼 한달 동안 무엇을 하나요?
한 달 동안 여러분이 하게 되는 건 딱 3가지입니다. 먹고, 자고, 코딩하기
먹기. 먹는 거에 대해서 얘기를 해보자면, piscine 동안 여러분을 포동포동 잘 먹이기 위해 푸드트럭이 대기하고 있어서 인터넷(steakoverflow)으로 주문하고 준비가 되면 알림이 옵니다. 그런데 푸드트럭에는 감자튀김이나 햄버거, 샌드위치같은 메뉴밖에 없어요. 1달 동안 이런 것만 먹을 수는 없잖아요? 그래서 학교 주변 음식점을 가거나 Nestor(전식/중식/후식 세트를 배달하는 서비스)에서 주문해서 먹습니다. 특히 Nestor 는 학교와 계약을 맺어서 쿠폰할인을 해줍니다. 그래서 10유로 정도만 내도 전식 중식 후식을 먹을 수 있어요. 한 달동안 잘 먹어야 코딩도 잘 되는 겁니다.
자기. 이제 잠에 대해서 이야기를 해보죠. 에꼴42는 프랑스 파리에서 뿐만 아니라 전 세계에서 지원자가 오기 때문에 그런 친구들을 위해 지하에 잘 수 있는 공간을 마련해둡니다. 본인이 직접 공기를 주입해 쓰는 매트리스랑 이불, 세면도구를 가져와서 지하에서 노숙(?) 생활을 하는 겁니다. 남녀 공간은 따로 마련을 해두기 때문에 위험한(?) 걱정은 안 하셔도 됩니다. 만약 여러분이 파리에서 운좋게 숙소를 구하게 되면 더 좋겠지만 고작 한 달을 지내기 위해 부동산계약을 하기에는 무리가 있잖아요? 저는 이미 파리에 살고 있었기 때문에 숙소 걱정은 없었습니다만, 학교에서 한 달 노숙 생활을 한 친구의 말을 들어보면 밤에 불을 안 꺼서 안대는 필수라고 하더군요. 게다가 여러 사람이 바닥에서 자기 때문에 소음에 민감하다면 귀마게는 필수라고 합니다.
코딩. 코딩에 관해 여러분은 C언어와 약간의 터미널 명령어를 배우게 됩니다. piscine 과정에서는 vim 또는 emacs 라는 이름의 텍스트 에디터를 사용하며, 여러분은 이 에디터의 달인이 되실 겁니다. git을 이용하여 과제 제출을 하기 때문에 git의 사용법을 미리 알고 오시면 더욱 좋습니다. 무슨 말인지 모르시겠다구요? 걱정마세요. 어차피 다 알게될겁니다.
어떤 과제를 수행하게 되는가?
과제에는 개인/그룹 이렇게 두 가지 프로젝트가 있습니다.
개인 과제는 총 16개의 과제가 있고 과제 1개당 10개 정도의 문제들이 있습니다. 과제들은 단계가 있어서 1번 과제를 통과하지 못하면 2번 과제를 할 수 없게 되어있습니다. 개인 과제는 제한시간이 없이 본인의 역량에 따라 piscine이 끝날 때까지 완수할 수 있는 만큼 하시면 됩니다. 어떤 사람은 16개 중에 14개까지 완료한 사람도 있고, 어떤 사람은 8개 까지 한 사람도 있습니다. 16개 과제를 모두 통과하는 사람은 드물기는 하지만 있긴 있습니다. 개인 과제는 크게 2개로 분류할 수 있는데, 1번과 2번과제는 shell(터미널) 을 다루는 과제이고, 나머지 3번부터 16번까지는 C언어에 관련된 과제입니다. 그런데 대부분의 사람들이 C언어 과제3번에 도달하기도 전에 shell에서 포기하곤 합니다. 일주일동안 shell 과제에서 낑낑거리다가 "난 프로그래밍이 적성에 안맞아" 하고 포기해버리는 것이지요.
개인 과제를 마치게 되면 에꼴42의 가장 큰 장점이자 특징이라고 할 수 있는 peer to peer 평가를 받게 됩니다. p2p 평가에 대해서는 밑에서 자세히 설명 드리겠습니다. 간단히 설명하면, 여러분과 같은 piscineur 2명이 여러분에게 살짝쿵 다가와서 이러쿵 저러쿵 얘기를 나누고 점수를 주는 겁니다.
그룹 과제는 일주일에 한번, 매주 금요일에 열리는 시험이 끝나면 자동으로 3~4명의 사람과 매칭이 되어 주말동안 과제를 하게 됩니다. 개인 과제와는 달리 기한이 정해져있기 때문에 금요일 저녁부터 일요일 저녁 11시 42분 42에 집착하는 학교 안에 과제를 제출하지 못하면 그냥 0점을 맞게 됩니다. 그룹과제는 C언어로 하게됩니다.
주말에 마친 그룹 과제는 주중에 평가를 받게 되는데, piscineur 에게 평가를 받는 개인과제와는 달리 staff 또는 레벨이 높은 현 42재학생에게 평가를 받게됩니다. 그룹 멤버가 채점자와 예정된 시간에 옹기종기 모여 채점을 받게됩니다. 이분들은 굉장히 엄격/근엄/진지하게 평가를 하므로, 피가 말리는 경험을 하실 수 있습니다. 제출한 과제가 본인들이 직접 한 것인지 아닌지 확인하기 위해 가장 코딩을 못해보이는 녀석에게 "여기 64번 라인이 무엇을 의미하는지 설명해봐" 를 질문하는 것 부터 시작해서, 메모리 누수, 에러를 적절하게 처리했는지 등등 모든 것을 검사합니다. 상당히 짜죠. 채점자는 줄 수 있는 가장 낮은 점수를 주기 위해 노력한다고 보시면 됩니다. 점수가 너무 낮다고 실망할 필요 없어요. 너나 할 것 없이 다 낮으니까요
한편, 매주 금요일에는 시험이 있습니다. 자세한 설명은 하지 않겠습니다. 기밀 누출이거든요. 이 시험이라는 것도 상당히 재밌습니다. 꼭 경험해보시길 바래요.
peer to peer 채점방식에 대해
에꼴42의 가장 큰 장점으로 손꼽히는 것중의 하나인 p2p 채점에 대해 알아보도록 하겠습니다. p2p 채점방식은 piscine 뿐만 아니라 42에 입학해서도 계속 이런 방식으로 프로젝트를 해나가가게 됩니다. 전문가도 아닌 막 프로그래밍을 시작한 일개 학생들이 서로 채점을 해주는 방식이 어떻게 혁신적인 교육을 이뤄낼 수 있었을까요?
우선 p2p 방식이 어떻게 이루어지는지 알아봅시다. p2p 방식을 이해하기 위해서는 evalution point(채점 포인트) 를 이해해야 합니다. 채점 포인트는 내가 누군가를 채점하게 되면 1점을 얻고, 누군가가 나를 채점하면 그 사람에게 내가 가진 1점을 주는 일종의 가상화폐라고 할 수 있습니다. 채점을 거래하는 것이지요. 가장 먼저 여러분은 과제를 완료하고 vogsphere 라고 부르는 제출용 서버에 제출을 해야합니다. 그 후에 채점자들과 약속을 잡기 위해 timeslot 에 들어가서 채점자들이 미리 올려놓은 시간대에 본인이 원하는 시간대가 맞으면 클릭합니다. 해당 시간이 되면 채점자가 내 자리에 와서 서버에 올려놓은 과제를 다운로드 받은 뒤 이러쿵 저러쿵 이야기를 나눕니다. 채점자가 채점을 완료하면 채점자에게 1포인트를 주고 본인이 가진 포인트는 -1이 됩니다.
포인트를 잃었으면 이제 포인트를 벌어야겠죠 ? 포인트를 벌기 위해서는 다른 채점자들이 했던 것처럼 여러분도 다른 사람을 채점해 줄 수 있는 시간대를 intranet timeslot에 올리고, 채점이 필요한 사람들이 여러분의 타임슬롯을 클릭하게 될겁니다. 내가 한 과제를 다른사람이 채점해준 것처럼 나도 다른 사람의 과제를 채점해주어햐하는 것이지요. 누군가 여러분의 타임슬롯을 클릭하게 되면 여러분은 그 시간에 해당 사람의 자리에 가서 그 사람이 제출 했던 과제를 다운받고 이러쿵 저러쿵 토론을 하면 됩니다.
piscine 의 경우 2명의 사람에게 채점을 받고 나면 moulinette 라고 부르는 기계에 의해 채점을 받게 됩니다. 과제의 점수는 기계점수가 우선시되며, 사람의 점수는 그 다음에 적용됩니다. 무슨 말인지 예를 들어 볼게요. 사람 2명에게 각각 100점이라는 평가를 받은 상황에서 moulinette가 왔다갔는데 저에게 0점이라는 점수를 주었습니다. 결론적으로 기계가 0점을 주면 제 점수는 0점이 됩니다. 아무리 사람이 점수를 후하게 주더라도 기계가 아니다라고 하면 아닌겁니다. 기계에 의한 평가는 절대적이거든요. 그럼 여기서 사람이 주는 점수는 무슨 의미가 있는지 의아해 하실 겁니다. 기계점수가 일정 점수가 넘으면 사람2명에게 받은 평가점수와 합쳐서 평균을 내게 됩니다. 즉, 기계가 나에게 100점을 줬어도 사람 점수가 0점이면 (100 + 0 + 0) / 3 = 33 점을 받게 되어 프로젝트가 통과하지 못하게 되는 것이지요.
p2p 방식의 핵심이 바로 여기에 있습니다. 본인이 생각하기에 "내 과제가 기계평가에서 100점을 받을 것이다" 라고 생각하고 과제를 완수해야하는 것은 물론, 채점자의 점수를 얻기 위해 토론을 통해서 내가 옳다고 증명을 해야합니다. 증명에는 여러가지 방법이 있을 수 있겠지요. 내 코드를 설명해서 상대방을 이해시키거나, 테스트 코드를 직접 작성해서 내 코드가 정상동작하는 것을 보여주거나, 상대방이 내 코드를 직접 테스트해볼 수 있게 해주거나, 이번 과제 시도가 1번째가 아닌 2번째, 3번째 또는 그 이상 이라면 이미 이전에 받은 기계채점 기록을 보여줘서 "이전에 이 부분은 이미 문제가 없었다. 그러니까 검토할 필요 없다" 라고 할 수도 있죠. 이런 과정에서 자연스럽게 다른 사람의 코드를 읽고 이해하는 능력이 길러질 뿐만 아니라 본인이 내 코드가 맞다고 설명해주므로 복습이 됩니다. 만약 다른 사람의 과제를 채점하는데 그 사람이 나보다 더 높은 레벨의 과제를 해서 내가 이해를 하나도 못한다고 해도 그 사람에게 설명을 들으면서 예습이 됩니다. 마찬가지로 나보다 더 낮은 레벨의 과제를 하는 사람에게는 내가 했던 시행착오들을 알려주면서 나는 복습하고, 그 사람은 내가 한 실수를 안할 테니까 시간이 절약되고 서로 이득이 되겠지요. 같은 레벨의 과제를 하는 사람과 만나게 되면 서로 못풀었던 문제를 공유하면서 설명해주고 통과할 때까지 힘이 되주기도 합니다.
p2p 점수에서 여러분이 조심해야할 것이 한 가지가 있는데, 만약 사람 점수가 기계채점 점수와 큰 차이가 나게 되는 경우 채점자에게 불이익이 있습니다. piscine 을 하다보면 대충 대충 채점하는 사람을 걸러내기 위해서 기계채점과 비교를 하는 것이지요.
말이 길었지만, 결국 프로젝트가 통과하기 위해서는 기계채점과 사람채점을 합쳐 일정 점수 이상을 받아야 합니다. 만약 프로젝트 통과를 실패하더라도 2번, 3번, 또는 그 이상 여러번 시도를 할 수 있어요. 단, 주의해야할 점은 여러번 시도를 할 때마다 과제를 제출할 수 있는 대기시간이 길어진다는 거죠. 과제를 실패하면 2번째 시도때 다음 과제를 제출하기 까지 30분을 기다렸는데, 3번째 시도는 1시간, 4번째 시도는 3시간.... 뭐 이런 식입니다.
piscine 을 하는 분들에게 드리고 싶은 말씀
내 이웃을 내 몸과 같이 사랑하라
Piscine 이라는 테스트는 코딩을 얼마나 잘하는지 뿐만 아니라 소통능력도 봅니다. 여러분이 모르는 것이 생기면 주변사람들에게 주저하지 말고 물어보고, 주변사람이 도움이 필요하면 가능한 많이 도와주세요. 일주일에 한 번씩 자기를 많이 도와주었던 친구10명에게 투표하는 이벤트가 있는데 친구를 많이 사귀어 두면 유리하겠죠?
p2p 평가를 할때도 될 수 있으면 성실하게 해주세요. 채점이 끝난 후 서로에게 코멘트와 점수를 매기거든요.
학교 안에서의 룰은 반드시 지켜주세요. 많은 사람들이 사용하는 공간이니까요. 아니면 TIG라고 해서 벌칙을 받습니다. TIG를 받으면 점수가 깎이고 일분 일초도 모자란 piscine 시간에 600대의 모니터와 키보드 닦는 일을 해야합니다. 끔찍하죠?
그리고 piscine 기간에는 600명의 사람들이 몰려드니까 아무래도 트러블이 나기 쉽습니다. 성추행/성희롱/인종차별/불쾌한 행동을 하는 친구가 있으면 바로 staff에게 신고해서 조취를 취해야 합니다. 그런 친구들은 staff 에 의해서 바로 퇴출당합니다.
"내가 몰라도 누군가 가르쳐 주겠지" 라는 생각을 버리세요
IT 분야는 정말 배움의 끝이 없습니다. 끊임없이 새로운 것이 생겨나고 배워야 할게 넘쳐납니다. 여러분이 piscine 에서 배우는 것 중 한 가지가 바로 "새로운 지식을 빨리 습득하는 방법" 입니다. 인터넷에서 검색하고, 주변사람들에게 물어보고, 본인이 직접 정리하면서 익혀야합니다. piscine 에서 약간의 동영상 강의를 제공하긴 하지만 정말 기초적이고 일부분의 지식에 지나지 않습니다. 가만히 있어도 지식을 맛있게 만들어서 입 벌리고 넣어주는 강남 1타 강사 같은분은 이곳에 없습니다.
마지막으로 42 piscine 의 한달을 다룬 다큐멘터리(프랑스어)를 링크해 드립니다. 백문이 불여일견이라고 하죠. piscine을 시작하기 전에 어떤 것인지 느껴보는데 도움이 되실 겁니다.
자주하는 질문 (FAQ)
piscine 에 대해 궁금한 만할 것들을 모아봤습니다. 여러분이 궁금한 것들을 질문해 주시면 글을 수시로 업데이트 하겠습니다.
프로그래밍을 한번도 해본 적이 없는 저는 piscine 을 어떻게 준비해야 할까요 ?
간단한 리눅스 터미널 명령어 사용법, git, emacs 또는 vim 사용법, 그리고 C언어 이렇게 공부하시면 됩니다. 유투브에 42 piscine 이라고 치시면 강의 자료가 나옵니다. 42 staff 분들이 제작한 동영상인데 아쉽지만 영어는 아니고 프랑스어입니다. 유투브에 공유되는 동영상이 옛날 버젼이긴 한데 최신 버전은 여러분이 진짜 piscine 을 시작하면 인트라넷에 접속해서 볼 수 있습니다. piscine 전 예습으로는 더할 나위 없으니까 꼭 보시면서 공부하는 것을 추천드립니다. C언어를 완전히 처음 공부하시는 분이시라면 인프런 사이트를 추천해드립니다. 이 사이트엔 무료 C언어 강의가 많고 무엇보다도 "문제로 배우는 C언어" 라는 강의가 정말 좋습니다. piscine 동안 정말 많이 도움이 되었습니다. 이 강의가 제가 들었을 때는 무료였는데 지금은 11000원 이네요. 여러분이 알아서 좋은 강의 잘 찾으시리라 생각합니다.
piscine 이 끝난 이후가 궁금합니다.
piscine 이 끝나면 1주일 정도 뒤에 메일로 결과가 통보됩니다. piscine 에 합격하신 분들은 학기가 시작하는 10월, 11월에 학교 등록을 마치고 본격적인 학교생활을 하시면 됩니다. 떨어진 분들은 아쉽지만 재도전을 하셔야 겠지요. 학교 생활은 piscine 과 비슷합니다. 프로젝트를 하고 채점을 주고받고 합니다. 나중에 학교 생활에 대해 소개하는 글을 한 번 쓸 예정입니다.
에꼴42 등록증을 가지고 체류증 갱신이 가능한지?
가능합니다. 여러분과 같은 외국인 학생이 많기 때문에 학교에서 처리를 잘해줍니다. 단, 숙소는 여러분이 알아서 찾으셔야 합니다.
Ecole 42 4부작 시리즈
지름길 프랑스어 블로그에 대해
지름길 프랑스어는 누구나 이해할 수 있는 프랑스어 공부자료를 목표로 2017년 부터 지금까지 꾸준히 프랑스어 문법, 표현, 숙어, 속담, 사는 이야기 등을 주기적으로 포스팅하여 정리하고 있습니다. 저의 작은 프로젝트를 응원하고 싶으신 분들은 아래의 버튼을 클릭해주세요! 여러분의 후원은 지름길 프랑스어 서버 운영비에 사용되며 더 질 좋은 글 작성에 보탬이 됩니다.