팀으로써의 작업이 그리운 때.

 작년부터 줄곧 미래를 위해 영어공부를 하고있는 것 같다. 이렇다 보니 개인적으론 개발을 전혀 못하고 있다. 아니, 이런 현상은 회사를 그만둔(정확히 말하면 병역특례 소집해제를 한) 2년 전부터 쭉 이어지고 있다. 근 2년동안 공부 아닌 공부(즉 대충)를 하며 내가 찾은 것은 컴퓨터 과학적인 학문보다는 공학적인, 즉 아키텍처가 더 내게 잘 맞는다는 것이다. 그것도 심도있는 아키텍처보다는 러프한(대규모) 아키텍처.

 그래서 2년동안 내가 공부하고 싶은 분야는 찾았다. 나름대로 OS, Linux System, Computer Architecture 등의 기본 과목을 들으며 어느정도 기본적 아키텍처 지식도 확립했다. 다 좋은데 요즘 정말 내가 개발을 하고 있는 것은 맞는 것일까 라는 의문이 든다.

 컴퓨터 공학부의 특성상 한학기에 많게는 세개 정도의 프로젝트가 주어진다. 지금까지 진행했던 SW개발 프로젝트가 다섯개 정도. 중요한 사실은 이중 세개가 분명 팀 작업임에도 불구하고 나 혼자(거의) 진행했다는 점이다.

 사실 복학 후 내가 수업을 같이 들었던 후배들은 대부분 컴퓨터에 대해 흥미가 없었고, 어떤 언어에 대한 깊이있는 지식도 떨어졌다. 그러니 학교에서 자바를 배우는 SW개발 수업 같은 경우 예전엔 Swing, 요즘엔 그냥 안드로이드 정도만 요구한다. 정말 아주 기본적인 정도.

 그런데 내가 복학 후 처음 시도했던 프로젝트는 물론 Swing으로 구현했던 프로젝트이긴 한데 나름대로 SVN을 사용해서 넷빈에서 UI작업 후 eclipse로 클라이언트 작업, 그리고 자바 소켓 서버를 만들었고, 클라이언트에서는 특이점을 주기 위해 Facebook으로 소셜 연동을 했다. Native 자바에서는 웹과 연동할 수 없어서 DJ Project의 Native-Swing (http://djproject.sourceforge.net/ns/ )을 이용해서 브라우저를 띄워서 OAuth처리를 한 후 토큰을 Swing클라이언트로 넘겨줬다. 나름 Hudson으로 CI로 구축하고, JNLP로 배포한 이후 Facebook Apps으로 학과 친구들의 설치를 유도했다. (물론 이과정에서 소켓 서버가 너무나도 느렸기 때문에 앞으로는 게임개발에 소켓서버는 좀 아니라는 생각이 들기도..)


 내가 너무 큰 것을 기대했던가, 당연한 건지는 몰라도 경험이 없던 21살의 후배들은 거의 따라오지 못했다. SVN을 설명하는 데에만 3일 정도가 소요되었고, Swing 아키텍처는 커녕 레이아웃과 객체에 대한 이해조차 부족했다. 버튼 두 세개 정도와 몇몇 컴포넌트를 올리는 데에만 2~3주 가량 소요되었고 이후에는 UI개발쪽은 거의 지쳐서 하려고 하지 않았다. 당연히 개발 이후 나몰라라 하는 경향이 이어졌고, 2개월의 프로젝트에서 UI만 한달가량 소요되니 클라이언트 개발자들 역시 지쳐서 제대로 하지 못했다. 결론은 나 혼자 다 개발했다.

 2년간 거의 이런 현상이었다. 그리고, 지칠대로 지쳤다. 처음에야 “슈퍼개발자” 즉 풀스택 개발자를 지향하며 뭐든지 다 하려고 했지만 지금와서는 그때 그 시절, 그러니깐 회사에서 나름대로 프로그래머들과 일했을 때가 정말로 그립다. 조금이라도 프로그래밍에 대한 지식이 있는 사람들과 일한다는 자체가 얼마나 소중한 것인지 이제와서야 느낀다.

 특히나 요즘 다시금 협업에 대한 나의 관심사가 높아지고 있는데, 이런 잘 설계된 협업 시스템이 있는들 무얼 하겠는가, 팀으로써 작업을 해야지 의미가 있는 것이 아닐까. 그래서 이번학년도에 있는 프로젝트는 최대한 “분업“을 하려고 한다. 실무 경험도 오래되었고, 그러니 이제는 PL+PM으로써의 역량을 다지기 위해 Agile프로세스와 Requirement Engineering에 주목하려고 한다. 그리고 Software Engineering시간에 배운 것들을 다시금 개발 프로세스에 적용시키고자 한다. 무엇보다 테스트 주도 개발을 적용하고 SW가 커짐에 따라 최대한 버그 없는 개발을 하기 위해 노력해야겠다.

 아무런 설계 없이 무턱대로 IDE만 켜고 개발을 하려고 노력했던 지난 2년간의 행동이 참으로 허무하다. 어쨌든, 지금에서라도 올바른 방법론을 개발에 적용하도록 노력해야겠다.