본문 바로가기

잡담

3번째 SI프로젝트를 마치며

프로그래머로 취직을 하여 일본에서 1번 한국에서 2번 총 3번째의 프로젝트를 맞이했고 3번째 프로젝트도 무사히 오픈을 했다. 3번째 프로젝트를 마치며 느낀점을 적으려고한다. 아마 첫번째 두번째 프로젝트에서 느낀점과 그대로인 부분도 있을 것이고 다른 부분도 있을 것이다.

 

개발자로 취업을 준비하는 학생이라던가 현업에서 개발을 하고 있는 개발자들은 이런 말을 들어본 적이 있을 것이다. "SI프로젝트는 인력 장사이기 때문에 실력 따위는 필요없고 우선 현장에 보내는게 우선이다", "프로젝트 일정을 맞추어야하기때문에 사람이 죽어난다" 등과 같은 글들을 쉽게 찾아볼 수 있다. 우선 SI프로젝트의 경우에는 확실히 개발자들이 실력이 없다. 내가 느낀점은 순수 개발실력으로만 보자면 대학교를 갓 졸업한 대학생과 SI프로젝트에서 20년간 개발한 경력자와의 코딩 실력차이는 크지 않다고 느껴졌다.

 

이번 프로젝트는 JAVA프로젝트였지만 JAVA의 OOP원칙이라던가, 캡슐화, 상속 다형성, 디자인패턴, 리팩터링 등에 대해 이야기해보면 이런 개념이라는게 존재한다는 사실조차 모르는 개발자가 수두룩했다. 사용하는 언어만 JAVA였지 제대로 된 JAVA는 사용하지 않았다고 보면 될 것 같다. JAVA에서 이야기하는 부모클래스나 인터페이스를 만들어 사용하는 경우는 1도 없었고 응집도와 결합도를 생각하여 구현한다거나 이런 것은 일절 없었다. 단지 JAVA클래스를 하나 만들고 거기에 if else, switch, for문을 이용하여 로직을 구현하는게 대부분이었다. 이렇게 코딩을 하다보니 너무 실력이 하향화 되는게 아닌가 싶어 디자인패턴을 응용하여 개발을 하고 싶었지만 팀원들이 디자인패턴이라는 단어조차 들어본적이 없었기 때문에 사용해도 의미가 없었다. 

 

프로젝트 일정 산출에 있어서 분석 설계 단계가 의미가 없다고 생각이된다. 단지 이 SI업계를 주도하고 있는 1세대 프로그래머들은 개발 실력이 없다보니 분석, 설계 단계라는 일정을 만들어두고 그냥 돈을 벌어먹을 수 있는 기간을 좀 더 확보하기 위해 프로젝트 일정에 분석 설계를 넣어놓지 않았나 싶다. 내가 이렇게 비관적으로 생각하는 이유는 분석 설계때 만들어진 산출물들이 하나도 맞지 않다는 점이다. 설계서를 보고 구현을 하면 1도 안맞고 분석 설계자들도 설계서가 하나도 안맞기 때문에 그냥 AS-IS소스(AS-IS란 이전 시스템을 의미한다)를 보고 구현하라고 이야기한다. 그리고 설계자들도 AS-IS시스템에 대해 잘 모르기 때문에 제대로 된 설계서가 나올 수가 없다.

 

초급, 중급 개발자들이 제일 고생을 많이 한다고 볼 수 있다. 흔히 개발에 들어가면 제일 바쁘고 분석 설계기간은 좀 여유롭게 보낼 수 있다고들 이야기하고 실제로도 그렇다. 하지만 분석 설계는 고급, 특급들이 하고 분석 설계가 끝나면 초급, 중급 개발자들을 추가로 투입해 초급, 중급 개발자들이 개발을 하게 된다. 프로젝트가 제일 바쁜 시기에 초급, 중급들이 투입된다는 이야기다. 고급, 특급들이 분석 설계 단계에 투입되었기 때문에 프로젝트에 대한 이해도는 더 높지만 그렇다고 고급, 특급들이 개발 본수를 더 많이 가져가는 것은 아니다. 프로젝트 중간에 투입된 초급, 중급 개발자와 똑같은 개발 본수를 가져간다. 그렇기에 중간에 아무것도 모르고 투입된 초급, 중급 개발자들은 더 힘들 수 밖에 없다.

 

