Week 08 ~ 13 : KAIST PintOS

[KAIST PintOS Project] PRJ 3를 마치며

정글러 2022. 1. 25. 11:12

이번 프로젝트는 지금까지의 정글 커리큘럼 중 가장 길고 가장 어려웠다.

가장 어려웠기 때문에 2주라는 긴 시간이 주어졌지만 그마저도 독이 되었던 것 같다. 2주일이 주어진 나는 과연 1주일이 주어진 나보다 많은 일을 했는가 생각을 해보면 그렇다고 답하기가 힘들다.

 

많은 일이 있었는데, 프로젝트와 관계없이 모두가 겪은 일도 있었지만 그보다도 내게 치명적으로 작용한건 개발 실패(?)였다. 이번 프로젝트 중 도저히 에러의 원인을 알 수가 없어서 다 갈아엎고 프로젝트 2의 종료점부터 다시 시작하길 두번이나 했고, 심지어 두번째 리셋은 지난 토요일이었다. 이런 삽질의 반복을 경험하며 그동안의 공부방식을 다시한번 되돌아보게 되었다.

 

알고리즘부터 핀토스 전반부까지, 나는 목적과 목표를 정해두고 필요한 만큼 배우는 방식을 취했다. 그리고 코딩이 끝나고 나면 모든 구현경험을 가진 채로, 구현 중 적당히 기능을 알고 넘어간 선에서 타협한 개념들을 추가적으로 팠다. 친절하게도 깃북에는 "어디에서", "무엇을" 해야 할지 다 알려주었고, 가끔 개인의 구현차에 의해 따로 다뤄줘야 할 부분도 코드 스켈레톤에 대부분 주석이 되어있었다. 참고할 레퍼런스도 충분했고. 덕분에 이런 접근방법은 구현이 빨랐고, 아무것도 모른 채로 공부하는 것보다 머리에도 잘 들어와서 내게 맞는다고 생각했다.

하지만 저 모든 이점은 '벽에 막히지 않는다'는 대전제가 성립할 때나 가능한 것이었는데, "어디에서 무엇을" 해야할 지 알려준 것을 다 해도, 에러를 거슬러 올라가 문제가 되는 부분을 해결을 했다 생각해도 고쳐지지 않는 문제는 '벽'이 되었다. 아무리 로직을 뜯어봐도 뭐가 문제인지 안보이는 벽에 막혔을 때 내가 할 수 있는 방법은 결국 다 터뜨리고 돌아가서 이론공부를 다시 하는 것 뿐이었다...

 

아마도 이번 주차에 내가 겪은 일련의 과정들이, CS 지식이 없는 개발자가 로우 레벨의 문제에 마주쳤을때 무력해지는 것과 닮았다고 생각한다. Weekly I Learned, 이번 주에 무엇을 배웠나 따지면 몰랐다가 알게 된 것은 많을 것이다. 무엇을 왜 쓰고, 어떻게 구현하고, 그런 것들. 하지만 정말로 그런 지식이 필요한 상황이 왔을 때 나는 그것을 연상할 수준이 되는가를 따지면 아닌 것 같다.