본문 바로가기

기타/객체지향의 탄생(2013)

객체지향의 탄생-올드스쿨/뉴 스쿨 프로그래밍

나는 20대 후반 어느날 비보이 배틀 영상을 TV로 본적이 있다. 하늘을 날라다니는 비보이들의 몸짓에서, 나는 인간이 신체의 자유를 얻고 날라다니는 모습이 바로 저런 모습이구나 하며 팬이 된적이 있다. 비보이 세계도 무술 처럼 여러 분파가 존재하는데, 나누는 분야중에 크게 올드스쿨과 뉴스쿨이라는 두가지 구분으로 분류한다.

 

올드스쿨은 정확한 설명은 아니지만, 최초에 비보이들의 무브가 탄생할때의 그 모습과 정신을 간직하며 그때의 무브와 기본에 충실한다는 의미와 비슷하다. 한마디로 옛것의 모습과 정신을 지키며 기본에 충실한다는 것이다. 반면에 뉴스쿨은 비보이들이 새롭게 창의적으로 개발한 새롭고 발전된 무브를 개발하고 닦는다고 말하는것과 비슷하다.

 

올드스쿨 뉴스쿨 하며 생각하다보니 문득 프로그래밍도 올드스쿨과 뉴스쿨 분위기가 있다는 생각이 들었다.

 

일단 나는 뉴스쿨스러운 개발자로 시작했다. 젊은 자바 진영에 속하면서 새로운 프레임워크 새로운 오픈소스에 관심이 많고 이런 기술들을 습득하기 위해 노력했다. 스프링 프레임워크, 스트럿츠, 하이버네이트 등의 프레임워크 기술 연마에 노력한다. 나 같은 뉴스쿨 개발자는 도구 활용기술에도 관심이 많다. 이클립스, Ant, SVN, JUnit, Trac 등을 골고루 활용하고 싶어한다. 개발자가 이런 기술 연마에 노력하지 않는 것은, 비보이라면 화려한 기술을 종종 뽐내야 할것인데 오직 서서 춤을 추겠다는 것과 같다.

 

2009년 내가 일했던 모 은행 IT 부서는 완전히 올드스쿨 진영이다. 여기 개발자 분들은 데이터베이스, 유닉스, C, vi, 배치쉘 등의 옛날부터 내려오는 옛스러운 기술에 익숙한 전문가이고, 이런 기술들이 바탕이 되서 거대한 시스템이 작동한다. 이곳에서 뉴스쿨 관련 기술은 중요하지 않거나 관심 밖이다. 사실 이런 올드스쿨 기술들은 오랜 역사속에 더욱 더 가다듬고 발전이 된 기술로 앞으로도 각종 시스템의 근본을 지킬 묵직하고 옛스러운 기술들이다. 이런 기술 연마에 노력하지 않는 것은 비보이가 가장 근본적인 음악을 타지 않고 기계 체조 하듯 기술만 뽐내는 것과 비슷하다.

 

당시 내가 근무했던 곳의 올드스쿨 개발자들이 하는 일중에 하나가 거대하고 중요한 금융 기간계 시스템의 배치를 운영하는 일을 한다.

 

"나 같은 개발자 들이 대낮에 바쁘다면 배치는 저녁부터 새벽을 지나 아침까지 복잡다단하게 거미줄처럼 얽혀서 돌아간다. 최초에 계정계에서 데이터를 가지고와 기초변환을 하고 또 어느 영어 약어쓰는 시스템에서 데이터 가져와 데이터 분할을 하고, 그 데이터로부터 또 다른 데이터를 만들어 내고, 우리 시스템에 맡게 데이터를 일부 변환도 하는 등 온갖 금융 관련 데이터들이 복잡한 데이터 이동 과 보정 단계를 거쳐 우리 시스템에 맞는 데이터들로 거듭난다. 여기 배치 작업은 마치 보이지 않는 거대한 데이터 제철소와 같다.

 

