[Oh! 반면교사] 02. 버전관리를 왜 안해! 미쳤어?!

규링이 대학원에서 석사 과정 중에 여러모로 TA(수업조교)를 했었다. 그거라도 좀 벌어서 연구실 친구들하고 밥먹고 그랬다. 그 돈 모아봤자 뭐 얼마나 된다고… (그때 외주돌리던 게 좀 더 벌렸었다 솔직히..)

뭐 일단, 조교를 하는 과목 중에 모바일 앱 개발을 한번도 안해본 친구들이나 해보고 싶은 친구들을 위해 열린 강의에서 버전관리 솔루션인 git을 알려주고 해보길 권장했었다. 사실 수업으로 알려주기 전까지 git을 못쓰고 했던 친구들이라면 솔직히 했어도 좀 개판으로 했다. 그거 안다. 당연히 안다. 그래도 한번 알고 해보길 원했었다. 학부생 레벨의 코드야 구현환경 알아보고 해당 환경 구축방법과 도큐먼트 한번 쭉 보고 나서 학생 코드 눈으로 쭉 훓어보면 대략 95%는 머릿속에서 컴파일 되고 하는 그런 코드들이 대부분이니깐 이런 것이라도 더 알고 몸에 익히면 좋겠다는 생각으로 했다… (학회나 동아리 활동 등으로 배워온 예외도 있다. 근데 그런 친구들은 이런 수업 잘 안들어서…)

그들에게는 다른 거 요구 안한다. 그냥 지속적으로 어떤 작업을 하나 했으면 그 작업에 대한 커밋만 해달라고만 한다. 브랜치 따고 뭐 하고 하는 거 첨에 하면 어려운 개념으로 들어오니깐… 그러면 16주 강의수업중에 짜는 코드라 그렇게 많은 커밋은 없어도 각 기능마다 커밋 잘 따라오는 친구들은 따라온다. 계중에는 그냥 그날그날 커밋하는 친구도 있고… 과제 몰아서 했는지 며칠만에 커밋이 쫙 쌓인 경우도 있고 아예 안한 경우도 있고…. 하다보면 어떤 식으로 과제를 했는지에 대한 게 보인다. 그리고 그건 아무래도 그 학생의 과제 하는 방식과도 관련이 있다.

하물며 학생도 좀 시켜보면 어떤 식으로 개발하고 얼마나 개발하고 도중에 기능 바뀌거나 수정해야 하면 어떤 방식으로 했는지도 몇 안되는 커밋으로도 보이는데 이걸 실부 개발자들이 안했다? 미친거죠? 장난해요?

개발하는 데 있어서 여러모로 자산들이 있다. 그 중에서도 소프트웨어 코드는 엄청난 자산이다. 죽어라 관리해도 모자란 판에 소스코드를 버전관리 안해? 미쳤어?!

게다가 이전 글에서도 적었지만, 진짜로 소스코드는 P군에게 압축파일로 대강 받은 게 전부다. 소스코드를 뭐 날짜별로 압축파일을 만들었다던가 시디에라도 구워뒀다라던가 라도 해놓았으면 별 상관이 없었지만 그것도 안했다. github? gitlab? bitbucket? 이런 건 진짜 날초보 개발자인 P군은 학교 다닐 때 동아리에서 들어본 게 전부란다. 이전 개발자 사수님은 그런 거 안썼단다. (이녀석은 진짜 초보 개발자인데 이녀석 이야기는 좀 나중에 적겠다. 지금은 아니지만 옛날에는 오씨의 작품 중 하나다.)

(ㅡㅅㅡ^)=3

이게 얼마나 위험한 짓인지 모르는 분들에게 부가 설명을 하자면, 만에 하나 오씨가 회사 때려친 시기와 내가 입국해서 회사 입사하는 시기 사이에 만에 하나라도 P군의 PC가 작살나기라도 했으면 소스코드 전부 싹 다 날려먹는 판국이 벌어지는 것이었다.

(X~X);;;

그리고 내가 소스코드 건네받고 환경 설정과 각종 자료 뒤지기를 위해서 일주일을 소비하던 때에 실제로 P군의 PC는 스스디가 작살났다. (그리고 새로 맞췄다.)

