이번주 학습 내용은 아래의 링크로 확인하면 됩니다.
1. 운영체제
2. Alarm Clock
3. Priority Scheduling
정글의 Pintos 프로젝트의 부제가 정글 끝까지
이다.
회사를 그만둔 지 어느덧 2개월이 지났다. RB 트리
, 동적 메모리 할당
, 소켓 인터페이스
등을
C언어를 2일동안 학습하고, 아주 기초적인 언어 지식만 가지고 구현하면서 추가로 필요한 공부했다.
이게 가능할까 싶은 두려움과 부족한 기초를 가지고 주어진 과제를 어떻게든 해왔다.
매번 최선을 다해 최대한 이해하려고 노력하였지만 제대로 이해하지 못한 채 늘 다음 과제로 넘어오는 느낌이었다.
그런식으로 하다보니 기술 부채는 쌓여가고 이에 대한 스트레스가 이번 주 Pintos를 구현하면서 제대로 터졌다.
회사를 그만두는 리스크를 감수하고서라도 더 좋은 개발자가 되고 싶다는 초반의 열정에 비해
현재 공부하고 있는 것들에 대한 결과가 스스로가 만족할 만큼 잘 나오지 않아서 큰 스트레스였다.
회사를 괜히 그만뒀나 싶기도 하고 늦은 나이에 너무 오기를 부린 것은 아닐까 하는 수많은 생각들이 지나갔다. 그러던 어느 날 하루는 공부를 해나가는 정글 동기들과 함께 가볍게 편쏘(편의점+소주)를 하며 리프레시를 하러 갔다.
내가 정글 4기 동기 중에 나이가 젤 많은 형이라서 힘들어도 늘 묵묵히 티를 안내면서 공부 했었다.
나름대로 마인드 컨트롤하며 이 과정을 버티려 했는데 그날은 힘들었던 감정들이 나도 모르게 튀어나와 버렸다.
그리고 나뿐만 아니라 잘하고 있다고 생각되는 동생들 모두 다 나와 같은 고민을 하고 있었다.
코치님께서 늘 포기만 안 하면 된다고 하지만 진짜 그렇게만 해도 되는 것일까?
지금 이것 밖에 안되는데 이렇게 해가지고 제대로된 개발자로 살아갈 수 있을까? 되물었던 시간의 연속이었다.
힘든게 사실이지만 같이 공부하는 동생들과 끝까지 놓지 말자고 다짐하고 서로를 격려하며 한 걸음 나아갔다.
나는 정글 동기들 중에서 코드를 읽고 이해하는 속도가 느린 것 같다.
실무를 조금이라도 하고 온 입장에서 그래도 코드 읽고 이해하는 것은 잘해야 하지 않나? 라고 생각하며 나 자신을 과롭혔던 것 같다. 이 과정을 중도에 그만두진 않았겠지만 그만두고 싶을만큼 늘 고통의 연속이었다.
이 회고록을 쓰기 직전인 Pintos 과제를 제출 시점에도 여전히 만족할 만큼 코드를 이해하지도 정리하지 못했었다.
오전에 WIL 발표를 마치고 붕뜬 마음을 가라앉히려고 문지도서관에 혼자 앉아서 묵묵히 다시 살펴봤다.
위에 블로깅 3번 링크 내용을 정리하면서 코드들을 다시 보고 나만의 언어로 다시 적어보고자 했다.
구현에 필요한 관련 문서를 다시 읽는데 갑자기 안 보이던 코드의 흐름이 보이기 시작했다.
구현 시에는 잘 이해가 안 되던 코드들, 왜 저렇게 쓰는지도 잘 이해가 안 되었던 코드들이 술술 읽히기 시작했다. 결국 끝까지 놓치지 않고 붙잡고 있으니 막히던 것이 되는 이 경험은 너무 즐거웠다.
그날은 저녁을 거르고 협력사 밸런스 히어로
의 발표가 있기 전까지 최대한 코드들을 몰입
해서 다시 보았다. 시간 가는 줄 모르고
했던 이 경험은 정글을 하는 과정 중에 기억에 남는 순간
중의 하나가 아닐까 싶다.
Project 1주 차는 어떻게 잘 넘긴 것 같은데 2주 차는 또 새로운 것을 배우게 된다.
사실 더 많은 어려움이 있을 것이라고 예상이 되지만 Project1에서 배운 교훈으로 열심히 해보려고 한다.
그렇기에 현실적으로 어떻게 공부하면 좋을지 생각해보았다.
무엇을 구현하려고 하세요? 라고 Project1 당시에 코치님이 이런 말씀을 하셨다.
사실 이 말의 의미를 제대로 이해하지 못한 채 당장 OS 개념이 부족하다고 생각해서 추가로 강의를 봤다:
그동안 1200페이지에 달하는 CSAPP 책을 읽어놓고도 더 디테일한 것을 알아야지 않나 싶어서
추가적으로 OS 강의를 듣는 데만 프로젝트 기한 7일중에 2일을 사용하였다.
(물론 의미 없는 것은 아니었고 이 시간도 귀한 시간이었다. Thanks to 덕수킴 교수님
)
막상 구현 해야 하는 것을 알고 하는 게 아니라 응용하지도 않을 많은 지식 습득에만
초점이 잡힌 잘못된 공부를 해왔다. 그렇게 공부하다보니 당연히 와닿는것도 많지 않았고
지금 무엇을 구현하려고 했는지 본질을 잃어버리기도 했다.
이 문제점을 발판 삼아 구현 하면서 필요한 개념을 보니 늦게 시작했지만, 나중에는 더 빠른 속도로 이해가 되었다.
코치님의 말씀대로 무엇을 구현하려고 하는지를 고민해보면서 진행해야겠다.