오픈소스의 함정

 나는 사실 나태한 나 자신이 싫다. 그런데 가끔 나 자신을 살펴보면 이런 나태한 나 자신이 싫어서일까, 아니면 어떠한 이유때문인지는 몰라도 어디 한 부분에 빠져들게 되면 뒤도 안돌아보고 그것에만 몰입하는 경향이 있다.

 최근에 나는 잠깐 꾸준히 했던 블로깅이나 개발일기, 영어일기도 안쓰고 약속도 안잡고 게다가 시험도 대충보고 숙제까지 재껴가면서 몰입한 것이 있었다. 다름아닌 회사 일이다.

 여기서 잠깐 회사 일에 대해 개발자 적인 관점에서 설명하자면, 2005년도에 서블릿을 사용하지 않은 JAVA(DAO)+JSP+MySQL로 개발된 회사 인트라넷 사이트를 Spring 3.1 + MyBatis + Velocity + jQuery +YUI 의 프레임워크 및 라이브러리를 사용해서 바꾸는 작업이다. 페이지 본 수는 약 700부 정도, 클래스 파일만 75개에 각각이 model과 dao를 가지고 있다.

 문제는 나는 이 작업이 굳이 필요가 없는데도 하려고 했던 것이다. 회사에서 당장 원하는 기능은 이런 것이 아니다. 하지만 나는 매번 끊기는 DB Pool 방식이 싫었고 자바스크립트와 폼으로 도배된 사이트가 싫었다. 그래서 Spring 을 도입하려 하다 보니 지금까지 5주를 연신 작업했는데도 불구하고 진척이 없다. 시스템적인 변경이 있었지만 추가 요구사항은 전혀 개발된 것이 없다. 그것이 가장 큰 함정이다.

 나는 그런 함정을 모르고 있었다. 단지 오픈소스의 늪에 빠져서는 새로 기술을 배운다는 자체에 즐거워하고 있었다. 당장 내가 어떤 부분에서 누수를 일으키고 있는지도 모르지만 일단 컨버팅 해보려고 했다. 하지만 작업은 끝이 보이지 않는다. 75개의 클래스 파일 중 지금까지 약 25개의 클래스를 단지 mybatis의 xml과 mapper로 분리시키고 Spring에서 service를 겨우 만들었을 뿐이다. 아직 어떠한 총제적인 테스트를 거친 것도 아니고, 분명 어딘가에서는 심지어 쿼리 오류가 있을 수도 있다.

 그리고 나는 지금 가만히 생각해 보았다. 오늘은 심지어 그렇게 꼬박꼬박 가던 학원도 안가고 새벽 2시부터 계속 개발에 매진했다. 학교 쉬는시간에도, 화장실에서도 계속 개발했다. 그래 개발하는건 좋다 이거다. 하지만 결론적으로는 이건 아무리 생각해도 “자기만족” 밖에 되지 않는다. 물론 구세대 기술이긴 하지만 “당장”은 멀쩡한 사이트를 왜 애써서 버리려고 이리 노력하는가? 대체 뭐가 불만족이길래.. 그리고 더 중요한 것은 지금 나는 어떠한 다른 일도 못하고 있다는 것이다. 

 그래서 오늘 드디어 결심을 했다. 이러한 시스템을 싹다 바꿀 정도의 작업은 천천히 혼자서 진행하고 대외적인 작업을 우선 처리하자고. 그래 더 중요한 작업에 집중해야 한다. 당장 이러한 시스템 개선 작업은 방학때 해도 충분하다. 아니, 오히려 그때 하면 하루종일 개발만 할 수 있어서 더욱 더 효율이 늘 것이다.

 학생의 본분은 무엇인가? 바로 공부이다. 그런데 나는 지금까지 스프링 공부를 하면서, 그리고 신규 시스템 개선 작업을 하면서 배운 “학문적”인 것은 무엇인가, 물론 없다고 말할 수는 없다. 그런데 이러한 오픈소스를 다뤄오면서 내가 크게 느끼는 점은 나는 프로그래밍의 학문적 본질을 공부한 것이 아니라 오픈소스의 “사용법” 에 대해서 배웠다는 생각이 든다.

( 개발자들의 대부분의 야근은 과다 업무보다는 기술에 대한 욕심 혹은 잘못된 방향으로의 개발에서 발생한다고 생각한다. )

 아마 비단 나같은 개발자 뿐만 아니라 이 세상에는 많은 사람들이 욕심때문에 즐거워 하기도 괴로워 하기도 할 것이다. 일이 많다 할 수도 있지만 사실 따지고 보면 모든 것은 자신의 선택의 결과다. 물론 먹고살기위해 어쩔 수 없이 야근을 하거나 힘들게 무리해서 일하는 사람도 있겠지만 말이다.

 어쨌든 나는 다시 본분을 지키기 위해 노력해야겠다. 학생으로써 내가 해야 할 일이 있고 하지 말아야 할 일이 있는 법이다. 항상 내가 누군가가 그랬듯이, 일의 우선순위를 잘 생각하면서 더 나아가 삶의 우선순위를 잘 생각하면서 일을 진행해야겠다.