[42Seoul] 전공자의 라 피신 4주차 후기 + 합격!
지원 후기/42Seoul

[42Seoul] 전공자의 라 피신 4주차 후기 + 합격!

들어가기 전에

42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다.

글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다.

저는 비전공자가 아니기 때문에 함부로 비전공자의 입장에서 말씀드릴 수는 없습니다.


 

 

2021.09.12 - [지원 후기/42Seoul] - [42Seoul] 전공자의 라 피신 1주차 후기

 

[42Seoul] 전공자의 라 피신 1주차 후기

들어가기 전에 42서울 라피신에 대한 후기는 '전공자'의 입장에서 작성되었습니다. 글의 끝에 들어가는 팁들도 '전공자'의 입장에서 진행할 수 있는 팁들입니다. 저는 비전공자가 아니기 때문에

ksabs.tistory.com

 

 

 

 

 

 

4주차 진행 (feat. BSQ)

 

3주차 팁에서 말씀드린대로 3주차에 개인과제를 끝냈어야 했지만 저는 그러지 못했습니다. ㅋㅋ

목표했던 과제가 4개정도 남아있었고 이 날에 3개를 끝냈던 것 같습니다.

 

그리고 가장 놀랬던 것은 우리가 BSQ에서 1억번의 연산을 7분에 끝냈는데 10초안에 끝났던 팀이 있었습니다.

 

팀원이 그걸 보고 저에게

'우리 코드 갈자..'

라고 했고 저도 동의했습니다.

 

 

 

화요일 내내 시간을 줄이기 위한 코드 리팩토링에 돌입했습니다.

어디서 시간이 오래걸렸는지 파악했고 그 부분을 줄이기 위해 10시간의 코드 수정을 거쳤습니다.

그런데 코드를 다 수정하고 마지막에 측정했을 때 1억번의 연산이 똑같이 7분이 걸렸습니다...

 

하지만 수정한 코드는 아직 메모리 이슈를 해결하지 못한 상태여서 그냥 원래 코드를 사용하기로 했습니다.

 

 

 

목표했던 과제가 한개 남아서 평가받고 끝낸 후 BSQ코드를 다시 보려고 했습니다.

그런데 이 과제가 자꾸 통과가 안되어 하루종일 retry를 했고, 클러스터 출입 마지막 날이어서 동료평가도 잘 잡히지 않았습니다.

결국 끝나기 5분전에 마지막 평가를 받고 통과했습니다.

 

 

 

 

수요일에도 BSQ팀원과 저는 1억번 연산에 대한 최적화를 갈망하고 있었습니다.

이미 여러 예외와 이슈는 다 잡은 상태였지만 결국 수요일 밤12시부터 목요일 새벽 5시까지 코드를 엎고 다시 짰습니다.

 

결국에는 극한의 최적화를 통해 3~4초안에 1억번의 연산과 결과출력이 나타나도록 수정했고,

2시간 쪽잠 후 7시에 일어나 다시 클러스터에서 만나서 남은 예외처리를 완벽하게 끝냈습니다.

 

결국 BSQ는 동료평가와 기계채점을 완벽히 통과해 만점을 받았습니다.

 

 

 

 

 

Final Exam

금요일에는 피신의 마지막인 final exam만 남았습니다.

final exam은 10시부터 6시까지 총 8시간동안 진행하고, 코로나로 인해 음식물 섭취도 불가했습니다.

 

난이도는 그냥 무난했고 문제수가 많아 처음보는 문제들도 많이 등장했습니다.

 

끝으로 갈수록 전 시험에서 풀지 못했던 개념이 탑재된 문제들이 나왔고, 다 풀어냈습니다.

대망의 마지막 문제에서 모르는 개념은 아니지만 역대급 문제가 등장해 2시간정도 풀어본 후 시간내에 풀지 못하겠다고 판단해 시험장에서 나왔습니다.

 

fianl exam 점수는 90점 이었습니다.

 

 

 

 

 

최종레벨

처음부터 몇레벨까지 해내야지 목표한 레벨은 없었습니다.

그냥 매번 과제와 매번 팀프로젝트에 최선을 다했고 내가 최선을 다한대로 레벨이 측정되는 것이라고 생각했습니다.

 

제 최종레벨은 10LV 30% 로 마무리 되었습니다.

 

 

 

 

 

 

 

 

모든게 끝난 후 느낀 점

 

C언어

 

42서울에서는 다른 코딩교육프로그램들과 다르게 C언어를 이용합니다.

처음에 신청하고 피신을 진행하기 전까지 C언어로 진행한다는 것에 대한 의심이 있었습니다.

 

다른 캠프들은 서비스 개발을 위한 언어를 사용하고 서비스를 만들어 냅니다.

하지만 42서울의 라피신에서는 C언어를 이용해 언어 자체를 이해하고 컴퓨터 자체를 이해합니다.

