학교에서 배운 지식은 죽은 지식이다??

사용자 삽입 이미지  얼마전에 읽은 ‘나는 프로그래머다’라는 책에서 임베디드 프로그래머 유영창님의 파트에서 ‘학교에서 배운 지식은 죽은 지식이 아니다’라는 제목의 글이 있었다.

  우선 ‘나는 프로그래머다’라는 책에 대해서 간략하게 설명하자면 같은 IT분야이지만 서로 다른 분야에 있는 7명의 프로그래머가 모여서 엮은 책입니다. ‘임백준의 소프트웨어 산책’의 저자인 임백준씨와 임베디드 프로그래머 유영창씨, SI분야의 원은희씨, 게임프로그래머 김용준씨, 기업 전산실에 대해서 글을 쓰신 김종호씨, 데이터 아키텍트에 대한 글을 쓰신 이춘식씨 그리고 OKJSP사이트의 운영자이자 웹프로그래머이신 허광남씨. 이렇게 같으면서도 다른 분야의 7명의 IT인의 글이 실려있는 책이다.

  프로그래머를 꿈꾸는 한 명의 후배로서 다양한 분야의 선배님들의 글을 참 재미있게 읽었고 또한 좋은 말들은 마음속에 새기며 즐겁게 책을 읽을 수 있었다. 현업에서 뛰고 있는 프로그래머들이 어떤 일을 하며 어떻게 생활하며, 어떤 생각을 가지고 살아가는지도 무척 궁금했었는데 어렴풋이나마 느낄 수도 있게 해 주었던 책이었다.

  오늘 쓰고자 하는 것은 임베디드프로그래머 유영창씨의 글 중에 있었던 제목인 ‘학교에서 배운 지식은 죽은 지식이 아니다’라는 것에 대한 이야기이다.

  나 역시 학교에서 배운 지식은 죽은 지식이 아니라고 생각하고 있다. 다른 분야는 잘 모르겠지만 전산학과에서 만큼은 확실히 진실이다. 친구들이나 전산학과에 있는 몇몇 사람들을 보면서 참 자주 들었던 이야기가 “학교에서 배운건 참 쓸데없다”라는 뉘앙스의 이야기였다. 하지만 난 그렇게 생각하질 않는걸.

  대부분의 학교에서 비슷 하겠지만 전산학과에선 참 많은 것들을 배운다. 기본적으로 프로그래밍 언어부터 데이터베이스, 자료구조, 알고리즘, 컴파일러, 운영체제, 소프트웨어 공학, 논리회로, 인공지능 등등 참 배우는 것도 많다.(전산수학은 그냥 뺐습니다. 분명 필요한 과목이지만 전 싫어요..ㅠㅠ)

  모두 중요한 과목인데 프로그래밍언어 외의 각각 과목은 ‘도대체 이걸 어디다 써먹는걸까?’, ‘써먹을데는 있는걸까?’, ‘이건 그냥 고리타분한 이론들이잖아.’ 라는 생각을 갖게 만들기 일수이다.

  Automata, Hash, List, SortAlgorithm, Tree.. 뭐 이런걸 알아다가 어디다 쓸까. 하지만 분명 쓰일 일이 있고 알아야 할 때가 있다. 전공을 살려서 직업을 선택하게 된다면 말이다. 평생 알 필요 없이 잘만 살 수도 있으나 내가 생각하기엔 알면 편하고 알면 좋고, 알면 모르는 사람보다 훨씬(!) 유리하다.

  간단하게 자바의 ArrayList를 생각해 보자. 내부적으로는 리스트구조로 만들어 져 있다는 이야기를 들은적이 있다. 사실 나도 자세하게 공부하진 않아서 깊은 지식까지는 없지만 일단 예로 들어보고자 한다. 이미 만들어져 있는 API이니 우리는 그냥 대충 이해하고서도 충분히 프로그램을 짤 수 있고 지장은 없다. 하지만 필요에 의해서 ArrayList를 확장(extend)해서 사용하게 되거나 어쩔 수 없는 상황에 의해서 ArrayList처럼 리스트구조로 된 업무에 필요한 API를 만들어서 사용해야 할 일이 있다고 생각해보자. 그럼 그 때가 되어서 대학시절 배웠던 자료구조 책을 찾아 가면서 다시 공부하고 뒤져가면서 만들텐가?

  물론 필요하다면 다시 책을 찾고 공부를 하면서 만들어야 하겠지만 대학시절 관심있게 공부했던 상태에서 책을 찾는것과 전혀 관심을 두지 않아 아무것도 모르는 상태에서 책을 뒤지는 것과 어느 쪽이 유리할까?

  자료구조 뿐만 아니라 컴파일러, 알고리즘도 프로그래밍에 대해서 깊게 공부해야 할 수록 많은 도움이 된다. 여러 가지를 공부함에 있어서 학교에서 배운 지식이 쓸데 없는 것이 아니라는 것을 느끼며 당시 수업을 들었던 것이 지금 공부하는 것의 이해에 많은 도움이 된다는 것을 알아가고 있다. 가끔은 당시에 대충 수업을 들었던 것에 대한 후회를 일으키기도 한다.

  아는 것도 적고 글 재주도 없어서 이렇게 밖에 설명을 못하겠지만 ‘나는 프로그래머다’라는 책을 읽어보면 학교에서 배운 지식은 죽은 지식이 아니라는 것을 좀 더 와닿게 느낄 것이다. 아무래도 나 보다는 더 많은 것들을 겪은 선배들의 글이니까 말이다.

  아, 관련해서 또 생각나는 이야기가 게임프로그래머 김용준씨의 글을 읽어보면 게임프로그래밍에서는 자료구조를 정말 잘 알아야 한다고 합니다. 자료구조가 필요한게 게임프로그래밍 뿐이겠냐만은 게임프로그래밍에선 더 중요한가 봅니다.S

Update 2007/8/22
곰곰히 생각해보니 가장 많이 써먹는 자료구조로 스택하고 큐가 있네요. 이걸 예로 들었으면 더 좋았을껄..;;;

Update 2007/8/23
본문에 자바의 컬렉션프레임워크 중 하나인 ArrayList를 가지고 예를 만들어 적었었으나 제가 잘못 알고 있는 부분이 있는 것 같습니다. 자세하게 설명해 주실 분 안계신가요?ㅠㅠ 지식이 얕으니 글쓰기가 항상 조심스럽네요^^ㅋ