42의 라피신에 참여하게 된 계기
42에는 비전공자들도 많이 참여하니 이미 알고 있는 내용을 배우러 가는 게 아닐까 하는 생각이 있었습니다. 친구에게 어떤 곳인지 얘기를 듣고 어떤 곳인지 찾아보니 42는 c언어를 기본적으로 사용하며 과제, 팀 프로젝트 등을 진행하게 된다는 것을 알게 되었습니다. 그리고 이곳은 빠른 취업을 위해 당장 필요한 것을 알려주는 게 아닌 당연히 사용하던 라이브러리들의 동적 원리를 직접 구현해 볼 수 있고 함께 모인 사람들과 얘기하며 협업 능력과 소통 능력을 기를 수 있을 것 같단 생각이 들어 참여하게 되었습니다. 42에서 배우는 내용은 기초를 잘 다져 빠르게 변화하는 IT기술들에 흔들리지 않을 수 있을 것 같단 생각도 들었습니다.
무엇을 배우나요 ?
트렌디한 내용들과는 약간 거리가 있지만 그 내부 속에 존재하는 일부 근간을 배우는 곳이라 생각이 듭니다. linux 터미널을 이용하며, vim으로 코딩하며 c언어의 헤더 파일들을 구현해 나갑니다. 이 과정에서 헤더파일을 불러와서 사용하던 함수의 동작 원리를 배울 수 있습니다. 끊임없이 설명하고, 질문하고 나의 부족했던 부분을 들여다볼 수 있고 부족한 부분들을 주위 사람들에게 나눠보며 함께 해결 방안을 모색하고 이 자체가 배움이었습니다.
기대에 부응하는 내용들로 학습했나요 ?
우선 코딩 한번 배워보자는 마음으로 들어오셨다면 재밌지만 이런 걸 왜 해야 할까 하는 생각이 들 수도 있을 것 같았습니다. 저는 기대 이상으로 부응했다는 생각이 듭니다. 저는 이곳에서 개발 도구 선택에 대한 에너지를 줄이고 구현 등에만 오로지 집중할 수 있어 학습하기에 정말 좋았습니다. 세계적으로 많은 학생들이 있다보니 42에서 규정해 놓은 c언어 코딩 컨벤션도 있었습니다. 해당 컨벤션을 지키며 하다 보니 함수의 라인 수를 지키고, 필요한 추상화에 따라 함수를 분리하고, 하나의 파일에 함수를 몇 개를 두고 등등 깔끔해진 코딩 스타일을 유지할 수 있었고, web 개발에서 린트, 코드 포맷 등을 왜 규정하는지 등을 좀 더 이해할 수 있었습니다. 리눅스를 사용하며 초반엔 익숙지 않던 명령어들도 어느새 익숙해져 사용하고 있고, c언어 저수준 함수들만을 사용해 라이브러리들을 직접 구현해 보고 메모리 관리의 중요성을 깨달으며 메모리를 알아서 관리해 주는 언어들에 감사함을 느낄 수 있었습니다. 제가 했던 기대는 리눅스를 어느 정도 자유롭게 다룰 수 있게 되고 터미널과 친해지고, c언어로 무언가 만들어보며 c와 친해지는 것 정도였습니다. 하지만 기술적인 면 외에 사람들에게 부족한 실력을 드러내고 싶지 않아 질문을 잘 하지 않았다면 이곳에선 과감히 질문하며 더 많은 것을 얻을 수 있다는 것을 배웠고 내가 원하는 답변을 얻기 위해 좋은 질문이 무엇인지, 다른 사람들에게 내가 아는 것을 얼마나 더 잘 설명해 줄 수 있을지 고민하는 시간을 보내며 기대 이상으로 한 달을 보낸 것 같습니다.
어떤 점에서 성장할 수 있었나요 ?
정신적 성장, 기술적 성장 두 가지 측면에서 성장을 할 수 있었던 것 같습니다. 정신적 성장에선 나의 부족한 부분을 감추기보다, 이 부분을 정확히 인지 후 내가 부족한 부분을 잘하는 분에게 찾아가 물어보며 채워갈 수 있다는 것을 알게 되었습니다. 내가 잘 모르고 이해하지 못하는 것에 부끄러워하지 말고 주변에 도움을 구하고 나도 도움을 주면 된다는 것을 깨달았습니다. 기술적 성장에선 c언어의 저수준 함수들로 프로그램을 구현하다 보니 생각지 못한 입력값에 오버플로우 언더플로우가 발생하는 일들이 빈번해 메모리 누수에 대한 예외 처리에 많은 신경을 쓰게 되었고 이 과정들에서 gdb로 디버깅하며 어디서 누수가 발생했고 어떻게 해결해야 할지 기본적이지만 익숙지 않은 작업을 하며 성장해 볼 수 있었습니다.
라피신의 장점
개발을 어느 정도 해보신 분들이라면 머릿속 흩어져 있던 퍼즐 조각들이 맞춰지는 느낌을 받을 수 있을 것 같아요. 무슨 뜻이냐면 원래 알고 있던 내용들이 다양하게 있지만 실제 사용을 해보지 않거나, 잠시 쓰고 잊은 그러한 내용들을 여기선 누군가에게 설명해야 하고 내 거로 만들어야만 하며 그 과정에서 애매했던 개념들이 확실히 닿는 느낌을 받을 수 있었습니다. 그리고 주어진 과제를 보며 할 수 있을까 싶던 것들이 어느 순간 익숙해져 있습니다. 어려운 과제들을 보면 어떻게 해야 할지 막막한 생각부터 듭니다. 하지만 몇 시간 또는 하루 정도 투자하면 문제를 해결하게 됩니다. 그리고 그 이후부터는 해당 기능들을 재사용하고 또 필요에 의해 새롭게 구현해 내기도 하고요. 이런 굴곡 속에서 끊임없이 성장하고 자신감이 붙어가는 자신을 볼 수 있습니다. 모두가 질문하는 풍경이 흔하고 그 과정에서 다른 사람의 문제해결 방식을 습득할 수도 있습니다. 한 달이라는 기간이지만 라피신에서 기술적으로, 그리고 그 외적인 요인에서 자신의 열정에 따라 많은 것을 얻어가실 수 있을 것이라 확신합니다.
라피신의 단점
라피신 과정 자체에 큰 단점을 느끼지는 못했어요. 다만 과정 외적으로의 단점은 몇 가지가 존재했습니다. 식비가 많이 나가고 42 경산이 구석에 있어 접근성은 좋지 않습니다.
결론
본과정을 할 시간이 없다면 라피신은 한 달이니 이미 개발을 어느 정도 할 수 있더라도 꼭 해보시길 추천해 드립니다. 42는 라피신, 본과 정 포함 2년간 지원금을 매달 100만 원씩 줍니다. 라피신의 경우는 기숙사까지 제공해 줘서 배우는데 큰 부담은 느끼지 않아도 될 것 같아요. 프로그래밍이 완전 노베이스라면 c언어에서 반복문으로 별 찍기, 어느 정도 이해가 잘 가시면 포인터의 존재 정도는 보고 오는 것을 추천해 드립니다.