작은 벤처기업에서 다닐때는 느끼지 못했지만, 개발자들의 협업이 중요시 되는 규모의 회사에 와서 어떻게 하면 더 빠르고 품질이 높은 소프트웨어를 만들까 고민했던 적이 있었다. 당시에 유행했던 익스트림 프로그래밍(XP) 혹은 애자일 방법론을 도입 하기도 하고 다양한 개발 지원 도구를 적용시켜 보기도 했었다.

특히, 오픈 소스 개발 커뮤니티에 참여해서 수백명의 공동 개발 프로젝트에 몸을 담고 있다보니 서당개 삼년이면 풍월을 읊는다고 S/W 개발 프로세스의 중요성을 어렴풋이 알게 된듯 하다. S/W 복잡도가 증가함에 따라 더 효율적인 개발을 할 수 있도록 만들어진 학문이 '소프트웨어 공학'이다.

사용자 삽입 이미지

컴퓨터 전공자는 학부 3학년 무렴 한과목씩 의례적으로 개설되어 있고 들어보면 산업 공학의 개발 공정과 엇비슷한 이 영역은 마치 개발자에게 큰 부담을 지우는 것처럼 보이기 일쑤다. 그도 그럴것이 회사에 들어와 보면 SW 공학은 산출물과 문서화라는 것으로 개발자를 얽매고 있기 때문일 게다. 게다가 CMMI 라고 불리는 아주 복잡한 프로세스 때문에 SI 업체나 연구 개발 프로젝트에서는 개발 보다 CMMI 준수에 더 많은 리소스가 든다는 불평을 듣는다.

개발자에게 소프트웨어 공학은 뭔가 불편한 그런 것이다.

하지만, 소프트웨어 공학은 개발자들이 삽질하지 않고 더 효율적으로 개발하도록 도와 주는 도구가 되어야 한다. 문제는 국내에 그런 도움을 줄 S/W 공학자들이 잘 없다보니 인식의 전환이 잘 이루어지지 않고 있는 것이다. 솔직히 아직도 SW 개발 시 기본적인 도구인 버그 트래커와 소스 콘트롤을 사용하지도 않으면서 CMMI 같은 걸 적용한다는 데를 본적이 있다.

실제 사용한다고 해도 기본적인 지식도 잘 모르는 경우도 많다. 예를 들면, 버그 트래커와 소스콘트롤 로그는 서로 정확히 일치 했을 때 유용하다. 문제점을 해결한 커밋용 패치를 코드 리뷰하고 이를  커밋 로그를 통해 처리할 필요가 있다. 게다가 소스 콘트롤의 Branch와 Merge 기능을 멋지게 사용하는 방법도 아직 모르는 사용이 많다.

사용자 삽입 이미지
최근 나의 절칠한 친구이자 연구 토론자인 홍콩과기대 김성훈 교수가 MIT 포닥을 마치고 근 8년 만에 귀국해서 한국에 머무르고 있다. 1995년에 학부생으로 서로 만났던 인연이 이어져 2005년에 미국에서 봤을 때 향후 한국에서 SW 공학에 대한 전망에 대해 토론을 한적이 있었다.

당시 XP와 애자일이 국내 인기를 끌고 있었던 때인데다 조엘 스폴스키와 맥코넬이나 켄트백의 책이 인기를 끌고 있었기 때문에 한국에서도 앞으로 S/W 공학에 대한 관심이 늘것이라고 판단했다. 문제는 기업의 요구가 있어야 한다는 점이었다. 물론 경영자의 요구가 아닌 개발자의 요구 말이다.

김성훈 교수는 기업에서도 근무한 경험이 있어서 소프트웨어 개발에서 개발자들의 요구를 연구에 접목하는 데 탁월한 능력을 발휘한다. 현재, 구글과 야후 같은 글로벌 기업과 일하고 있기도 하지만 그와 토론을 하다 보면 즉각 연구 주제를 끌어내기도 한다. 연구와 실용이 만나는 순간이다.

그는 자동 버그 검출 및 해결에 관심을 갖고 주로 오픈 소스  프로젝트를 대상으로  연구를 진행해 왔다. 그의 연구 결과에 따르면, 오픈 소스 프로젝트의 버그 검출율을 매우 낮아 높은 코드 품질을 유지한다고 한다. 따라서 관심사는 기업 내 소스 코드와 버그의 경우 어떤지에 대한 것인데, 실제 기업에서 가장 기본 데이터에 속하는 버그트래커와 소스콘트롤을 적절히 사용하는 예가 드물어 애로를 겪고 있기도 한다. 이런 부분에 도움을 줄 사람이라면  그의 학생이 되어도 좋겠다.

사용자 삽입 이미지
다행인 것은 국내에도 S/W 공학자들 중에 개발자들과 실제로 호흡하려는 움직임이 있다는 것이다. 최근 안랩의 김익환 부사장님과 소프트웨어 개발의 모든것이라는 책을 집필한 전규현 PM의 경우 소프트웨어 개발에 대한 팀블로그 운영을 시작했다. 김성훈 박사도 나의 조언을 받아들여(?) 소프트웨어 스토리라는 블로그를 시작했다. 두 블로그  모두 글 갯수는 아직 몇 개 안되지만 하나 하나가 정말 읽어볼 만하다.

물론 애자일 전도사이신 김창준님의 블로그인 애자일 이야기에서는 좀 더 혁신적이고 실험적인 협업 방법 및 커뮤니케이션이 실험되고 있기도 하다.

이런 분들의 노력으로 인해 앞으로 소프트웨어 공학이 개발자에게 더욱 편한 것으로 다가왔으면 좋겠다. 제가 잘 모르는 좋은 블로그가 있으면 추천해 주시면 좋겠다.
Creative Commons License 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 라이센스에 따라 이용하실 수 있습니다.