외주 프로젝트는 어떻게 실패했는가

김민석·2023년 12월 27일
0

창업 회고록

목록 보기
4/4

개요

외주 개발을 맡았던 쇼핑몰 웹사이트 구축 프로젝트가 실패로 끝이 났다. 왜 이번 외주가 실패로 끝났는지 회고해보려 한다.

기획과 개발이 먼저, 디자인이 나중에?

내가 가장 크게 꼽는 실패 원인은 외주 발주처에서 기획조차 끝마치지 않은 상태로 프로젝트를 시작한 것이다.

보통 프로젝트는 기획이 완료된 후, 디자인을 완성한 후, 개발, 테스트 및 디버그, 릴리스 과정으로 이루어진다. 일단 내가 알고, 해왔던 프로젝트는 이러한 과정을 크게 벗어나지 않았다. 하지만 이번 프로젝트는 시작부터 기획이 완료되지 않았다.

이로 인한 단점을 꼭아보자면 다음과 같다.

  • 기획의 변경은 곧 요구사항의 변경인데, 이러한 변경이 변경 통제 위원회의 변경 통제 없이 이루어진다. 또한 스프린트 주기인 1,2주 단위로 요구 사항을 변경 할수 있어야하지만, 계속해서 표적이 바뀐다.
  • 디자인이 되어있지 않아, 개발 코드를 짤때, 깔끔한 페이지 구성이 아닌, 조잡한 구성의 요소들이 만들어진다.

사실상 위의 첫번째 단점으로 인해서 중복적인 개발이 2번, 3번씩 일어나게 되었다. 또한 DB나 서버의 코드까지 바뀌게 되었고, 이로 인해서 외주 예산의 초과로 인해 프로젝트는 중단되었다.

디자인 부분도 상당한 단점이었는데, 애매한 수치들이나 통일되지 않은 컴포넌트 활용으로 인해서 개발 소요 기간이 2배 이상 늘어나게 되었다.

파이어베이스... 편하긴 한데...

이전에도 파이어베이스를 써본적이 있다. 그 당시에는 react native 앱을 만드는데 사용했었다. 당시에도 firebase의 자체적인 제약으로 인해서 개발에 상당히 어려움이 있었던 것으로 기억한다.

이번이 두번째 파이어베이스 프로젝트인데, 이번 프로젝트에서 새삼스럽게 파이어베이스의 장점과 단점을 다시 한번 깨닫게 되었다.

장점이라면 서버를 구축하지 않고도 회원가입부터 DB, 저장소까지 모든 것을 제공해준다는 것이다. 그리고 그 외의 모든 것이 단점이었다.

firebase는 기본적인 string 검색도 지원하지 않았고, 직접 검색 기능을 구현해야만 했다. 또한 typescript에서 타입을 지원하지 않고 직접 as User 와 같은 형식으로 수동적으로 설정해야했다. 이는 nosql의 한계이기도 했지만, 개발 과정에서 상당한 스트레스로 다가왔다.

그리고 저번에도 느끼고, 이번에도 느끼는 가장 큰 단점.

프리티어의 사용량 자체가 너무 작다. 유저가 조금만 많이 몰리더라도 서버비용을 부담하기 어려울 정도의 가격 또한 단점이다.

바로 이전 프로젝트가 서버를 직접 만들고, AWS에서 호스팅한 프로젝트여서 그런지 이러한 단점들이 더욱 더 크게 느껴질수밖에 없었다.

QA? 그게 뭔가요?

이번 프로젝트는 세세한 플로우 자체도 구현되어있지 않아, 오류가 상당히 많이 났다. 이로 인해 에러는 수십개가 넘게 터져나왔다. 또한 오류가 많이 날 수 밖에 없었던 이유 중 하나는 브라우저마다 다르게 보이는 오류 때문이었다.

특히 사파리에서 오류가 많이 발견되었고, 그 다음으로는 크롬에서 오류가 많이 보였다. 정작 내가 주로 쓰는 브레이브 브라우저에서는 오류가 거의 발견되지 않아서 발주처에서 찾아낸 오류가 상당히 많았다.

이로인해 오류를 찾을때는 크롬과 사파리를 동시에 쓰는 버릇이 생겼다.

결국 프로젝트 종료

결국 예산 초과로 인해 프로젝트는 종료되었고, 언젠가의 후속 개발을 위해 프로젝트는 문서화된 후, 동결되었다. 현재 상태로 발주처의 마음에 들어맞는 정도의 디자인도 나오지 않았고, 오류도 많았으며, 더 개발을 하기 위해서는 더 많은 비용이 필요하기 때문이었다.

개인적으로도 프로젝트가 실패했다는 것에 대해 안타까운 마음이 크다.

이러한 일이 나타나지 않기 위한 방법

이러한 일이 다시는 나지 않게 하기위해서는 어떻게 해야할까?

일단 프로젝트의 시작 단계가 문제였다. 기획과 디자인이 완료된 프로젝트만 받아야 한다. 이는 서로의 잘못이라고 생각한다.

또한 변경통제에 관한 수칙을 프로젝트 시작 단계에서 설정하여, 고객이 기획과 디자인을 계속해서 변경할수 없도록, 이로 인해 더 신중한 기획을 하도록 강제하여야 한다.

또한 프로젝트 마감의 명시적인 기간을 설정하여, 추가적인 개발 소요에 대한 실제적인 장벽으로 기능하도록 설정해두어야한다.

마지막으로는 파이어 베이스. 이거 쓸바에는 돈을 더 받고 새로운 서버까지 구축하는 프로젝트를 받는 것이 나을 것이다.


마치며

프로젝트가 실패로 끝나서 마음이 아프다. 소프트웨어 공학에서 프로젝트의 30프로이상은 실패한다는 것이 여실히 느껴졌다.
특히나 소프트웨어 공학에서 배운 하면 안되는 행동들을 모두 실천한 상태로 실패했다는 것에서 참으로 후회되는 프로젝트였다.

profile
TS 풀스택&인공지능 개발자

0개의 댓글