이 이해를 바탕으로 서비스 개발을 위한 기반을 다집니다.

 

C언어를 배우는 것이 아닌, C언어를 이용하는 것입니다.

파이썬, 자바, C++, JS를 이용해서는 배울 수 없는 것들을 배웁니다.

 

sort, swap, memory allocation, memory free, pointer ... 

이런 것들은 이미 다른 언어에선 구현되어있고 사용만 하면 됩니다.

 

비전공자분들이 처음부터 파이썬으로 시작한다면,

어쩌면 평생 sort코드를 짜보지 않을 지도 모릅니다.

어쩌면 평생 배열이 어떤 식으로 메모리에 담기는지 알지 못할 수도 있습니다.

어쩌면 평생 리눅스에서 ls, cd, cat 명령어가 c언어로 어떻게 구현되는지 알지 못할 수도 있습니다.

42서울에선 이런 것들을 C언어를 '이용'해 '스스로' 배웁니다.

 

특히 인상깊었던 것은 strncpy, strlcpy, strlcat, strcup 같은 함수들이 반환하는 값의 의미를 내가 직접 사용하며 배웠다는 점입니다.

'이 함수들이 반환하는 값은 어떻게 사용됩니다.' 라고 주입식으로 알려주는 것이 아니라,

과제를 수행하다보니 내가 짰던 strlcpy를 사용하고 반환값을 이용하게 됩니다.

 

 

 

 

다양한 사람들과의 협업

42서울에 참여하게 된 가장 큰 이유는 매주 진행하는 팀프로젝트를 통해 협업경험을 쌓고 싶었습니다.

 

4주간의 후기동안 개인과제에 대한 후기보단 러쉬와 BSQ에 대한 후기의 비중이 가장 컸던 이유입니다.

 

내가 실력이 가장 높은 팀에서 협업해 보았고, 나보다 잘하는 사람과도 협업해보았습니다.

매 팀플마다 새로운 역경이 있었고 배웠습니다.

 

42서울에서 러쉬는 2가지 특징이 있습니다.

  • 동료평가는 가장 대답을 못한 팀원을 기준으로 점수가 매겨집니다.
  • 팀원은 3명이 랜덤으로 매칭됩니다.

 

정말 잘하는 사람 1명이 혼자 진행해도 다른 분들이 같은 수준으로 따라가지 못하면 점수는 받지 못합니다.

랜덤으로 팀이 매칭되기 때문에 실력의 편차는 무조건 생길 수 밖에 없습니다.

 

저는 '가장 실력이 낮은 팀원을 얼마나 이해시키고 성장시켜서 같이 프로젝트를 완성하느냐'가 모든 러쉬를 꿰뚫는 핵심이라고 생각했습니다.

아무리 어려운 알고리즘과 실력이 낮은 팀원이 있어도 그 팀원이 완벽히 이해하고 코드를 짜고 설명할 수 있도록 백번이고 다시 설명했습니다.

이 과정에서 저도 완벽하게 알지 못하는 점을 보완했고 결국엔 제가 짜지 못했던 코드를 저보다 실력이 부족하다고 생각했던 팀원분이 해결하는 부끄러운 경험도 했습니다.

 

 

저보다 잘하는 팀원과 프로젝트도 진행했습니다. 저는 시작도 하지못해 쩔쩔매는데 팀원분은 코드를 수월하게 짜고있었습니다.

이 경험은 정말 태어나서 처음 경험해봤고 그 때는 정말 뇌가 정지된 느낌이었습니다.

서로 맡은 부분이 있는데 내가 맡은 부분을 제대로 진행하지 못하고 있는 상황은 정말 답답했습니다.

 

그런데 도움을 받고 결국엔 같이 풀어냈고, 서로 못봤던 오류를 찾아냈습니다.

팀원분과 프로그램을 완성하고 둘 다 내뱉었던 말은 '이거 혼자 했으면 절대로 못했다' 였습니다.

 

7분 -> 4초로 최적화했던 경험은 정말 짜릿했습니다.

 

 

 

 

 

 

누군가에게 설명하기 위한 코드

지난 2년간 혼자 공부할 때 짰던 코드는 '나만' 이해하면 되는 코드였습니다.

하지만 지난 한달간 42서울에서 짰던 코드는 무조건 누군가를 이해시켜야만 하는 코드였습니다.

 

설명이 수월하기 위해선 처음보는 사람이 설명없이 코드를 봐도 이해할 수 있어야 합니다.

 

각 변수명과 함수명은 의미가 명확해야합니다.

각 함수는 기능이 명확해야합니다.

왜 이 알고리즘이나 이 함수를 썼는지 설명하려면 해당 알고리즘과 함수에 대해 정확히 알고 있어야합니다.

 

