본문 바로가기

잡담

SI 프로젝트가 엉망인 이유

SI 프로젝트를 할 때마다 개발 단계에 투입되어 개발을 했는데 이번에는 좀 예외적으로 분석 설계 단계에 투입이 되어 일을 하게 되었다. 분석 설계 때 투입하여 일을 하다 보니 개발 때는 몰랐던 SI의 문제점들이 눈에 더 보이기 시작했다.

 

첫 번째로 들었던 생각은 설계자들의 설계 역량이 부족하다는 것이다. C로 구축된 시스템에서 JAVA로 시스템을 구축한다고 하면 C와 JAVA 둘 다 어느 정도 알고 있는 설계자를 데려와야 할 것인데 그냥 경력이 몇 년이냐에 따라서 사람을 데리고 오다 보니 JAVA에 대해 몰라도 그냥 와서 설계를 하고 있다. 인프라팀에서 교육을 할 때 어떤 함수는 private로 구현하라고 이야기를 했을 때 설계자들이 private를 모른다거나 어느 함수에서 어느 객체를 호출하게 개발하라고 해도 객체를 호출한다는 개념을 모르고 있어 큰 혼동이 온다.

 

두 번째로는 프로젝트 관리를 할 때 소스파일 개수로 관리를 할 것이냐 소스파일에 작성되어 있는 함수의 개수로 관리를 할 것이냐가 이슈였다. 소스 파일로 관리를 하게 될지도 모르기 때문에 설계자들이 선택한 방법은 그저 개발 본수가 많아 보이게 하기 위해 이전 시스템에 작성되어 있는 함수 1개마다 새로운 java 파일로 만들어서 개발 본수를 늘리자는 거였다.

public class ASIS {
    public String inputCheck(){
        return "입력값 체크";
    }
    public String selectTable(){
        return "테이블 조회";
    }

    public String outputData(){
        return "출력 데이터";
    }
}

예를 들어 위와 같은 파일이 하나 있다고 하자. 위의 파일 안에는 inputCheck(), selectTable(), outputData() 이렇게 3개의 함수가 정의되어 있다. 수행사에서는 소스파일 개수로 프로젝트를 관리한다고 하니 이제 저 3개의 함수들을 각각 하나의 클래스로 나눈다. 

 

public class InputCheck{
    public String inputCheck(){
        return "입력값 체크";
    }
}

public class SelectTable{
    public String selectTable(){
        return "테이블 조회";
    }
}

public class OutputData{
    public String outputData(){
        return "출력 데이터";
    }
}

위의 소스를 보게 되면 1개의 개발 본수가 3개로 늘어나게 된 것을 볼 수 있다. 이렇게 무리하게 나누게 되면 본인도 나중에 개발할 때 헷갈리게 된다. 하지만 수행사에서 프로젝트 관리를 파일 개수로 하다 보니 이런 현상이 벌어진다. 이것도 설계자들의 탓만 할 수는 없다. 프로젝트를 하면서 느껴본봐 수행사의 특징은 일을 잘하는 사람한테는 더 많은 일을 주고 일을 안 하는 사람한테는 일을 안 주기 때문이다. 논리적으로 딱딱 맞게 설계를 한 뒤에 개발을 빨리 끝냈다고 가정하면 다른 업무팀의 일을 가져와 개발하라고 할 것을 다들 알고 있다. 다른 사람의 일을 던져주지만 돈은 던져주지 않기 때문에 다들 이러한 현상을 기피하고자 위와 같은 방식으로 설계를 한다.

 

일 잘하는 사람만 손해를 보고 일 못하는 사람은 이득을 보는 구조로 프로젝트를 관리하다보니 위와 같이 개발 본수를 많이 가지고 있는 것 처럼 무리한 설계를 한다. 설계자 본인도 위와 같은 설계를 하면 힘들다는 것을 알고 있다. 하지만 본인의 개발 본수를 다 개발한 뒤에 생판 모르는 사람의 것을 대신 개발해주기보다는 위와 같은 무리한 설계 방식을 선택한다.