(………………)

신경질이 났다.

근데 이걸 위의 개발을 담당하는 총괄자 분이 몰랐을까? 여기 사장님도 옛날에 국책연구소에서 임베디드랑 백본 네트워크 솔루션 개발하던 분이었고, 여기 기술팀 담당하는 이사분도 웹 솔루션과 대용량 DB 시스템 구축하는 데 일가견 있는 분이다. 이런 분들이 버전 관리의 중요성을 모를 리가 없다. git이 아니라 svn이던 뭐던 이용했을 분들이었다. 근데 그분들에게 들은 이야기는 진짜 가관이었다.

“자기는 완벽한 관리를 하고 있기 때문에 소스코드가 날아가는 상황은 있을 수 없다라고 하면서 우리가 모르게 관리하고 있었다.”

“이런 이야기 하면 신경질을 내면서 자기 못믿냐고 했다.”

………………………………윗분들의 손으로 뭐 어떻게 할 수 있는 그런 오씨가 아니었던 거다. (이 이야기는 나중에 할 꺼임. 할 말 진짜 많음. 반면교사의 본보기임.)

그 말 듣고 소스코드 파일을 열었다. git 폴더가 있다. git을 만들기는 했네.

그리고 git log를 당연하게 쳤는데….

커밋이 총 9개 되어있다. 그것도 커밋한 시점이 이 프로젝트 시작할 시점인 3년 전 날짜이며 커밋 메시지가 “first commit”, “AA 구현”, “BB 구현”, “CC 구현”, “BB 수정”, “commit”, “커밋”, “오늘 커밋”, “commit” 이다. 정확하게 9개 다 기억한다.

리모트? 그런 게 있을 거 같나요? 커밋을 저딴 식으로 하는 새끼가 소스코드를 리모트 서버에 관리를 한다????!? ㅎㅎㅎ… 그런 거 없음. 진짜로….

그리고 자기 부하인 P군에게도 이런 걸 하나도 가르치지 않았다.

제대로 글러먹었습니다.

git이나 svn 못써서 개발자 아니라고 하는 거 아니다. 나도 처음 할 때에는 저런 거 잘 몰라서 소스코드 압축파일 날짜별로 만들고 해당 날짜에 뭐 개발하고 했는지 워드파일로 만들어서 안에 넣어두고 DVD로 굽고 했던 시기가 있었다. git과 svn 같은 버전관리 솔루션들을 알고나서부터 소스코드 관리하는 난이도가 미친듯이 쉬워진거지….

그래도 어려운 거고, 그래도 중요한 거다. 날려먹고 복구 못하면 그게 뭔 짓이야!!!! 니가 그러고도 경력 있는 개발자냐!!!!

그래서 내가 코드 사이에 스페이스 바 하나 추가해서 기존까지 오씨가 자기 이메일주소와 자기 영문이름으로 커밋한 것 뒤에 내 git 정보를 이용해서 커밋하고 이 시점부터 미친듯한 커밋을 하고 미친 분량의 브랜치를 만들어 작업을 했다.

또한 사내에서만 쓰는 용도로 gitlab-ce를 빈 서버 하드웨어에 구축했다. 적당한 제온 4코어 쌈마이와 램 16기가, 하드 2테라 4개가 RAID-5로 묶인 델 타워서버가 걍 굴러다녀서 그걸로 잘 쓰는중…. 하드야 날려도 된다고 했고, 어차피 우리에겐 만능의 리눅스인 우분투가 존재하잖아…? 내 옆자리에 갖다놓고 우분투 서버 구축해두고 gitlab-ce며 redmine이며 뭐며 미친듯 설치하고 손에 좀 놀려보니 이런 거 안해본 P군을 위해서는 종합선물세트 같은 gitlab이 더 나을 꺼 같아서 gitlab으로 잘 쓰고 있다. 그리고 P군에게도 git 사용법을 가르치면서 열심히 체크하고 갈구고 습관 만들고 한 결과 P군은 지금 버전관리와 이슈 관리와 위키 채우기에 맛들려서 조금씩 무럭무럭 개발하고 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.