코드를 짤 때부터 누군가에게 설명해야 한다는 생각으로 짜다 보니까 이 규칙들을 적용할 수 밖에 없었습니다.

그래서 내가 조금이라도 이해하지 못하는 함수나 기능은 사용하지 않았고, 그 함수가 필수적이라면 완벽히 이해하여 사용했습니다.

 

 

 

 

 

친절하지 않은 설명과 서비스개발

42서울에서의 모든과제와 팀프로젝트는 설명이 친절하지 않았습니다.

문제에 적혀있지 않은 예외처리를 직접 생각하여 처리해야했습니다.

 

처음에는 정말 불편했지만, 계속 생각해보니 우리가 서비스를 개발할때 소비자가 어떠한 입력값을 줄지 완벽히 예측할 수 없기 때문인 것 같았습니다.

 

게다가 어떤 문제로 인해 중간에 프로그램 자체가 중단된다면 다른 사용자는 이용하지 못할 것입니다.

 

42서울의 친절하지 않은 과제설명과, 동료평가로만 발견할 수 있는 예외상황들은

우리가 개발자로서 나중에 서비스를 개발할때 어디까지 생각해야할 지에 대한 힘을 길러주는 것 같았습니다.

 

 

 

 

 

 

그래서 42서울, 추천하나요?

 

제 개인적인 입장에서 추천, 고민을 적었습니다.

제가 전공자이기 때문에 비전공자분들에게 추천이나 비추천을 하는 것이 위험할 수 있지만 전공자의 '개인적인 견해'가 판단에 조금이라도 도움이 되길 바라며 적어보았습니다.

 

 

 

저학년의 전공자 (추천)

방학기간동안 라피신을 진행하는 것을 강력히 추천드립니다.

앞으로의 공부에 올바른 방향을 제공해줄 것입니다.

 

 

 

중간에 휴학중인 전공자 (추천)

중간에 휴학중이라면 저와 같이 여러 캠프들을 지원해보고 계실 것입니다.

다른 캠프들과 시기가 겹치지 않는다면 라피신을 꼭 진행해보세요.

 

 

 

졸업 후 취업준비중인 전공자 or 막학기 (고민)

포트폴리오(개인플젝+팀플젝)도 어느정도 준비해 놓았고 코딩테스트도 어느정도 준비가 됐다고 생각하시면 굳이 진행하지 않으셔도 될 것 같습니다.

 

개인적으로

(라피신에서의 한달경험 + 2년간의 학습) < (좋은 IT회사) 취업후 실무투입

이라고 생각합니다.

 

만약 컴공 졸업은 했지만 포트폴리오도 준비해놓은 게 없고 잘 모르겠으면,

싸피, 소마, 우테코, 부스트캠프 등 취업에 직접적으로 도움을 주는 프로그램에 지원해보고 다 안되시면 라피신 고려해보시면 될 것 같습니다.

 

 

 

코딩을 아예 모르는 비전공자 (고민)

미리 공부를 해서 들어갈 자신이 있다면 추천드립니다.

학장님의 취지는 아예 몰라도 버티면 해낼 수 있다라고 하는 것 같은데, 대부분이 이미 공부했던 사람들이 지원합니다.

이 과정에서 자괴감도 많이 느끼시는 분들도 보았습니다.

 

만약 현재 코딩을 한번도 안해봤지만 라피신을 하고싶다면,

C언어의 포인터, 배열까지 공부하시고 백준을 C언어로 풀다가 오세요.

어느정도 익숙해야 배워가는 것도 있을 것입니다.

 

평생 라피신기회는 단 한번만 있는데, c언어 이론공부만 하다가 시간 날리면 아깝습니다.

여기서 팀플도 해보고 과제도 많이 밀어보고 서로 도와주며 학습하려면 미리 공부하고 들어가는 것을 추천드립니다.

 

 

 

코딩을 해봤던 비전공자 (추천)

라피신에서의 한달은 개발자를 내 직업으로 삼아도 괜찮을지 판단할 수 있는 기간이 될 것입니다.

 

서로 돕고 성장하는 개발자 문화를 공짜로, 게다가 돈을 받으며 경험할 수 있는 기회는 흔치 않습니다.

또한 코딩만 해서는 컴퓨터 구조나 메모리관리를 공부하기 힘듭니다. 여기서 어떤 부분을 공부해야하는지 방향을 제시해줍니다.

이미 잘하시는 분들의 노하우를 내 것으로도 만들 수 있습니다.

 

 

 

 

 

 

 

 

+합격!

나도 이제 카뎃!

 

 

 

끝으로

한달간의 라피신 후기를 여기서 마칩니다.

결과보다 과정을 평가하는 42서울이어서 지원했습니다.

합격해도, 불합격해도 이미 얻고 가는 것이 많기 때문에 만족합니다.

결과가 어떻든 자신의 한계에 도전한 모두가 합격하길 바랍니다.