42Seoul 후기

안녕하세요. 저는 42Seoul 1기 2차 본과정생(카뎃) 김경환입니다. 이제 곧 구(舊)카뎃이 되겠네요.

42Seoul을 시작한 지 1여년만에 과정을 그만두기로 결정하였습니다. 42Seoul을 통해 프로그래밍을 접하고자 하는 분들에게 참고가 될 만한 내용과 제가 개인적으로 얻은 소중한 경험들을 공유하고자 간략하게 42Seoul 후기를 작성하고자 합니다. 이 글을 읽고 계신다면 42Seoul이 어떤 프로그램인지는 아실 것으로 생각됩니다. 따라서 42Seoul 프로그램에 대한 설명은 생략하도록 하겠습니다.

모든 내용은 주관적인 관점에서 작성되었습니다. 다양한 배경과 목적의 사람들이 모여있는 42Seoul이었기에 각자의 경험도 모두 달랐으리라 생각됩니다. 참고로만 읽어주세요!

캐릭터

42Seoul에서의 나의 경험

우선 42Seoul에서의 저의 경험에 대해 소개하고자 합니다. 42Seoul에서의 구체적인 경험을 참고 자료로 읽고 싶으시다면 여기부터 읽으시면 됩니다. 42Seoul의 장단점 등 간단한 정보를 얻고자 하시는 분들은 이 부분을 건너뛰시고 아래 42Seoul, 주관적인 평가 섹션으로 넘어가주세요!

42Seoul에 참여한 이유

우선, 저는 컴퓨터 공학에 대한 지식이 하나도 없었던 비전공생이었음을 밝힙니다.

대학교 4학년 때 영화 진로를 고민하던 중 VFX를 공부하기 시작했습니다. 컴퓨터로 실제와 같은 가상의 무언가를 만드는 것은 굉장히 매력적인 일이었습니다. 하지만 저는 예대를 나오지도, 영화과를 나오지도 않았습니다. 전공과 상관없는 산업에 그저 좋아서 뛰어들기에는 리스크가 컸고 경쟁력은 약했습니다.

VFX, 또는 3D 그래픽은 예술과 기술의 접목이라고 생각했습니다. 실제로 영상 예술의 발전은 기술의 발전이라고도 할 수 있죠. 그래서 컴퓨터 그래픽스를 공부하기로 결심했습니다. 더 실제와 같은, 혹은 더 아름다운 그림을 그려내기 위한 기술을 가진 아티스트가 되고 싶었습니다.

컴퓨터 그래픽스를 공부하기 위해선 컴퓨터 공학을 공부해야했습니다. 컴퓨터 공학을 공부할 방법을 찾아보다가 42Seoul을 알게 되었습니다. 많은 교육 프로그램들 중 특히 42Seoul을 선택한 이유와 실제 경험은 다음과 같았습니다.

  1. 교수, 교재가 없는 자율적인 공부를 지향한 42Seoul이 마음에 들었습니다.

    이유: 개발자 양성 프로그램은 42Seoul 외에도 몇 개가 더 있었습니다. 예컨대 삼성에서 진행하는 ‘삼성 청년 SW 아카데미(SSAFY)‘도 고려 대상 중 하나였습니다. 하지만 기업을 위한, 취업을 위한 공부보다는 컴퓨터 공학 중에서도 제가 원하는 분야의 공부에 집중하고 싶었습니다. 삼성이 컴퓨터 그래픽스를 가르치지는 않을 것 같았습니다.

    실제: 실제로 모든 학습이 자율적으로 이루어지며 동료 학습이 중요했습니다. 학습 방법도 자율이지만 과정도 비교적 자율적입니다. 커리큘럼 상 진행해야 하는 과제들의 양이 심하게 많지는 않았습니다. 따라서 개인적으로 공부하고 싶은 부분들과 병행하실 수 있습니다. 컴퓨터 공학의 한 분야가 될 수도 있고, 그 외 취업을 위한 자격증 공부나 언어 공부도 포함됩니다.

  2. 매달 100만원을 지원해주는 것도 42Seoul에 참여한 이유입니다.

    이유: 공부를 하면서 생계를 유지하기 위해선 돈이 필요했습니다.

    실제: 실제로 최소한의 학습만 유지하면 매달 100만원의 지원금을 받을 수 있었습니다. 지원금 지급 조건이 코로나 상황에 따라 조금씩 변경되기는 했지만 현재도 커리큘럼 상의 과제를 조금씩이라도 지속적으로 진행하면 지원금은 문제 없이 받으실 수 있습니다.

  3. 비전공자에게 열려있어 보였습니다.

    이유: 컴퓨터 언어를 하나도 몰라도 1차 사전 시험을 치를 수 있었습니다. 비전공생들을 환영하는 듯한 소개에서 ‘나도 할 수 있겠다'싶었습니다.

    실제: 실제로 비전공자의 비율이 꽤나 높은 개발자 양성 프로그램입니다. 비전공자여도 커리큘럼의 과제들을 하는 데에 문제가 없습니다. 하지만 본과정생을 선발하는 부트캠프(La Piscine)를 통과하기 위해 조금의 C 언어 지식이 있다면 큰 도움이 될 것입니다.

