현재 프로젝트에서 얻은 교훈이다.
대학교 학적 DB로부터 교과목 정보를 받아서, 이 정보를 바탕으로 학생들이 조를 꾸릴 수 있도록 도와주는 웹프로그램이 있다.
그렇다면 해당 학생이 수강신청한 교과목 정보를 받아와야 하는데, 모든 교과목 정보를 제공받진 못하고, 학생이 신청한 교과목 중 우리 서비스와 연관된 교과목 정보만을 받는다.
이 교과목이 우리 서비스와 연관이 있다는 정보는 대학교에서 해당 과목 정보를 생성할 때, 우리 서비스와 관련있다는 플래그값을 설정하도록 되어있다.
문제는 과목 정보를 생성하는 주체는 사람이라는 것이다. 사람은 누구나 실수를 한다.
분명히 우리 서비스와 연관된 교과목인데, 과목 정보가 넘어오지 않는다. 따라서, 조를 꾸릴 수 없다.
그래서 해당 서비스 담당자분께서 과목 정보가 넘어오지 않아 교과목을 생성할 수 없다고 하셨다. 나는 그럼 수기로 교과목 정보를 입력할 수 있도록 구현해주겠다고 했다.
여기서 발생한 문제가 있는데,
각 조별 팀장들은 교과목 정보를 바탕으로 팀을 생성한다. 문제는, 최초에 학적 DB로부터 정보를 받아오기로 했으므로 해당 팀장이 수강신청한 정보를 바탕으로 팀을 생성할 수 있는데, 수기로 입력한 교과목 정보는 받아올 수가 없다.
팀원을 선택할 때, 마찬가지로 해당 교과목을 수강신청한 학생만 검색이 가능해야 하는데 못한다.
...
단순히 고객의 편의를 위해 구현했는데, 이 구현으로 인해 여러가지 문제들이 발생해버렸다.
어떤 추가 요구사항이 온다면, 이 요구사항으로 인해 시스템에 바뀌는 것들을 고려해야 한다. PM님께서는 위와 같은 경우에는, 수기로 입력하는 것을 구현해줄 것이 아니라 해당 고객과 학적DB를 관리하는 정보통신원 두 부서가 조율하는게 맞다고 하셨다.
내가 쉽게 생각해서 구현한 결과, PM님에게 일이 생겨버렸다. 고객에게 전화해서 커뮤니케이션에 문제가 있었으며, 구현된 기능은 무효로 돌려야 된다고 전하셔야 한다.
그러니, 함부로 된다고 말하지 말자.
큰 힘개발에는 책임이 따른다.