개발 실력에 따라 임금을 올려주는 것이 아니라 개발 경력에 따라 임금을 올려주려고 하는 이상한 문화가 자리잡고 있다. 예를 들어 맨먼스(프로젝트 일정 단위)를 산출 했을 때 100개월이 나왔고 5명의 개발자를 투입해 각각 20개월치분의 개발분량을 받았다고 가정 했을 때 4명의 개발자가 20개월치분을 개발하지 못했고 10개월치분만 개발을 했다 4명이기 때문에 총 40개월치이고 60개월치가 남아있다. 이 5명중에 1명이 아주 똑똑해서 혼자서 60개월치분을 개발했다고 했을 때 이 똑똑한 1명에게 돈을 더 주는 것이 아니라 경력이 더 많은 사람한테 돈을 더 챙겨주는 이상한 문화가 자리잡고 있다. 생산성이 높은 개발자의 경우 대개 젊은 나이대가 많은데 대개 실력이 없고 나이가 많은 프로그래머들이 개발을 잘 하는 개발자에게 돈을 더 챙겨주려고하는 문화를 억제하려고 하는 경향이 확실히 있다. 아마 본인보다 나이도 어린 개발자가 돈을 더 많이 받아가는 모습을 보기 싫어서 그럴 수도 있고. 아니면 실력 없는 개발자들이 서로 퇴출되는 것을 방지위해 암묵적으로 수용하고 있는 문화가 아닐까 싶기도하다. 개발 실력에 따라 돈을 받아간다면 실력이 없는 고급 특급들은 갈 곳이 없어질테니...

 

실력은 1도 없고 입만 살은 고급, 특급들이 숨어있다. 내가 속한 팀의 이야기지만 실력이 1도 없고 입만 살은 특급이 한명 있었다. "일은 이렇게 해야한다", "이렇게 하는게 더 효율이 좋다고"라는 등의 말을 하면서 본인이 엄청 잘하는 척을 했는데 막상 그 사람의 소스코드를 보니 흉측하기 그지 없었고 로직도 엉망 진창으로 만들어놓았다. 고객사에서는 그 특급 개발자가 자기 마음대로 행동을 하고 커뮤니케이션도 안되며 성격이 좋지 않다보니 계속 자르라고 이야기했고 수행사에서는 그 특급 개발자를 자르지 않았다. 수행사에서 그 특급개발자를 자르지 못했던 이유가 있었는데 그 이유가 정말 소름끼친다. 그 특급개발자의 경우 본인이 감당 할 수 없는 수준의 상태가 되기 전까지는 본인이 맡은 역할을 잘하고 있는 척 연기를 한 것이다. 그리고 연기로 그 사실을 감출수 없을 정도가 되어 밑천이 드러나려고 할 때 쯤 PL에게 이야기하고 프로젝트에서 도망쳤다. 그리고 그 특급개발자의 똥은 내가 맞았다. 그 특급개발자가 짜놓은 소스코드를 이해해서 내가 다시 작성 했으며 대략 2000 ~ 3000줄의 소스코드를 500줄에서 700줄 정도로 줄이는 것이 가능했다.

 

시스템 오픈 후에는 항상 전쟁이다. 이전 프로젝트도 그러했지만 시스템을 오픈하고 나면 시장통이 따로 없다. 테스트 환경에서는 잘 동작하고 있었을지 모르겠지만 막상 운영환경에 배포를 하고 돌리다보면 테스트환경과 달랐다거나 본인이 놓친 부분들이 있었기 때문에 항상 문제가 터진다. 약 100명 가량의 개발자들이 우왕좌왕 하다보면 정말 시장통이 따로 없다. 시스템 오픈 후 조용한 프로젝트는 존재하지 않을 것이다.