내가 42Seoul에서 얻은 것들

1년 동안 42Seoul 과정을 진행하면서 다음을 얻을 수 있었습니다.

  1. C/C++, Python 지식

    42Seoul은 기본적으로 C언어를 사용하여 과제를 진행합니다. 더불어 제한된 함수만을 사용하여 과제를 해야합니다. 충격이시겠지만 printf 함수도 직접 구현하여 사용해야합니다…^^;;

    덕분에 C언어는 물론 메모리 구조, 자료 구조 등에 대한 공부가 확실하게 되었습니다. 배열/문자열 관련 함수들, 리스트 관련 함수들 등 거의 모든 함수들을 직접 구현해야했거든요.

    더불어 42Seoul엔 카뎃들의 학습 방향과 방법에 도움을 주시는 상주/비상주 멘토님들이 계십니다. 멘토님의 조언을 받아 진행한 개인 프로젝트에서 C++을 사용했습니다. 제 프로젝트 중에 PRMS가 그 프로젝트입니다. 더불어 42Seoul 과제 중에는 C++ 과제가 존재해 C++ 공부도 가능합니다.

    Python은 코딩 테스트에 사용하기 위해 개인적으로 공부했습니다. 42Seoul 과정과는 상관이 없었지만 개발 공부를 하면서 부수적으로 활용한 컴퓨터 언어였습니다.

  2. 컴퓨터 그래픽스의 시작, OpenGL 지식

    42Seoul 과제 중 cub3D라는 과제는 레이캐스팅을 구현하여 간단한 3D 게임을 만드는 과제였습니다. 해당 과제를 진행할 때 쓴 42Seoul만의 그래픽스 라이브러리인 minilibx는 OpenGL과 Metal API를 사용하여 구현되어있었습니다. cub3D라는 과제를 끝내고 OpenGL에 대해 더 공부하고 싶어 PRMS 프로젝트를 진행하였고, OpenGL 공부를 할 수 있는 좋은 기회가 되었습니다. OpenGL에 관한 블로깅도 이 때부터 시작하였습니다.

    OpenGL 지식 그 자체가 중요한 것은 아닙니다. 42Seoul을 시작한 목적, 바로 ‘컴퓨터 그래픽스 공부'를 시작할 수 있었다는 것이 중요합니다. 그러기 위해선 컴퓨터 언어, 알고리즘, 자료구조 등 컴퓨터 공학의 기초가 필요했고, 42Seoul을 통해 이를 얻을 수 있었습니다.

  3. 정보 공유와 동료 학습

    컴퓨터 공학도 예술이라고 생각합니다. 같은 기능을 구현하기 위해 서로 다른 코드들이 존재할 수 있었습니다. 더 보기 좋은, 성능이 좋은, 유지 보수가 편하고 사용하기 좋은 코드를 작성하기 위해 수많은 각기 다른 방법들이 존재했습니다. 마치 같은 대상을 그리더라도 각기 다른 방식으로 표현하는 화가들의 작업처럼.

    그래서 정보 공유는 중요했습니다. 42Seoul 과제들은 구현해야하는 기능과 조건들만 알려줄 뿐 구체적인 구현 방법을 찾아내는 것은 우리의 몫이었습니다. 먼저 과제를 완수한 사람들, 혹은 과제를 같이 진행 중인 사람들이 과제가 요구하는 기능을 구현하면서 얻게 된 지식은 서로의 교과서가 되어주었습니다.

    개인적으로 42Seoul을 1년간 지속할 수 있었던 이유는 피신 때 만난 10명의 동료들 덕분이었습니다. 피신 때 매일 점심, 저녁을 뭘 먹을지 고민하던 동료들이었기에 모임 이름도 ‘오늘 뭐먹지'였습니다. 과제를 진행할 때 깃헙을 통해 서로의 코드를 공유하고, 구현 방법에 대해 화상 회의로 토의하곤 했습니다. 덕분에 진정한 동료 학습을 경험할 수 있었고, 이 글을 빌려 감사함을 전달합니다.

    언택트 시대에 정보 공유와 동료 학습의 중요한 매체는 인터넷이었습니다. Discord에 정해진 시간에 모여 토의를 하고, Slack 커뮤니티에 다양한 정보를 공유하며 정답이 없는 과제에 우리만의 정답을 만들어가곤 했습니다.

    블로깅을 시작한 것도 위와 같은 이유였습니다. 정보를 공유하는 것은 남에게 도움을 주는 일이기도 하지만 습득한 지식과 생각을 정리하는 방법이기도 했습니다. 42Seoul을 하면서 정보 공유와 동료 학습의 중요성을 깨달았습니다.

  4. Last but not least, 협업

    정보 공유와 동료 학습이 프로젝트로 연장되었더니 협업이라는 종착역에 도착하게 되었습니다.

    42Seoul에는 팀 프로젝트들이 있습니다. 피신 때는 Rush라는 이름으로 존재했습니다. 규모가 큰 프로젝트들은 아니었지만 각자의 강점을 바탕으로 역할을 분담하고, 깃헙을 통해 협업을 진행하였습니다. 브랜치(Branch)를 따서 작업을 진행하고 머지(Merge)하면서 작업 내용을 공유하곤 했습니다.

    예컨대, 피신의 마지막 Rush였던 BSQ 과제는 장애물이 곳곳에 존재하는 맵을 읽어와 장애물을 피해 가장 큰 사각형을 그려내는 간단한 팀 과제였습니다. 깃헙을 통해 코드를 공유하면서 동료는 맵 파싱을, 저는 가장 큰 사각형을 찾아내는 알고리즘 구현을 담당하였고, 에러 처리, 결함 발견 등 공동으로 QA를 진행하였습니다.

    본과정 과제 중에선 명령줄 인터페이스 셸을 구현하는 과제를 팀 과제로 진행했던 기억이 납니다. 이 과제에서 처음 브랜치(Branch)를 따 작업을 하고 풀 리퀘스트(Pull Request)를 통해 작업 내용을 공유, 머지(Merge)하는 과정을 경험해봤습니다.

