4년차 개발자의 회고록
Miscellany오늘날에는 애증이 된
비영리 텍스트형 웹게임 사이트 A, 지금까지 필자가 개발을 하게 만든 곳이다. 사이트 A는 유저가 스스로 키워나가는 곳으로 본인도 일개 유저에 불가하였다. 소규모 사이트였으나 다양한 사람들이 모여 있었고, 필자는 그 공간을 마음에 들어했었다. 그래서 종종 벨런스를 논하며 건의하였는데, 그 모습이 총책임자에게 눈에 띄어 벨런스를 위한 운영진이었다. 이 때까지만 해도 코드를 만질 생각을 하지 않았었다. 당시에는 소스관리자도 있었으며, 고등학교 1학년 때만 해도 자존감 결여로 인하여 개발은 꿈도 꾸지 않았던 시기였다.
오래 된 오픈소스를 기반으로 만들어진 사이트 A는 perl이 주언어이며, 개발자가 되고자 했던 학생들이 코드를 쌓아올렸기에 내부적으로는 보여줄 수 없을 만큼 엉망진창이다. 파일 하나가 15,000줄에 달하였으니 무얼 더 말할까? 이런 코드를 만지고자 하는 사람은 없었고, 앞서 이야기하였듯이 비영리였기에 운영진은 보람 맡고는 아무 것도 없었다. 개발자를 목표했다면 연습장 정도로 여길 수 있었으려나? 이런 보상이 없는 체계로 인하여 소스 관리자가 취업을 하며 그만 두게 되었고, 한동안 공백으로 유지되었다. 운영진이 된지 3년이 지난 시점으로 당시 사람이 부족하여 총책임자가 되어 있었다.
실력은 없어도 욕심은 많았다
어쩌겠는가? 하고자 하는건 많았고 코드를 만질 수 있는 사람은 없었다. 그러니 스스로 만드는 수밖에 없었다. 당시 본인이 쓴 에디터는 메모장. IDE 같은건 존재하는지도 몰랐던 시절이다. 애초에 개발자를 할 생각도 없었으니 perl도 잘 몰랐고, MVC는 더더욱 몰랐다. 데이터베이스도 없는 파일시스템에 절차지향 프로그래밍이 전부인 줄 알았던 시기였다.
벨런스를 위해 필수적으로 건들어야 했던 파일이 바로 15,000줄 짜리 파일이다. 이를 메모장으로 살펴보며 전부 머릿속에 넣어야만 하였다. 머릿속에 없으면 개발이 불가능한 상황이었다.(그 때는 참으로 멍청했다. 모든 개발자들이 메모장으로 개발할리가 없잖아.) 그렇게 꾸준히 살펴보며 ctrl+c, ctrl+v로 초안을 잡고 코드를 수정하였다. 작업을 하다보니 눈을 뜨게 되었다. 이전 관리자도 본인처럼 작업을 했었는지 중복 코드가 많다는 것을 발견하게 되었고, 이를 줄이고자 노력했다. 종국에는 추가한 코드들이 꽤 있었음에도 불구하고 10,000줄로 다이어트 시키는데 성공하였다! 이게 바로 개발자가 되기 전, 처음으로 시도 했었던 리펙토링이다.
무려 33% 압축을 해낸 필자는 자신감이 붙어 훗날 또다른 프로젝트를 시도하는데, 바로 기반 전투 계산식을 갈아엎는 것이었다. 당시 코드로는 명중률 100%를 구현할 수 없었고, 이를 극복하기 위해 꼼수로 처리했었다. 필자는 그 부분을 마음에 들지 않아 한 달이라는 긴 시간을 투자하였다. 스펙에 의거한 상대 평가를 기반으로 명중률 체계로 바꾸었다. 전투 기반부터 모든게 달라졌음에도 불구하고 벨런스는 이전과 큰 차이를 만들어내지 않았다!(라고 생각하지만 당시 유저들은 어떻게 생각하는지 모르겠다.)
개발자가 되기로 마음 먹다
이 외에 다양한 우여곡절을 겪으며(2차 저작권 도용이라든가 게등위라든가) 시간은 흘렀고, 생계를 고민할 시기가 다가왔다. 당시 필자는 경제학도로서 교직이수 중이었다. 세 가지를 선택할 수 있었는데, 전공을 살릴지, 교편을 잡을지, 아니면 개발을 선택할 수 있던 상황이었다. 결론은 다들 알다시피 개발자가 되었다. 개발자를 선택한 이유는 이전 글을 참조하기 바란다.
개발을 본격적으로 시작하기 앞서(그 전에 했던건 사실 얘들 장난이다.), 알고 지내던 개발자에게 수차례 상담을 하였다. 개발을 위해서는 어떤 마인드를 가져야 하는지, 공부하는 방법은 어떤 것이 있는지 조언을 받았다. 그 중 하나로 생활코딩을 추천 받았고, 독학으로 시작하였다. 생활코딩에서는 언어를 익혔으며, 데이터베이스는 교생실습을 나가야 하는 4학년 마지막 학기 때 공대 컴퓨터학과 강의를 신청하여 익혔다. 교생실습을 나가면 한달 간 강의를 빠져야 하는데, 교수님께서 좋게 보셨는지 좋은 평가를 받을 수 있었다.
어찌저찌 가을졸업을 하였으나 아직 개발자로 취업할 자신은 없었다. 그래서 어머니를 설득하여 유예기간 6개월 합의를 보았고, 그 기간동안 국비교육 학원을 다녔다. 학원에서는 JAVA/Spring을 하였는데, 과제를 먼저 끝내고 나서 혼자 PHP를 독학하였다. 당시에는 포트폴리오를 준비할 겸 사이트 A를 PHP로 컨버팅하며 리펙토링을 진행하고 있었다. JAVA를 공부하니 되려 PHP에 대한 이해도가 늘어났고, Codeigniter 기반으로 대부분 옮길 수 있었다. 취업할 쯤 마무리 단계에 있었으나, 어줍잖은 실력으로 리펙토링한 코드가 마음에 들지 않아 드랍했다.(튜토리얼도 만들고 이것저것 추가 하였으나, 코드가 마음에 들지 않았었다.)
취업 그리고 이직
첫 회사는 작은 SI업체였다. 당시에는 별 볼 일 없는 신입이었다. 고작 1년을 독학하였으니 지금과 비교하면 아는 것 하나 없었다. Codeigniter 한국 사용자 모임을 취업 전부터 나갔으나 모르는 이야기로 가득찼다. 아는게 있어야 귀에 들어오는데, 모임을 나가서 얻는건 ‘내가 무엇을 모르고 있었는지’ 깨닫는게 전부였다. 그러던 와중에도 조금씩 실력이 쌓이니 불만이 생기기 시작하였다. 그 불만이 최고조에 이를 쯤, Codeigniter 한국 사용자 모임을 통해 알게 된 분께서 사내추천을 해주셨고 불과 7개월만에 이직을 하게 되었다.
이직이 확정된 후 입사하기 전 Modern PHP User Group에서 자랑하였는데, 그곳에서 ‘자신이 사수될 사람이니 잘 부탁한다.’는 말을 들었다! 심지어 그 날, 집으로 돌아갈 때 지금의 파트장님과 같이 가게 되었는데, 팀장님을 만나 다같이 한 잔 했다!! 개발자 세계가 이렇게 좁다는걸 유념하고 평소에 행동을 잘 하자.
다시 본론으로 돌아와서 아직까지 다니는 이곳에서 많은 지식을 쌓을 수 있었다. 잘 부탁한다던 사수 분께서 열정적으로 가르쳐주셨고, 하나씩 체계를 다잡아갈 수 있었다. 그만큼 많은 개편 프로젝트를 진행하기도 하였다. 입사 직후 공고등록 개편에 서브로 들어갔고, 이후에는 혼자 지도 서비스를 개편하였다.(연간 고정지출비용 1.5억을 줄였는데 아무 것도 없어서 서운했다.) 이 외에도 혼자서 기획을 주도하여 기존 데이터 마이그레이션과 함께 도로명주소를 도입하고, 입사지원 개편, 유료서비스안내 개편 등등 올라운더 마냥 서비스 이곳저곳에 이름을 남겼다. 그리고 이제는 4년차가 되었다.
되돌아보니
글을 쓰며 새삼 깨달은 사실은 개발자가 되고자 마음을 먹은 4년 전부터 지금까지 단 한 번도 쉬어보지 못 하였다는 사실이다. 비전공이라는 낙인을 깨부수고자 오로지 전력으로 달렸다. 그만큼 스트레스도 클 수밖에 없었지만, 이에 대한 대안은 ‘모르고 있던 지식에 대해 공부하는 것 뿐’이었다. 그리고 그 덕분에 지금 이 자리까지 만들 수 있다고 생각한다.
이 글을 읽은 신입, 혹은 개발자가 되고자 하는 분들께 두 가지만 조언하고자 한다.
첫 번째, 개발자 모임을 자주 나가자. 처음에는 망설여질 것이다. 필자도 그랬었다. 하지만 늦으면 늦어질수록 다양한 사람들을 만나고 배울 수 있는 기회를 늦출 뿐이다. 일반적으로 모임을 꾸준히 나오는 개발자들은 일정 수준 이상 공부를 꾸준히 하는 사람들이며, 무엇 하나라도 배울 점이 있다. 자신을 어필하면 기회를 얻을 수도 있다.
두 번째, 깃허브나 블로그를 통해 기록하자. 기록 하나하나가 모이면 그 자체로 포트폴리오가 되며, 스스로 얼마나 노력을 하였는지 되돌아볼 수 있다. 자기자신을 브랜딩하고 알리는데 유용하다.
올 한해에는
직장을 다니면 다양한 사람들을 관찰할 수 있다. 그리고 개발 실력과 연봉은 크게 관계 없을 수 있다는 사실도 깨닫는다. 필자가 가진 신념 중 하나로 호의를 두세 번 반복하지 않는다는 마음가짐을 가지고 있다. 앞으로도 목표를 달성할 때까지 공부를 멈추지 않을 생각이지만, 이제 받는 만큼 퍼포먼스를 내고자 한다. 분에 넘치는 대우를 받는다면 그만큼 보상을 보이고자 할 것이고, 그렇지 않을 경우 스스로 리미트를 걸려고 한다.
이와 별개로 올해는 파이썬과 도커를 준비할 예정이다. 지금은 특정 언어에 지나칠 정도로 종속 되어 있는데, 그 사슬을 끊어내고자 파이썬을 공부할 것이다. 겸사겸사 개인서버에 자동스크립트도 만들고, 내실을 다지고자 한다.
만약 필자에게 관심이 있거나 질문이 있다면 devellany@gmail.com 으로 연락 바란다.
Devellany
back-end Developer
PHP, Java, JavaScript, MySQL, Redis, Ubuntu, Nginx
Codeigniter, Laravel, Zend, Phalcon, Spring Boot, JPA
PHPStorm, IntelliJ, Upsource, SVN, Git, Telegram Bot