최근 개발자 몇 명을 만나보고 정리해보는 반면교사의 시간이다.
1. 코드의 지나친 재활용
자기가 온전히 이해하고 짠 좋은 코드의 재활용을 의미하는 것이 아니다. 그냥 습관적으로 재활용하는 코드를 의미한다. 나는 이렇게 생각한다. 과거의 내가 짠 코드가 정말 쓰레기로 보일 때 나는 성장한 것이라고…
최근 어떤 사람이 짠 코드를 보았다. 간단히 회원가입하는 코드였는데… 먼저 설명을 하자면 이 프로젝트는 엄청나게 긴 시간 유지보수를 해온 프로젝트가 아니라 최근 1년 이내에 시작되었다. 다행스럽게도 이 프로젝트에서는 회원가입에 메일을 넣지 않아 해당 코드가 주석처리 되어있었는데… 코드 분석을 하다가 주석처리된 코드를 발견하게 된 것이다.
일단 첫쨰로 해당 프로젝트는 회원가입 시, 메일을 받지 않는다. 일단 그 코드가 주석처리되어 들어있다는게… 놀라운데 뭐 그건 다른 프로젝트 코드 재활용했다고 치고… 근데… 메일 도메인들이 기가 막히다.
파란(2012년 폐쇄, 다음 통합), 천리안메일(명맥은 유지 중), 엠팔(2009년 폐쇄, 네이트 통합) ….
놀랍지 않은가? 정말 오래된 유저를 위한 친절일까? 더 있다. 프리챌, 라이코스, 유니텔… 그런데 더 웃긴건 뭔지 아는가? gmail은 없다. 도대체… 이 코드는 언제적 유물일까?
그리고 코드 내에서 타 프로젝트의 코드가 쏟아져 나온다. 최소 5년은 묵은 copyright 문구가 말이다. 심지어 어느 회사인지도 알기 쉽게 코드에 박혀있다. 나는 소름이 돋았다.
2. 불가능이라는 말 버릇
불가능이라는 말을 달고 산다. 분명 내가 아는 부분이라 이야기를 해도 그건 불가능하단다. 이 기능을 수정해달라고 하면 불가능, 저 기능을 수정해달라고 하면 불가능, 심지어 거짓말도 망설임이 없다. 불가능하다고 한다.
그런데 사실 개발자가 아니라면 “아… 그런가요?” 하고 넘어갈진 몰라도 개발자에게 까지 그런 거짓말을 아무렇지 않게 한다. 실제로 내가 화가 너무 나서 직접 구현을 하니, 그에 대한 언급은 쏙 들어갔다. 반박도 하지 않는다.
지금도 궁금하다 정말 모르는데 알고 있는 척을 하고 싶은 것일까? 아니면 하기 싫어서 그러는 것일까? 내가 생각하기에 정말 정말 현실적으로 물리적으로 불가능한 일을 시키는 경우가 종종있다. 그렇지만 프로그래밍에서는 대부분 그 자체가 불가능 한 것이 아니라 “그 시간에는 불가능합니다.”, “그 비용으로는 불가능합니다.”가 답이다.
나는 안도감을 느꼈다. 이런 사람도 개발자라고 먹고 사는구나.
3. 코드 정리는 계약서에 없다.
이 이야기를 듣고 나도 모르게 그 사람에게 고함을 질렀다.
여기서 간단히 내가 질문하고 그 사람이 답한 내용을 요약해 보자면
나 : 아니 이렇게 코드 정리가 안되어 있고 파일명도 엉망이면 다음에 유지보수나 수정은 어떻게 하라는거냐?
그 : 코드 정리나 파일명 변경은 계약사항에 없다.
나 : 아니 최소한의 것이라도 해야 될 것 아니냐.
그 : 그건 계약사항에 없다.
나 : 아니 제안요청서에는 형상관리툴을 사용한다고 했었다.
그 : 계약사항에 없다.
나 : 그럼 우리가 이걸 어떻게 분석하고 쓰라는거냐?
그 : 원래 코드 분석은 시작점부터 차례대로 분석하는거다.
그날 나는 너무 화가나 목청을 한껏 높여 고함을 질렀다. 프로그래머의 기본도 안 된 사람이냐고… 어느 정도로 정리가 되지 않았길래 그러냐고 묻는다면 알려주는게 인지상정. 첫번째, 쓰지 않는 파일이 그대로 들어있다. 두번째, 파일 이름 뒤에 “_1”, “_2” 가 있길래 버전관리한거냐 물으니 둘다 쓰는거란다. 셋째, 5년 이상된 타 프로젝트의 파일이 고대로 유지되고 있다. 당연히 첫번째와 같이 안 쓰는 파일이다.
나는 화와 동시에 안도감을 느꼈다. 이런 사람도 개발자라고 월급 받고 일 하는구나.
이런 사람도 개발자라고 하는데 나는 지금 뭘 하고 있는 걸까… 라는 생각도 잠시 했지만 역시 나는 그렇게는 못 살겠다. 그냥 반면교사로 삼고 저런 개발자가 되지 말아야지 하고 계속 마음을 다스린다.
정말, 나는 이해하지 못할 사람이었다.