42Seoul에 참여한 소감과 떠나는 이유


소감
해보고 싶은 것은 해봐야 직성이 풀리는 스타일이라 컴퓨터 공학에 문외한인 상태로 무작정 개발자들의 세계로 뛰어들었습니다. 결과적으로 굉장히 유익한 1년이었습니다.

평생 독서실에서 밤새워 공부하는 공부법만 알았고, 그렇게 많은 성과들을 냈었습니다. 하지만, 42Seoul 덕분에 동료 학습의 유익함과 동료라는 존재의 감사함을 느꼈습니다.

컴퓨터 그래픽스 공부를 위한 기초 컴퓨터 공학 지식을 얻기 위해 참여한 프로그램이었고, 결과적으로 컴퓨터 공학 공부를 많이 할 수 있었습니다. 컴퓨터 그래픽스 공부를 시작할 수 있게 된 것도 큰 성과입니다.

전공과 무관한 새로운 공부를 재미있게, 지원금까지 받으면서 할 수 있었기에 42Seoul을 선택한 것에 후회는 하나도 없습니다.

떠나는 이유
떠나는 이유는 제가 개발자가 되기 위해서 컴퓨터 공학을 공부한 것은 아니기 때문입니다. 컴퓨터 그래픽스에 대한 지식과 프로그래밍 기술이 있는 3D 아티스트가 되기 위해서 개발 공부를 시작했기에, 다시 3D 모델링에 집중하기 위해 42Seoul을 떠나기로 결심했습니다.

컴퓨터 그래픽스에 관한 공부는 이제 개인적으로 진행하기로 결정하였습니다. 42Seoul에는 그래픽스 관련 멘토님이 부재할 뿐더러, 그래픽스 분야의 깊이있는 학습을 하기에는 커리큘럼이 부족하다고 느꼈습니다. 이와 관련하여 개인적으로 42Seoul의 단점이라고 생각되는 부분은 아래에 따로 서술하도록 하겠습니다. 컴퓨터 그래픽스를 공부할 방법으로는 여러 길을 고민 중에 있지만, 3D 모델러로 취업을 하고 그래픽스는 부수적으로 길게 보고 공부할 계획입니다.
blackhole

42Seoul, 주관적인 평가


42Seoul의 장단점!

주관적인 평가입니다!

장점

  1. 비전공자가 컴퓨터 공학의 기초를 시작하기에 좋다
    프로그램이 블랙홀, 레벨제 등 게이미피케이션이 접목된 시스템을 가지고 있어서 재미있으며, 초반 과제들이 크게 어렵지 않고 자연스레 컴퓨터 공학의 기초(자료 구조, 알고리즘, 네트워크, 그래픽스 등)를 접할 수 있게 설계되어있습니다.

  2. 멘토단과 연계 기업들
    멘토단이 존재해 개인 사이드 프로젝트를 진행하고자 하거나, 진로 상담, 이력서 작성 등이 필요할 때 적극적으로 도움을 청할 수 있습니다. 멘토단이 적극적으로 카뎃들을 도와주려고 하니 많은 도움을 얻으실 수 있습니다. 더불어 42Seoul과 함께하는 기업들이 있어서 오프라인, 온라인 간담회가 열리기도 하고, 기업 연계 프로젝트를 간혹가다 진행하기도 합니다.

  3. 지원금 지급 조건이 까다롭지 않다
    지원금 지급 조건은 코로나 상황에 따라 변동 될 수 있기에 앞으로도 까다롭지 않을지 까다로울지 장담드리진 못하지만, 일단 여태까지는 42Seoul 과제를 잘 수행하면 지원금을 문제 없이 받았습니다.

  4. 개발자 동료가 생긴다
    특히 비전공자는 개발자 동료를 만드는 게 쉽지 않을텐데, 42Seoul 프로그램에 참여하는 수백명의 동료들과 소통하고 함께 성장할 수 있습니다.

