프리랜서 첫 번째 프로젝트
프로젝트 개발 집단의 인력 구조는 나에겐 처음 겪어보는 신선함 이였다.
정직원일 때는 기획자, 개발자, 퍼블리셔 이렇게 셋이서 진행했지만 SI 프로젝트는 인력 구조 자체가 완전히 달랐다.
대기업에서 프로젝트 제안을 하고 대기업 IT기업이 입찰을 진행하여 수행사가 된다.
프로젝트가 시작되면 수행사는 PM, PL, 설계자 먼저 인력 구조를 세팅하고,
분석/설계 단계가 시작되며, 현업들과 현업 PI(Process Inovation) 팀들과 PM, PL, 설계자 와 계속 회의를 진행하여 현업들의 요구사항 개선될 사항에 대해 회의를 한다.
분석/설계 단계가 끝나면 개발 단계에서 개발자들에 대한 인력 구조를 세팅한다.
개발자 : 개발 업무하는 프리랜서 또는 협력사 정직원 또는 수행사 정직원, 파트별로 개발자는 설계자와 N:1의 구조로 설계자에게 업무적인 설명과 개발할 문서를 받아서 개발을 진행한다.
설계자 : 현업과 업무혁신(PI) 현업과 업무 소통을 하여 개발자에게 지시하는 업무 화면 설계, DB 설계도 한다. 대다수 설계자분들은 개발자 출신이다.
여태 프리랜서 하면서 순수 기획자를 단 한 번도 만나본 적이 없다.
협력사 정직원 또는 수행사 정직원 그리고 가끔 프리랜서도 있다.
PL(Project Leader) : 개발 리더 개발에 관한 일정 관리, 이슈 조율을 한다.
PL 급부 터 인사권을 가지고 있다.
개발자가 마음에 안 들면 PL선 에서부터 잘라버릴 수 있다.
협력사 정직원이나, 프리랜서들의 업체에 연락하여 바로 다음날 계약 해지를 할 수 있는 권한을 가지고 있다.
개발 이슈에 대해 관여하고 공유해야 하기 때문에 개발자 출신이다.
수행사 정직원 낮은 확률로 프리랜서도 있다.
PM(Project Manager) : 파트 개념의 개발 집단 위에 있는 PM이다.
수행사 정직원 임원급이 맡고 있다.
총괄 PM : PM 위에 PM이다. 프로젝트에서 제일 높은 사람이며, 수행사 정직원 임원급 중에 제일 높은 사람이 맡고 있다.
PMO( Project Management Office) : PM분들 집단이며, 기타 업무(보안, 전체적인 일정, 인력 계약 관련)를 하는 선임, 대리급 분들도 있다.
고객 : 해당 프로젝트의 정직원, 현업 직원들이다.
고객에도 PI(Process Inovaction) 업무혁신 팀을 별도로 두어서 현업의 요구사항을 PI 팀에서 받아서 프로젝트를 진행할지 결정한다.
프로젝트를 하다 보면 현업보단 PI 들과 소통하는 부분이 더 많이 있다.
가끔 PI가 아닌 PO(Project Owner)라고 불리는 현업이면서 프로젝트에도 관여하는 분들도 존재한다.
프리랜서 하면서 현업 팀장과 PI 팀장이 의견 대립으로 싸운 적이 있는데,
진짜 고래 싸움에 새우등 터진다는 뜻을 뼈저리게 느낀 적이 있었다.
필자는 백엔드 관리 시스템의 주문/결재 결재 파트에 PG 인터페이스 개발 담당이었다.
프로젝트 총 인원은 60명 정도였다.
개발에 속도가 붙을 때쯤 정말 큰 이슈가 발생하게 되었다.
PG 사별로 상품들의 필드들 이름이 제각각이었다.
결재가 되면 결제에 관한 로그와 결제 데이터를 적재해야 하는데 필드명이 제각각 이여서 소스를 PG 사별로 코딩하기엔 엄청난 대작업을 해야 할 것 같았다.
해당 이슈에 대해 나의 설계자에게 말씀드리니 디자인 패턴 적용하면 될 것 같다고 하셨다.
그러면서 같은 클레스 이름이지만 여기서 필드명을 통일 시켜서 DB에 적재하면 된다고 설명해 주시는데 진짜 감탄사가 나왔다.
나의 설계자는 연세대 컴퓨터공학 출신으로 엄청난 능력자였다.
보통 개발자라고 해서 순수 코딩은 거의 안 한다.
나의 설계자는 뭔가 물어보면 바로 Java 파일을 생성해서 바로 코딩해 보고되는지 안되는지 얘기해 주셨다.
예전에 디자인 패턴에 관한 책을 사서 10번 정도 읽어본 적이 있다.
실무에 적용을 안 해봐서 아무리 읽어봐도 잘 이해가 안 갔었다.
필드명을 통일하는 패턴을 중간에 적용하여 코드 재사용성을 높였다는 걸 알았다.
역시 실무에서 겪어봐야 와닿는 걸 알게 되었다.
정직원일 때 개발팀 팀장님 보다 더 잘하는 능력자가 있을까란 생각을 했었는데, 프로젝트에 나와보니 나에게 spring 구조를 설명해 주셨던 공통 파트 과장님, 지금 나의 설계자처럼 세상은 넓고 능력자는 많다는 걸 많이 느낀 것 같다.
이슈를 해결하고 난 뒤에는 개발 속도가 점점 올라가기 시작했다.
드디어 내가 개발할 업무 55개의 일감을 모두 개발하게 되었다.
하루에 PG사 담당자들과 통화만 30번 넘게 한 적도 있었다.
개발자 경력 11년 동안 디버깅 자체를 하지 않았다.
디버깅이라는 게 Java 소스에 BreakPoint를 걸어서 해당 기능이 수행될 때 내가 지정한 BreakPoint부터 소스를 한 줄 한 줄 체크하는 기능이다.
디버깅 자체를 모르는 건 아니지만 보통 값을 화면에 찍어보거나 소스 라인 중간중간마다 출력을 해서 확인해 보았다.
같은 결재 파트에 프로모션 개발자 과장님이 계셨는데 디버깅 모드를 제대로 쓰는 걸 옆에서 보았다.
프로모션이라는 게 특정 PG 사에 XX 카드로 결제 시 몇 프로 할인, 포인트 적립 같은 부분을 개발한 결제 PG 인터페이스를 태우기 전에 값을 세팅하여 넘기는 작업이기 때문에 결제금액 계산이 중요한 부분이었다.
프로모션 개발자 과장님은 PG 인터페이스 전달하기 전까지만 디버깅 모드로 특정 카드 조건에 잘 들어가는지, 결제금액이 잘 계산되는지 확인하고 중지하였다.
다행히 옆자리여서 나도 디버깅이 중요하는 걸 느끼고 어깨너머로 배웠다.
내가 개발한 소스도 값들을 넘기는 부분이 많기 때문에 디버깅 모드에서 한 줄 한 줄 데이터가 객체에 담기고 전송되고 응답받고 처리하는 부분을 확인했었다.
프리랜서는 한 달에 한 번 쉴 수 있는 월차가 있다.
바쁠 땐 못 쓸 때도 많다.
나도 한동안 못쓰다가 장염이 걸려서 월차를 사용했었는데
다음날 주문 파트 설계자가 나에게 잘 돌아가던 톱니바퀴가 하나 빠지니 안돌아 간다고 면박을 주었다.
지금 생각해도 참 안 좋은 말 같다.
그리고 PL 님에게 와이프가 자궁근종 수술 때문에 5일 쉬어야 한다고 하니
PMO에 얘기해 봤는데 불가하다고 답변을 받았다.
그래서 최소 3일 쉬겠다, 휴가 안 주면 지금 당장 나가겠다고, 나에겐 가족이 제일 중요하다고 하니
PL 님도 미안한지 PMO에 가서 확답을 받아오셨다.
휴가 3일 주는 대신 노트북 가져가서 개발 일정 꼭 지켜달라고 하셨다.
와이프가 수술하고 나왔는데 병실에서 노트북을 키고 PG 사와 통화하면서 개발했던 일이 생각난다.
와이프에게 신경도 못써주고 병실에서 계속 통화하면서 일하고 있던 모습을 보여줘서 너무 미안했다.
정직원이었으면 내 연차 당당하게 썼을 텐데 이 점이 참 서러웠다.
그리고 내가 중간에 투입된 케이스다 보니 이미 끼리끼리? 가 형성되어
삼삼오오 식사 멤버들이 정해져 있는지 아무도 나를 끼워주지 않았다.
항상 점심에 한솥도시락 사서 혼자 먹었던 것 같다.
프리랜서가 집단 개인주의가 강하다는 느낌도 새삼 받았던 것 같다.
(프로젝트를 많이 겪어보니 여기가 이상한 거였음..)
프리랜서로서 첫 프로젝트였던 것도 있겠지만 정말 최선을 다했던 것 같다.
철수하는 날 새벽 1시에 택시를 타고 집에 갔었다.
다행이었던 건 내가 있던 프로젝트가 악명이 높기로 유명한 프로젝트였는지
면접(인터뷰) 볼 때마다 와.. 000프로젝트 하셨네요? 하면서 조금 인정해 주는 부분도 있었다.
다음 프로젝트는 처음부터 Java Spring을 경험하고 싶어서 중간에 투입되는 프로젝트가 아닌 개발 단계 시작인 프로젝트를 찾다가 새로운 영역인 MES (Manufacturing Execution System) 생산관리 시스템 프로젝트에 투입되었다.
프리랜서로 첫 프로젝트를 하면서 "여기도 사람 사는 곳이구나" 많이 느낀 것 같다.
위에 언급한 나의 설계자도 프리랜서였고, 프로모션 개발자 과장님도 프리랜서였다.
프리랜서라고 해서 자유가 있는 게 절대 아니었다.
출, 퇴근이 자유로운 것도 아니었고, 하는 업무가 자유로운 것도 아니었다.
그냥 단순 계약직일 뿐이었다.
유일한 장점은 단가(월급)이 정직원보다 높다는 거 말고는 오히려 하대 당하고 무시하기 일쑤였다.
정말 하기 싫으면 내 발로 나가는 것도 장점이라고 보기엔 힘들어 보였다.
두 번째 프로젝트도 역시나 헬 그 자체였다.