본문 바로가기
Monologue

주소록 프로그램에 대한 고찰

by BITINITIALIZE 2008. 6. 20.
728x90
사용자 삽입 이미지


5만원을 받고 만들어준 총 소요시간 3시간이 걸린 주소록 프로그램이다.
이것은 학교 레포트이다.

고작 학교 레포트에 오피스2007스타일의 툴바라....교수님의 놀란 표정이 상상이 되는군...ㅡㅡ;

프로그래밍을 전공한 사람이라면 누구나 한번쯤 전공 수업시간에 레포트 혹은
기말고사로 주소록 프로그램을 만들어 본 기억이 있을 것이다.

나 또한 대학교때 교재 과정상 주소록이 있어서 주소록을 만들긴 했지만 지금 이보다
잘 만들지는 않았을 것이다.
모든 프로그래밍 수업을 A+받았지만 대학교 시절 내가 만든 주소록은 지금보다 허접했다ㅡㅡ;

모 커뮤니티 사이트에서 급하다며 올라온 레포트 요청..
평소라면 당연히 쌩까고 즐하겠지만 이상하게도 글을 읽고 왠지 해주고 싶은 마음이 들었다.

전화와 메일로 요구사항을 주고 받으며 하는 말이 군대를 갔다와서 VC++을 다시 시작하려니
너무 깜깜해서 요청을 한 것이라고 한다. 예전의 내 생각도 들고 그 심정 백번 이해한다.
따라서 어차피 해줄거면 제대로 해주기로 마음먹고 해준건데 아까 실행 파일을 보내준 결과
너무 잘되었다고 오히려 걱정을 하여 교수님의 질문에 따른 예상 답변까지 일러준 후에야
안심이 되는 모양이었다.

크크크 난 정말 나쁜놈이다 ㅡㅡ;

아무튼 레포트는 혼자서의 힘으로 하는 것이 좋다.
하고자 하는 열정은 있지만 때로는 실력에 좌절할 때도 있고 극복을 해야할 때도 있다.
레포트와 같은 것은 차후에 다가올 도전에 대한 예행연습이라고 생각하는 것이 좋다.

내가 고등학교 때 좋아했던 인텐드라는 뛰어난 개발자이자 해커는

"왜 비밀스러워야 할 해킹 기술을 그렇게 쉽게 가르쳐 주는가?" 라는 질문에
"소도 비빌 언덕이 있어야 한다" 고 답했다.

열정과 의욕도 중요하지만 때로는 타인의 도움을 받는 것도 좋다.

내가 하고 싶은 이야기는 이제 주소록 프로그램과 식상한 주제는 버려야 한다는 것이다.

기가를 넘어 테라로 넘어가고 하나의 코어로도 부족해서 듀얼코어에 쿼드코어까지 사용할
정도로 기술이 발전된 세상에서 고작 주소록 프로그램이라니....어느 누가 만들고 싶어하나?

하나의 레포트를 하고 하나의 시험을 보더라도 학생들에게 정말 흥미를 불러일으키고
재미있는 주제를 사용해서 자발적 참여를 할 수 있도록 해야 한다.

메신저, P2P, 웹하드, 동영상 플레이어와 같이 학생들이 좋아할 만한 내용을 가지고
수업을 해야한다고 생각한다.

학생들도 다양한 소프트웨어의 사용자로서 눈이 높아지고 있는데 고작 학교에서 배우는거라곤
주소록 프로그램이니 이딴걸 배워서 언제 곰플레이어니 알송이니 만들겠냐 라는 생각이
들 것이고 또한 그렇기 때문에 학교를 졸업해도 실력은 밑바닥이고 학원들 들어가겠다고
설치는 것이다.

물론 메신저, P2P, 웹하드, 동영상 플레이어 모두 쉽게 구현할 수 없는 것들이며 기본이
충실해야하고 다양한 테크닉을 필요로 하는 분야들이다.
주소록을 만들어오라는것도 MS의 아웃룩이나 오거나이저 수준까지 원하는건 아니질 않나.
그러니 적당한 맛보기 식으로 또한 완성되지 않더라도 학생들이 공부하고 싶어지도록
열정을 불태울 수 있도록 동기를 부여해주는 것도 필요하다는 말이다.