단점

  1. 깊이 있는 공부를 하기엔 한계가 느껴졌다
    42Seoul의 과제만으로는 컴퓨터 공학 기초 지식을 탄탄하게 만들 수는 없을 것 같다고 느꼈습니다. ‘아, 이런 게 있구나’ 정도이고, 기초를 탄탄하게 다지기 위해선 과제 외에 개인적인 공부를 더 많이 하셔야합니다. 교재와 수업이 없기 때문에 어쩔 수 없는 부분입니다.

  2. 한정된 멘토단과 연계 기업들
    아무래도 취업을 목적으로 하는 분들이 많고, 42Seoul도 본과정생들의 취업을 도모하기 위해 멘토단과 연계 기업들을 모시기 때문에 컴퓨터 공학 중에서도 소위 말해 ‘핫한’ 분야를 위한 지원에만 치중되어있습니다. AI, 빅데이터, 웹, 게임 프로그래밍 등에 관심이 있으시다면 많은 도움을 받으실 수 있지만 그 외 분야에 대한 지원은 적은 편이라고 느꼈습니다. 하지만 이는 피상적인 모습이고, 적극적으로 멘토단에게 도움을 청하시면 어떻게든 도와주려고 노력하십니다.

42Seoul, 이런 분들에게 추천드립니다!

  1. 전공자 보다는 비전공자!
    전공자들이 공통적으로 얘기하는 바로는 과제가 학사 과정의 과제들과 많이 겹치고, 복습하는 느낌밖에 들지 않는다고 합니다. 컴퓨터 공학의 기초를 접하기엔 좋지만, 본격적으로 취업을 준비하고 싶으신 전공자 분들에게는 권하지 않습니다.

  2. 개발자를 확실히 목표로 하시는 분들!
    당연하겠지만 개발자가 확실히 목표이신 분들에게 추천드립니다. 저는 개인적으로 개발자가 목표가 아니었기에 1년 정도 기초만 훑고 떠납니다.
    더불어, 요즘 개발자에 대한 미디어의 긍정적인 전망만 보고 ‘개발자 한번 해볼까'하는 마음으로 프로그램에 참가하시지는 마시길 바랍니다. 물론 신입 개발자들에 대한 수요도 늘었지만, 미디어에서 긍정적인 전망을 얘기하는 개발자들은 주로 우수한 경력자들입니다. 정말 개발자가 꿈이신 분들 중에서 42Seoul 과제를 하면서 개인적으로도 컴퓨터 공학 공부를 열심히 하실 분들에게 추천드립니다.

마치며

1년의 짧지만 긴 시간동안 좋은 사람들과 좋은 분위기 속에서 원하는 공부를 했습니다. 지원금 받은 걸 합산해보니 곧 받게 될 마지막 지원금까지 총 1200만원을 받았습니다. 42Seoul을 시작할 때 ‘연봉 1200짜리 공부'라고 우스겟소리로 말했었는데 딱 연봉 받고 떠나네요.

앞으로 저는 다시 3D 모델러로 돌아가고자 합니다. 하지만 언젠간 1년간 공부한 개발, 그리고 앞으로도 계속 공부할 컴퓨터 그래픽스가 저의 커리어에 도움이 될 것이라고 확신합니다. 벌써부터 Python은 Maya와 3ds Max에서 스크립팅 언어로 사용하고 있습니다. Unreal Engine을 다룰 때 C++도 적극 활용하게 되겠죠.

10여년 전 제가 고등학교에 진학할 때는 영어, 중국어가 교육계에서 인기였습니다. 지금은 단연 코딩이 인기입니다. 앞으로의 사회에서는 코딩이 기본 소양이 될지도 모릅니다. 42Seoul 덕분에 기본 소양을 챙기고 가네요!

많은 분들이 프로그래밍에 겁먹지 말고 도전해보셨으면 좋겠습니다!

이만 42Seoul 후기를 마치겠습니다!



이 후기는 소정의 1200만원 지원금을 받고 작성되었습니다ㅎㅎ