배치팀을 담당하는 개발자들은 나와 같은 보통 개발자와는 다소 틀린 일들을 한다. 일단 자바니 C니 이런 프로그래밍 언어를 다룰일이 거의 없고, 데이터베이스에 우선 능통해야 한다. 그리고 쉘 스크립트 작업에도 익숙해야 한다. 무엇보다 필요한 업무 요령은 필요한 데이터를 검색하고 통계내고 잘못된 데이터를 디버깅 하고 보정하는 일이다.

 

근데 내가 배치팀원이 하는 일들을 보고 아~ 이일을 내가 하면 정말 버거워 하겠구나~ 싶었던 것은 잘못된 데이터를 추출하고 보정하는 디버깅 작업들이 상당히 어렵다는 것이다. 내가 이곳에서 쿼리를 예전보단 많이 만지면서 느낀 것은 '쿼리'가 일반 프로그램 보다 디버깅 하기가 많이 힘들다는 느낌이 든다. 더구나 프로시듀어로 여러 쿼리가 뭉친 쿼리들은 디버깅 하기가 난감하다. 이 난감한 일들을 배치팀원들은 잘도 해낸다.

 

배치팀원들은 하루종일 데이터를 보며 데이터 보정과 배치의 속도 개선에 전념한다. 혹시 밤에 배치 작업중 장애가 발생하면 퇴근해서도 전화를 받고 장애 복구를 해야 한다. 이 광경들은 일반 프로그래머와는 다소 틀린 모습들이라 생소했다. 나보고 배치팀원이 되라고 하면 고개를 절래 절래 흔들 것 같다."

 

나를 굳이 말하면 뉴스쿨스러운 개발자 일것이다라고 말하겠지만, 올드스쿨스러운 기술도 관심을 갖고 있고 좋아한다. 데이터베이스는 내가 부족한 기술이었기 때문에 이참에 이 올드스쿨 진영에서 잘 배워 다시 뉴스쿨 진영으로 나아갈 것이다. 이곳의(2009년 당시 모 은행 전산실) 올드스쿨 개발자 분들도 그 오래된 기술의 역사만큼 많이 알고 있어 많이 배운다.

 

다만 종종 뉴스쿨 스러운 환경이 그리울 때가 있다. 예를 들어 내가 이클립스에 마일린등 셋팅하고 개발환경을 운용하는데 종종 이클립스가 버벅되서 많이 느려질때, 언젠가 올드스쿨 개발자 과장님이 '왜 이클립스를 쓰는지..이해가 안될때가 있다..' 라고 얘기하신적이 있다. 뉴스쿨 개발자들이라면 어이없어 하는 얘기이다.

 

여기 근무지 말고 당시 내가 속한 회사 사람들은 이곳의 올드스쿨 개발자와는 반대로 완전히 뉴스쿨 계의 최고 고수들로 이루어져있다. 언젠가 내가 속한 회사의 뉴스쿨 젊은 개발자 과장님이 오셔서 내일을 도와준적이 있었다. 이클립스 같이 다루고, Ant 같이 만지고, 자바 진영의 여러 오픈소스 기술 얘기를 나누는데 어찌나 고향에 온것 갖고, 어찌나 반갑던지 이렇게 잘통하는 개발자와 계속 같이 일하고 싶다는 생각이 많이 들었다.

 

일단 결론은 올드스쿨이던 뉴스쿨이던 골고루 열심히 하고 그 다음 특화 분야를 잡아 계속 발전시켜야 할 것이다. 그 결과, 신체의 자유를 얻은 비보이들의 몸짓처럼 즐거운 코딩이 언제나 나와 그대와 함께하기를~ 피스~

 

덧 ) 이 객체지향의 탄생 원고는 제가 책으로 내려다가 일단 잘 안되었는데요. 이유는 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다.등 입니다. 그래도 원고를 일단 블로그에 몽땅 풀어보고 언젠가 제대로 교정해서 다시 도전할 생각입니다. 이점을 감안해서 읽고 객체지향을 이해하는데 도움이 되셨으면 좋겠습니다. 의견도 주셨으면 좋겠습니다. 원고 조금만 교정하면 괜찮을것 같은 출판사 관계자분의 피드백도 환영합니다.