그리고 또 하나, 내 주변의 사람들도 몇 명있고 대학교를 졸업해도 제대로 된
응용 프로그램 하나 만들지 못하여 학교에서 배운게 없다면서 학원을 가겠다고 한다.
학원에 입학을 하니 당연히 실무적인 프로젝트만 하게되니까 아 역시 학원을 다녀야 되는구나..
대학교에선 대체 뭘 가르쳐준거야 라는 멍청한 생각을 하게 되는 것도 한심하다.

세상의 그 어느 대학교에서도 곰플레이어나 오피스, 한글2008 만드는 방법을 알려주진 않는다.
프로그램의 모든 분야는 기본이 충실해야 가능하기 때문에 그 기본을 알려주는것 뿐이다.
결국 쓸만한 Application은 직접 만들어야 한다.

당장 학원에서 메신저 만든다니까 신나보이고 뭔가 제대로 시작하는 것처럼 느끼겠지만
어쨌든 기본이 부족하면 당장 내가 입력한 이 빌어먹을 스트링을 어떻게 쪼개야할지 스트링을
쪼개고 합치고 길이를 구하고 욕을 쓰지 못하도록 금칙어를 설정하고 모든 분야에서
어려움을 겪을 것이다.

메신저에 파일보내기를 넣자고 명세서를 만들었으니 뭔가 뿌듯하고 쓸모있어 보이겠지만
어쨌든 기본이 부족하면 당장 내가 보내고자 하는 이 파일을 어떻게 열고 읽고서 메모리에
담고 전송한 다음에 받은 쪽에서는 어떻게 파일을 만들고 또한 중간에서 연결이 끊어지면
어떻게 이어서 전송해야 할지 파일의 포인터는 어떻게 이동해야 할지 빌어먹을 이 파일이
일본어와 중국어, 듣도보도 못한 언어로 되어있다면 젠장맞을 유니코드는 또 무엇인지
TCHAR와 char *, LPSTR, LPCTSTR, LPWSTR 기타 등등은 무엇인지 알아야 하고
이 엿같은 윈도우의 스트링 문화를 익히기 전까지는 어려움을 겪을 것이다.

웹하드를 만들자고 팀원끼리 결정했으니 뛰어난 개발자라도 된 듯이 느끼겠지만
어쨌든 기본이 부족하면 당장 10기가 바이트나 되는 거대한 괴물같은 파일을 대체 어떻게
열고 파일 크기를 구해야 할지부터가 난감할 것이며 로그인을 하려면 암호화를 해야 하는데
스트링을 암호화하고 어디에 저장할 것인지 안정적으로 빠르게 전송하려면 어떠한
소켓 모델이 좋은지 블럭킹과 언블럭킹 소켓에 대해서도 배워야 하며 검색과 친구추가,
쪽지보내기등 많은 부분의 난관이 있고 어려움을 겪을 것이다.

이처럼 프로그래밍의 모든 것은 기본이 충실하지 않으면 지금 당장 컴퓨터 앞에서
코딩을 하고자 에디터를 실행한다고 해도 키보드 위에서 옴짝달짝도 할 수가 없게된다.
바로 이 기본에 대한 것을 대학교 시절 배워야 하고 또 스스로 공부해야 한다.

어느 누구도 쉽게 알려주지 않는다.
누군가에게 도움을 받고 조언을 받는다는 것은 그 사람의 경험이 있기 때문에 가능한 것이다.
경험은 돈을 주고 살 수 없는 것들이다.

비록 사정이 안타까워서 돈을 받고 레포트를 해줬기 때문에 받는 그 사람은 나의 경험이 담긴
소스코드를 갖게 되겠지만 내가 그랬듯이 피나는 노력이 없이는 절대로 똑같은 다른 하나를
만들어 낼 수는 없을 것이다.


728x90

댓글