대학교 입학 후 여섯 학기를 마쳤다. 이번 학기는 여태까지와는 조금 많이 달랐다.
배운 것
3학년 2학기에는 총 17학점을 수강했다. 그 중에 졸업작품 제외하면 전공이 네 과목이다.
- 시스템 프로그래밍
- 컴퓨터 네트워크
- 알고리즘
- 소프트웨어 공학
떠올렸을때 긍정적인 기억이 많은 순서대로 썼다.
시스템 프로그래밍에서는 저수준 프로그래밍을 다뤘다. Computer Science: A Programmer’s Perspective라는 책을 썼다. 책 제목대로 프로그래머의 관점에서 컴퓨터 시스템을 이해하는 것인데, 내 반쪽짜리 지식의 빈자리를 꽉꽉 채워주는 무척 흥미로운 강의였다. 기억에 남는 것은 과제로 나왔던 attack lab이었다. 말로만 듣던 buffer-overflow 공격을 처음으로 해봤다. 한번 해보니까 프로그램 돌아가는게 조금 더 선명해지고 손에 잡히는 느낌이었다. 어셈블리와 CPU와 메모리 동작을 자세히 알게 된 것도 큰 소득이었다. 함수를 부르면 스택에 무엇이 어떻게 쌓이고 흐름이 어디로 이동하는지, 메모리 읽기를 요청하면 캐시가 어떻게 작동하는지 아주 잘 배웠다. 다 배우고 나니까 예전에 짜놓은 코드가 너무 쓰레기같이 느껴졌다(ㅋㅋ)
컴퓨터 네트워크는 지난 1학기에 배운 데이터통신에서 이어진다. 데이터통신과는 다르게 전송계층 이상 부분을 많이 다뤘다. TCP의 슬라이딩 윈도우, 혼잡제어 같은 개념들은 이전 강의에서 이미 다뤘지만 이번학기 들어서야 제대로 이해했다. 컴퓨터 네트워크라는 이름답게 응용계층을 꽤나 많이 다뤘는데, 기억나는건 HTTP 서버와 SMTP 클라이언트를 날코딩으로 직접 만드는 것이었다. 아, Wireshark로 HTTP 메시지 빼오는 것도 했다. 역시 아직도 우리 학교 포털은 비밀번호를 평문으로 보낸다…
알고리즘은 설명할 것도 없이 그냥 알고리즘이다. 이것 때문에 이번 학기 무지 힘들었다. 다름이 아니라 원래 알고리즘에 매우 약한데 분량까지 매우 많았다. 초반 O(N^2) 정렬 알고리즘이랑 퀵 정렬까지는 괜찮았는데, 트리 탐색 지나서 이름도 이상한 패트리샤(PATRICIA) 트리 나온 이후부터는 거의 뻗어버렸다. 체감상 최소 7학점짜리다. 아 물론 힘들었던 만큼 내용은 아주 중요하고 꼭 알아야만 하는 것들이었다. 미루고 미루다가 안했을 뿐.. 후반에는 기하 알고리즘과 동적계획법을 다루었는데, 2차원 알고리즘은 대부분 이번에 처음 접해봐서 신기헀다. 이런것도 있구나 하는 느낌. 동적계획법은 참 좋은데 하필 예제가 조금 어려웠다. 행렬 곱 구하는 예제였는데 나는 row-column은 알아도 행렬은 모른단 말이다. 피보나치 수열 구하는 것처럼 쉬운 예제도 있는데..ㅎㅎ
소프트웨어 공학은 내용은 참 좋은데 외울 것이 많아서 힘들었다. 내용은 정말 좋았다. 프로그램의 필요를 느끼는 단계부터 배포 후 피드백 받는 단계까지 그동안 막혔던 부분들에 대한 해답이 다 제시되어 있더라. 설계, 인스펙션, 리팩토링, 테스팅 등등… 허나 아직 이해하기 이른 개념들도 몇 개 있었다. 언젠가 대형 시스템을 설계할 날이 오면 다시 찾아서 공부하게 되지 않을까 싶다.
멘탈 터진 2학기
강의 내용 외적으로 보면 이번 학기는 내내 마음고생이 심했다. 슬픈 일도 있었고, 돈도 없었고, 외롭고 쓸쓸하고…
나는 내가 방에서 혼자 컴퓨터만 하면서 잘 살 수 있을 줄 알았는데 아니었다. 멘탈이 나가니까 아무것도 손에 잡히지 않더라. 그 재밌던 취미들도 하나도 재미없어지는걸 경험했다. 그나마 책 읽는게 할만해서 중간고사 기간에도 하라는 공부는 안하고 책만 읽었다.
그나마 다행인건 조금 우울감이 심해진다 싶을 무렵이면 시스템 프로그래밍 과제가 나와서 나를 코딩의 길로 인도해주었다는 것이다. 사실 내가 코딩을 좋아하고 코드를 짜면서 큰 즐거움을 느끼긴 하지만 딱히 뭔가를 만들고 싶지는 않았을 무렵이었는데 마침 과제가 나와서 좋았다. 과제 마치면 오는 성취감은 마치 마약과도 같은데 중독성은 약간 있고 내성은 없다. 매일 새롭다 ㅋㅋㅋ.
그렇게 정신 추스리다 보니 어느덧 중간고사는 물건너가버렸다. 어차피 공부에 큰 시간과 노력 쏟지 않았는데 이정도면 선방했다고 애써 위안해보았는데, 주변에서 나보다 시험 잘봤다는 소식이 하나 둘 들려오기 시작하니까 마음이 어딘가 불편해지기 시작했다.
오만한 녀석
고등학교 때는 한 학년에만 500명이 넘는 사람이 있었고 그중에 나보다 대단한 사람들이 수두룩했다. 대학에 오니 물리 선생님 말씀대로 나와 비슷한 친구들이 대부분이었다(물론 개쩌는 친구도 있었다). 그 와중에서도 시간을 컴퓨터 만지는 데에 많이 투자해서 코딩변태 취급받던 나는 그 전에 짜놓은 것들과 주워들은 것들에 힘입어 1,2학년을 무탈하게 보냈고, 내가 똑똑한 줄 알았다. 오만한 녀석, 어디서 주워들은걸로 나불나불대면서 잘난체하기는. 물론 그런 망상에 빠질 것을 상당히 경계해(자만하는 순간 성장은 멈추고 인생 내리막길) 꾸준히 나를 객관적으로 보려 노력했지만, 공부 안해도 시험 결과가 나쁘지 않은 현상을 몇 번 겪다 보니 거기에 안주하게 되어버렸다.
그런데 학년이 올라가니까 나는 가만히 있는데 남들은 공부를 엄청나게 열심히 하기 시작한다.
나 빼고 다 잘해
나는 코드를 잘 짜지는 못 짠다. 다만 좋아할 뿐이다. 그래서 딱히 노력이나 비용이 들지 않는다. 그게 유일한 장점이다. 그런데 이거 믿고 놀다가 종이에 연필로 쓰는 시험을 주루룩 망하기 시작했다. 나는 하기 싫은 것은 절대로 하지 않는데(그게 옳다고 자기합리화중이다. 옳은거면 좋겠다..) 책상에 앉아서 하는 공부는 영 하기가 싫다. 코드로 보는게 더 재미있는데 강의자료만 보고 컴퓨터도 없이 공부하려니 적성에 안 맞는 것이다. 아무래도 내가 조금 유아적인 마인드를 가지고 있는 것 같다. 사실 늘 인지는 하는데 이렇게 살아도 안 죽다보니 그대로 굳어져가고 있는 모양이다.
다른 사람들은 놀라운 인내력과 끈기를 가졌다. 시험 3주 전부터 공부를 시작하고, 시험 전날에는 밤도 샌다. 나는 스스로 동기를 부여하는 그 능력이 정말 진심으로 부럽다. 그게 안돼서 난 늘 과제를 마감일에 처리하면서 퀄리티를 잃고 고통을 얻는다.
마치며
요즘 1일 1커밋을 못하고 있다. 공부에 많은 에너지를 쏟지 못하고 있는데, 그렇다고 시간과 삶을 막 낭비한 것은 아니다. 정신건강에 투자중이다. 좀 쉬었다 가도 된다고 믿고 싶다.
다음 학기에는 다시 학업에 에너지를 쏟으려고 한다. 사실 공부만큼 좋은것도 없다. 잡념 없애주고, 아주 고수준의 기쁨을 제공하고, 남는 것도 많다. 공부도 하고 밀렸던 프로젝트도 진행해야겠다.
댓글