일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- schema first
- uuid-ossp
- mistel키보드
- 레이캐스팅
- 도커
- 텍스트북
- c++
- adminbro
- 스플릿키보드
- 동료학습
- 창업
- 42seoul
- 파이썬
- 부동소수점
- 프라이빗클라우드
- 이노베이션아카데미
- enable_if
- Cloud Spanner
- 엣지컴퓨팅
- 쿠버네티스
- 스타트업
- raycasting
- SFINAE
- GraphQL
- 어셈블리어
- 정렬
- 자료구조
- 42서울
- 어셈블리
- psql extension
- Today
- Total
written by yechoi
42서울 본과정, 지난 6개월 간의 후기(교육과정, 원격학습 등) 본문
본과정을 시작한지 6개월이 넘었다. 피씬은 2월에 끝났는데, 코로나가 급격히 확산하면서 등교하지 못한 채로 본과정이 시작됐다. 지금도 재확산세에 등교를 못하고 있다. 학교를 나간 기간은 한달 조금 넘을까. 본과정 대부분의 시간을 원격으로 진행한 것이나 마찬가지다.
학교가 의도한 대로 본과정을 경험한 것이라고 할 수는 없다. 스스로 생각하기에도 학교를 나갔더라면, 더 빠르게 진도를 뺄 수 있었을 것 같다. 그럼에도 그간 배운 점을 간략히 후기로 정리해보려고 한다.
C 중심의 프로젝트
42서울은 프로젝트 중심으로 학습한다. 위 그림은 학교 프로젝트 홀리그래프 중 일부다.
프로젝트 진행방식은 다음과 같다. 안쪽의 원에 있는 과제를 해결하면, 바깥 원의 과제를 등록할 수 있다. 마지막 원을 탈출하면 서로 다른 루트를 택할 수 있는데, 그 전까지는 학생들 모두 같은 과정을 밟아야 한다. 원 안쪽에 있어서 '이너써클(inner circle)'이라고 부르기도 하고, 공식적으로는 '공통과정'이라고 부른다. 덧붙이자면, 본과정 학생 중에 공통과정을 벗어난 학생이 있다는 얘기는 아직 들어보지 못했다.
내가 그동안 진행한 프로젝트는 시험을 제외하면 7개인데, 대부분의 과제는 C로 진행했다. 아직까진 다른 언어를 사용하는 건 허용되지 않는다. C를 사용하지 않은 프로젝트는 지금까지 단 둘이다. 네트워크에 대한 지식을 평가하는 퀴즈인 netwhat, 도커 파일을 작성하는 게 핵심인 ft_server다.
피씬 때와 마찬가지로 '저수준'으로 언어를 배워나간다. 과제에선 함수를 엄격히 제한하기 때문인데, read, write, malloc, free와 같은 기초적인 함수만 사용할 수 있도록 한다. 아, libasm에선 어셈블리어까지도 활용한다.
주제는 점차 다양해지는 중
처음에 수행한 과제들은 주로 함수를 구현하는 것이었다. libft는 libc에 있는 함수를 비롯해 40개 넘는 함수를 구현하는 과제다. get_next_line은 파일에서 한 줄씩 읽어오는 함수를 만드는 것이었는데 fgets랑 비슷하다. printf는 누구에게나 익숙한 printf를 구현하는 과제인데, 쉬울 것 같지만 각종 서식자까지 구현하려면 여간 복잡한 게 아니었다.
이런 과제를 통해 나름의 알고리즘을 세워서 코드를 작성해볼 수 있었다. 포인터나 메모리 관련한 개념도 좀더 수월하게 사용할 수 있게 되기도 했다.
각종 함수를 작성하는 과제를 진행하고 나면, 이제 과제가 점차 다양해진다. 앞서 말했듯이 netwhat으로는 네트워크 개념에 익숙해지고, ft_server로는 도커를 알아간다. libasm에서는 어셈블리어를 맛보고.
최근에 진행했거나 진행하고 있는 과제는 좀더 흥미로웠다. 원시적인 게임 엔진을 만들어보는 cub3d, 나만의 쉘을 만들어보는 minishell 등이다. (쿠버네티스와 친숙해지는 ft_services도 있었지만 개인적으론 관심이 덜 가는 과제라 뺌...ㅎㅎㅎ)
다른 곳에서 개발을 공부하는 또래들을 만날 일이 있었는데, 이들은 우리가 하고 있는 과정이 근본에 충실하다고 말했다. C를 배워서 그렇게 이야기하는 것도 있지만, 컴퓨터와 관련한 개념을 정석으로 익혀나가고 있다고 봤다. 예컨대 쉘을 만드는 과정에선 시스템 프로그래밍에 대해 배우는 식.
혼자하는 공부에 익숙해지기
본과정이 피씬과 다른 점은 공부방식이 바뀌었다는 것이다. 피씬 때는 이리저리 물어가며 공부하는 '동료학습'이 학습 방법의 주를 차지했지만, 지금은 혼자 공부하는 데 익숙해져가고 있다. 좋게 이야기하자면 '자기주도학습'이다. (42서울의 동료학습이 궁금하다면 다음 링크를 클릭 ✔️)
공부방식이 바뀐 건 이유가 있다. 피씬 때는 다들 진도가 비슷해서 물어볼 사람이 많았다. 그런데 지금은 각자 과제 진행 속도가 천차만별이다. 내가 진행하는 과제를 하는 사람 자체가 줄어드니, 궁금한 걸 물어볼 풀이 확 줄어들었다. 슬랙에 궁금한 점을 물어봤지만, 공허한 메아리로 돌아올 때도🤣
코로나도 한몫했다. '동료학습'을 키워드로 내세우는 42이건만, 학교에 나가지 못하니 친구들을 만나지 못한다. 옆 사람한테 궁금한 걸 바로바로 물어볼 수가 없다. 급격히 높아지는 구글 의존도! (그나마 다행인 건, 최근에 42 친구들 여럿과 코로나 걱정 없는 남해로 한달살기를 하러 내려왔다는 것. 공부를 모여서 하니 넘나 생산적 ❗️)
혼자 공부할 때 가장 큰 단점은 동기 부여된 상태를 유지하는 게 어렵다는 것이다. 42서울에선 강의나 교수가 없어서, 내가 의욕이 저하된 상태에서 누군가 지식을 '떠먹여주는' 걸 기대할 수가 없다. 내가 주도적으로 과제를 진행하지 않으면 배우는 게 없는 거다. 그렇지만 사람이 어려운 과제를 혼자 하려니 슬럼프가 오기도 하고... 그렇지 않겠습니까...? ㅋㅋㅋ
그때마다 내가 택한 방식은 눈을 밖으로 돌려 '강의'나 '교재'가 있는 다른 주제를 공부하는 것이었다. html/css 강의를 듣는다거나, c++ 교재를 한장한장 넘겨가며 공부한다거나. 이렇게라도 지식을 편하게 받아 먹다 보면, 다시 과제를 해나갈 힘이 충전되고는 했다. 학교에서 다루지 못하는 부분을 조금이라도 보완할 수 있기도 하고.
동기부여 방식이 아주 없는 건 아니다. 최후의 동기부여 수단 '블랙홀'이 있다. 블랙홀은 '퇴학까지 남은 시간'이다. 0일이 되는 순간 퇴학인 것임...ㅋㅋㅋㅋㅋ 블랙홀을 늘리려면 프로젝트를 하면 된다. 프로젝트를 통과하면 블랙홀 일수를 늘려준다. 과제 난도에 따라 늘려주는 일수가 좀 다른 듯.
블랙홀은 정말 최후의 자극제 같고, 다시 동료학습의 비중이 높아지기를 바라고 있다. 혼자서 공부할 땐 생산성이 너무 떨어진다. 개인적으론 코로나 프리존을 찾아 모여서 공부하는 노력을 하고 있긴 하지만, 다같이 학교에서 모이는 것만큼 좋은 게 없을 듯. 역병이 그만 돌아야 학교를 갈텐데😀