2016년 11월 28일 월요일

SI 프로젝트와 개발 문화

Q: 문화를 바꿔야 SI 프로젝트 수행이 쉬워진다는 것으로 정리하겠습니다. SI 프로젝트 수행이 어려운 두 번째 이유를 말씀해주시죠. 
SI 프로젝트는 고객의 요구사항을 정확히 적용해야 하기 때문에 처음부터 모든 것을 새로 개발하는 경우가 많았습니다. 이렇게 되면, 가장 큰 문제가 검증입니다. 아무리 능력이 뛰어난 개발자가 개발해도 단 한번에 성공하는 시스템은 없습니다. 반복해서 테스트해야 하고 문제가 없는지 되돌아 봐야 하기 때문에, 반복되는 작업에 점점 지쳐가는 것이죠. 그나마도 이젠 끝이라고 확신을 가질 수도 없습니다. 
저는 금융 프로젝트를 많이 했는데, 검증의 문제는 언제 어디서든 터질 수 있는 이슈사항이었지요. 이런 이유 때문에, 많은 SI 회사에서 품질이나 지원도구 같은 검증 도구를 많이 사용했지만, 우리가 인스펙션(Inspection), 워크스루(Walkthroghs), 통합 테스트 등을 하면서도 문제를 근본적으로 해결하기는 어려웠습니다(표1). 안타깝지만, 새로 만들었기 때문에 이러한 문제가 다소 발생하는 것을 인정해야 한다는 것입니다.  


<표1> 워크스루와 인스펙션의 정의 


Q: SI 프로젝트를 하면서 새로 개발하는 것은 어떻게 보면 당연한 일인데, 어떤 해결 방법이 있을까요? 
그림2에서 보는 것처럼, 유사한 기능을 가진 완성된 것들을 활용하자는 겁니다. 어떻게 보면, SI 프로젝트는 무조건 새로 개발해야 한다는 것은 우리가 만든 규칙인지 모릅니다. 새로 만드는 소프트웨어의 개수에 따라 비용이 지불된다는 암묵적인 약속 때문이겠지요. 비용 산정을 위해 LOC(Line of Code)나 기능점수(Function Point), 코코모(CoCoMo)를 찾는 것도 SI 프로젝트는 코딩의 규모만 반영되었다는 단편적인 증거가 될 것입니다. SI 프로젝트는 고객이 시스템을 이용해 업무를 원활히 할 수 있도록 해주는 것입니다. 컨설팅과 개발을 함께 갖고 있다고 생각해야 합니다. 



SI 프로젝트의 요구 사항과 필요 역량

Q: 시장과 사업 관점에서는 SI 프로젝트가 힘들 수 밖에 없다는 것을 인정해야 한다는 말씀으로 들립니다. 그렇다면, 프로젝트를 수행하면서 힘들 수 밖에 없는 근본적인 이유는 어디에 있을까요? 
얼마 전에 이 문제에 대해 모 대학의 소프트웨어공학 연구소와 분석해 본적이 있습니다. 두 가지 이유로 요약을 해보면, 첫 번째는 SI 프로젝트의 고객들은 소프트웨어를 너무 모르는데 개발자들은 너무 많은 것을 알려달라고 한다는 것이었습니다. 그리고, 두 번째는 고객들이 요구하는 것을 무조건 새로 만든다는 것이었습니다.


Q: 고객들이 소프트웨어를 너무 모르는데 많은 것을 물어본다고요?
네, 그렇습니다. 요구사항을 고객한테 받게 되는데, 개발자들은 전문 용어를 섞어가면서 물어보는데 고객은 잘 모르는 상태에서 대답하는 경우가 많다는 것이지요. 사실, 프로젝트 초기에는 개발자도 업무를 모르게 때문에 양쪽 모두 서로 모르는 상태에서 제일 중요한 요구사항을 정리하는 것입니다.


Q: 이전 인사이드이슈에서도 다뤘던 것 같습니다. 요구사항을 고객의 용어로 정리해야 한다는 말씀이지요?
고객의 용어로 정리하는 것은 매우 중요한 포인트입니다. 시스템을 완성하고 확인을 해줘야 하는 사람이 고객이기 때문에 고객의 용어로 정리하라는 것입니다. 어떻게 보면, 당연한 이야기인데 그 동안의 SI 프로젝트에서는 고객이 자꾸 요구사항을 변경한다고 싫어했던 기억이 있습니다. 이러한 문제를 해결하기 위해, 애자일이나 사용자 스토리 워크샵 같은 활동이 최근에는 활발히 적용되고 있습니다. 개발자에게 개발 역량뿐만 아니라 고객(사용자)를 이해하는 능력도 필요하다는 얘기입니다(그림4).


<그림4> 소프트웨어 개발자의 필요 역량 변화




침체된 SI 시장과 극복 방안

Q: SI가 시장 관점이나 개발자 관점 모두 어려운 것이 현실이라면 SI 프로젝트를 왜 하는 것인가요? 
이 것도 두 가지로 볼 수 있습니다. 먼저, 매출이 매우 크다는 점이지요. 단기간에 대형 시스템을 구축하려면, 많은 소프트웨어를 개발해야 하고 구동이 가능하도록 하드웨어도 설치해야 하지요. 이렇게 많은 매출을 발생시키기 때문에 회사의 규모를 키우기 위해서는 SI 프로젝트가 필요합니다. 하지만, 더 큰 이유가 두 번째인데요. SI 프로젝트는 소프트웨어 생명주기(Software Life Cycle)을 모두 포함하기 때문에 짧은 시간에 개발 역량을 성장시키는데 매우 적합합니다. 교육을 따로 시키지 않아도 실전으로 경험과 지식을 쌓을 수 있는 것이지요. 누가 뭐래도 IT 서비스 산업의 성장은 SI 프로젝트가 이끌었다는 것은 부정할 수 없을 겁니다. 
하지만, SI 시장에 뛰어드는 업체가 점점 많아지고 있고, 진입 장벽은 높지 않다 보니 대형 SI 업체들은 해외로 눈을 돌리거나 다른 부문으로 전환을 하는 추세입니다(그림3). 


<그림3> SI 업체의 사업부문 매출 현황 

출처: CEO 스코어