내가 프로그래밍이란걸 접한지 년도로만 15년이 되었다.
따지고 보면 어느새 인생의 반을 프로그래밍과 같이 지내온 셈이 되었다.
컴퓨터라는 내 인생의 큰 동반자와 만난지는 19년정도(?) 된것 같다.

처음 내 친구들이 그랬듯이 처음 컴퓨터는 나에겐 오락기와 같았다.
쉴세없이 유닛을 점프(jump)하기 위해서 스페이스바를 두들겨 고장난 스페이스바를 사용해야만 했었다.
당시 "테트리스"나 "초롱이의 모험"은 나에게 새로운 세상을 보여주었다.
그리고, 또하나의 사건. "PCtools"와의 만남. "GW basic"과의 만남.
그건 나에게 있어 인생을 송두리채 바꾸어놓았다.

중2땐 어머니께서 컴퓨터를 못하게 하기 위해서 베란다에 컴퓨터를 분해해놓으셨고,
난 그래도 컴퓨터를 하기 위해서 추위를 벌벌떨며, 전기선만 방안으로 넣어 몰래 컴퓨터를 하곤했다.
그때 난 그 베란다에서 오락이 아닌, PCtools와 GW basic을 했었다.

당시 한글 2.0의 모습을 따기 위해서 GW basic으로 메뉴바를 만들어 20000라인의 코드를 짰었다.
(물론, 한줄에 1라인은 아니다. 기본적으로 GW basic의 라인번호는 10씩 증가했으며, 왠만한 함수 성격의
코드는 훨씬 더 큰 크기인 100이나 1000의 단위로 증가했었다.)
결국 12MHz의 CPU와 128kbytes 정도의 RAM을 가진 당시 나의 첫 컴퓨터는 "Out of Memory"를 내며 죽어버렸고, 참담한 경험을 했었다.

그러나, 그런 나의 경험은 그 뒤 "C"언어의 기반이 되었고, 현재의 나를 만들었다.

대학교를 입학하여 정말 나와 비슷한 수준의 친구들을 만났을때,
우리는 과제를 하기 위해서 (물론, 주어진 과제를 넘어서 그 이상의 것을 만들기 위해서)
참 많은 밤을 지새우곤 했었다.

그 과정에서 참 허무하게 힘을 빼곤 했던 것이 바로 소위 "뻘짓"이였다.

int main()
{

    char* str;
    strcpy(str, "test");
    return 0;
}
라든가,

int main()
{
   char str[10];
    strcpy(str, "0123456789");
    return 0;
}
과 같은 류의 버그는 당시 우리를 매우 괴롭혔다.

만일 당신이 지금 위의 코드를 보고도 무엇이 문제인지를 모른다면... 조금 더 해커(hacker)의 마인드를 가지기를 권한다.

아무튼, 위의 사소한 버그를 덕분에(?) 근 이틀을 밤새며 고생을 했던 적도 있다.
(물론, 위와 동일한 code는 아니다. 상당히 복잡했으며, 따라가기도 버겨웠었다. 지금은 아니지만... ^^)

이틀을 밤새고도 무엇이 문제인지 몰라 허무해 할 무렵, 우연히 오류가 나지 않았고 책에서 원인을 찾았을때...
우리는 참 많이도 자신을 허무하게 느꼈었다.

도대체 우린 그동안 무얼한 것인가? 저런 사소한 것을 몰랐던 것인가?
우린 과연 이길로 성공할 수 있을까?

그러나, 지금. 그때의 그 경험들은 나의 든든한 밑거름이 되어 주고 있다.
그 뒤로 우리는 절대 위와 같은 버그를 만들지 않았으며, memory의 구조, stack과 heap의 차이, strcpy의 맹점 등등.
수업시간에 말로서는 절대 배울수 없는 것들을 참 많이 느끼고 배우게 되었다.
동기들... 아니, 선배들마저도 하는 흔한 실수는 우리에게는 더이상 없었다.



지금 나는 한 IT 기업에서 연구원으로 일을 하고 있다.
처음 대학교에 갔을때 느꼈던것은 나와 같은 실력의 사람들이 많다는 것이였고, 더 대단한 사람들도 많다는 것이였다.
그리고, 처음 취업을 한 지금도 같은 것을 느끼고 있다.
아니, 오히려 더 하다. 수년에서 십수년간의 경험을 바탕으로 한 엘리트 들이 모인 곳이다.
그들과 회의나 세미나를 할때엔 내머리가 돌인것 같은 생각이 든적도 많다.

그러나, 그 가운데에서 살아남을 수 있는 것은 어릴적의 경험들이였다.
이제야 난 알것 같다.
그때 그런 일들은 절대 뻘짓이 아니였음을...

프로그래머에겐 "뻘짓"이란 없다.
그 무엇과도 바꿀수 없는 경험만이 있을뿐...

만약 지금 당신이 프로그래밍을 공부하고 있는 사람이라면,
만약 지금 당신이 프로그래밍을 잘하고 싶어하는 사람이라면,
"뻘짓"을 두려워 하지 말라. 그것은 단시간에 될 수 있는것이 아니며, 든든한 당신의 밑거름이 될것이다.

그것은 남들이 책을 찾아보는 시간에, 당신은 "아, 이거"하며 넘어갈 수 있게 해줄것이며,
누군가 장황하게 멋진 이론을 펼칠때, 당신에겐 그의 오류를 발견하게 해줄 것이다.

그것이... 경험이고, "뻘짓"이다.
그 무엇과도 바꿀수 없는...



2008.11.29    hackereyes.


+ Recent posts