KG System 회고록 (1)
낙하산
처음 이 회사에서 일하게 된 계기는 지인을 통해 소개받은 자리로, 흔히 말하는 낙하산 같은 느낌이었다.
그 당시 본인은 대학 2학년 1학기를 마친 여름이었으며 할 줄 아는것은 jquery 조금과 html 마크업, php 조금이었다.
database의 이해도는 간단한 CRUD만 수행하는 정도였으며 쿼리의 성능이나 중요도를 따질 수 있는 실력이 아니었다.
그럼에도 내가 이 직장에서 일할 수 있게된 것은 지인의 말 덕이였다.
지인: 웹 개발좀 할줄 아니? 어려운거 안시킬게.
내가 아는 선에서 적당히 굴리면 될 것이란 생각으로 승낙했고, 그렇게 첫 출근이 시작되었다.
첫 출근
첫 출근 당일, 프로그래머로서의 첫 일이라는 생각에 들뜸과, 첫 사회생활이라는 긴장감 속에 하루를 보냈다.
업무 형태, 범위, 급여등의 여느 회사라면 가질 회계팀과의 논의는 없었고, 바로 내 개발 환경 설정 및 소스 코드 인수를 시작했다.
인수 받은 프로그램은 제법 규모가 있는, Native PHP로 작성된 생산관리 프로그램 및 인사 관리 프로그램이었다.
날 '꽂아준' 지인이 근 1년간 맨땅에 헤딩하며 일궈온 결과물로 규모도 제법 컸으며 특허까지 받아낸 프로그램이었다.
첫 업무
이렇게 정신없이 첫 출근이 지나고, 지인은 나의 업무를 설명해 주었다.
엑셀 파일을 읽어 DB에 저장하고, 이를 엑셀 파일과 최대한 동일한 모양으로 표현해 달라는 것이었다.
나는 당시까지 배웠던 짧은 지식으로 어렵지않게 구현해 내었다.
그러나 문제가 있었다. 엑셀 데이터 자체가 일반적인 의미로서 작성된 내용이 아니었다.
엄청난 양의 서식, 작성자만의 규칙이 녹아있어 이를 프로그램으로 녹여내야 했다.
작성자 본인도 넘겨주는 파일에 어떤 내용이 담겨있는지 다 알고있지 않을 정도로 많은 규칙들이 있었고 개중에 규칙이라 할 수 없는 내용까지 포함되어있었다.
작업을 계속 할 수록 알수 없는 규칙까지 녹이기 위해 코드는 점점 스파게티코드가 되어가고, 점점 더 유지 보수와는 거리가 멀어지게 되었다.
극단의 조치
결국 프로젝트 책임을 맡은 차장이 아예 양식을 새로 만드는 것을 제안했다. 알 수 없는 규칙, 작성자 많의 표기법은 최대한 표준화 하고
많은 파일로 분리되어있는 필드도 다시 하나로 모아 정리하며 작업을 진행했다.
기존의 작성한 코드도 절반은 무용지물이되어 파싱 부분만 살릴 수 있었다.
데이터의 분석은 차장이 맡아 진행하게 되었고, 분석되어 만들어진 정형화된 데이터로 다시 작업을 이어 간신히 방학기간 내에 프로젝트를 완수 할 수 있었다.
결과물 병합
마무리된 코드를 이제 원래의 소스코드와 합쳐 서비스해야하는 단계에서 해프닝이 있었다.
기존 소스코드는 비전공자인 지인이 불편함을 해소하고자 독학으로 배우며 별다른 형상 관리 툴 없이 1인 개발로 진행해왔기 때문에 본 서버에 적용하려면 코드를 덮어 씌워야 했다.
당연 버전관리는 없었고 잘못 적용한 순간 대 환장 파티가 일어나게 되었다.
프로젝트를 합치기까지는 성공했지만 이게 제대로 합쳐진건지, 버전은 맞는지 확인 할 수 없었고, 이후에 다른 직원의 오류 신고로 잡아낼 수 밖에 없었다.
변경 요청사항을 적용하는 것도 마찬가지 였고 이 상황이 너무 비효율 적으로 보였다.
GIT 과 SourceTree
결국 지인과 논의를 통해 GIT을 도입하기로 했다.
당시 직전학기에서 공개 SW 강의 시간에 Git을 써본 경험이 있어 크게 어렵지 않게 적용할 수 있었다.
지인의 계정으로 개인 저장소를 만들고 거기에 소스코드를 올려 버전관리가 시작되었다.
이후의 변경 사항, 버그 수정 등의 결과물을 병합하는데도 쉽게 할 수 있었고 소스트리 덕에 cli에 익숙치 않은 상태로도 충분히 git을 활용 할 수 있었다.
다만 도중에 충돌이 발생되어 해결 할 수 없는 경우가 일어나면 지식 부족으로 커밋을 돌릴 수 없어 저장소를 초기화하며 진행했다.
방학이 끝나고
이렇게 처음으로 돈을 받아 수행하는 프로젝트는 방학과 함께 끝나고, 나에겐 큰 발전이 있었다.
학교에서 배운 내용들이 무었을 의미 했는지 뼈저리게 느낄 수 있었다.
아키텍처의 필요성
- 당시 내 수준은 주니어 프로그래머에도 미치지 못한, 갓 발을 디딘 수준이었다.
때문에 내가 짠 코드는 거의 스크립팅 수준으로 파일로 구분된 기능 정도였고, OOP, SOLID는 생각도 못하고 적용하지 못했다.
이 코드를 후에 다시 보니 아무리 주석을 잘 달았어도 리팩터링은 커녕 분석 조차 힘에 겨워 새로 만들게 되었다.
- 당시 내 수준은 주니어 프로그래머에도 미치지 못한, 갓 발을 디딘 수준이었다.
실무는 협업
- 이때 까지 대부분의 개발 경험이 혼자 하는 개발이다 보니 클린 코드의 개념이 없었다. 이 기간동안 작성된 코드는 이후에도 유지보수하기 어려웠고, 지인도 건들지 못하는 코드가 되었다.
2017.06 ~ 2017.09 동안 파트타임은 내게 프로그래머로서의 첫 소득이자 직업으로서의 확신을 얻게 된 계기가 되었다.
쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다.