프로그램 개발 비용, 공수는 어떻게 세나
개발 비용은 화면 수가 아니라 공수로 정해집니다. 같은 화면인데 손이 서너 배로 벌어지는 이유, 견적서를 일곱 항목으로 나눠 받는 법, 기간이 늘어날 때 금액이 함께 늘어나는 자리와 오픈 뒤 매달 나가는 줄을 정리했습니다.

개발 비용은 화면 수가 아니라 공수로 정해집니다. 공수 — 그 일을 끝내는 데 사람이 며칠 붙어야 하는지를 센 값입니다. 견적서의 금액은 이 공수에 등급별 단가를 곱하고 라이선스 · 인프라 같은 실비를 더한 결과입니다. 그래서 금액을 낮추려 할 때 물어볼 것은 단가가 아니라, 지금 무엇이 공수를 키우고 있는가입니다.
같은 화면인데 왜 공수가 다른가요
목록만 보면 열 개는 열 개입니다. 그런데 화면은 종류에 따라 손이 서너 배까지 벌어집니다. 아래 세 종류로 갈라 세면 목록의 숫자가 실제 일의 양으로 바뀝니다.
| 화면 종류 | 하는 일 | 공수를 키우는 것 |
|---|---|---|
| 보여 주는 화면 | 정해진 내용을 그려 줍니다 | 화면 크기 대응 · 다국어 |
| 입력받는 화면 | 값을 받아 저장합니다 | 검증 규칙 · 권한 · 오류 처리 |
| 연동되는 화면 | 바깥 시스템과 값을 주고받습니다 | 연동처 개수 · 실패했을 때 처리 |
공수를 크게 키우는 것은 화면이 아니라 규칙입니다. 권한이 세 단계면 화면마다 세 번씩 확인하는 일이 생기고, 결제나 문서 발행이 걸리면 실패했을 때의 처리까지 만들어야 합니다. 요구사항에 「관리자만」 한 줄이 들어가면 그 한 줄이 전체 화면에 붙습니다.
화면에 보이지 않는 조건도 공수를 만듭니다. 동시에 몇 명이 쓰는지 · 자료를 몇 년 보관하는지 · 누가 무엇을 봤는지 기록을 남기는지가 여기에 들어갑니다. 요구사항에 없으면 견적에도 없고, 오픈한 뒤에 필요해지면 이미 만든 부분을 다시 손봅니다.
견적서는 어떤 항목으로 나뉘나요
한 줄로 온 금액은 조건을 바꿔도 어디가 움직였는지 알 수 없습니다. 아래 항목으로 나눠 받으면 범위를 조정할 때 어느 줄이 줄어드는지 바로 보입니다.
| 항목 | 포함되는 일 |
|---|---|
| 분석 · 설계 | 요구사항 정리 · 화면 설계 · 데이터 구조 |
| 디자인 · 퍼블리싱 | 화면 디자인 · 브라우저 대응 |
| 개발 | 화면 동작 · 서버 · 데이터베이스 |
| 연동 | 외부 시스템 · 결제 · 인증 |
| 테스트 · 이관 | 점검 · 데이터 이전 · 사용 교육 |
| 하자 대응 | 오픈 뒤 몇 개월 · 어디까지 |
| 실비 | 도메인 · 인증서 · 유료 서비스 사용료 |
항목별로 나눠 받으면 무엇이 얇은지도 함께 보입니다. 테스트와 이관은 견적에서 짧게 잡히기 쉬운 자리인데 실제로는 오픈 직전 2~3주를 쓰는 구간입니다. 데이터 이전이 있으면 옮길 자료의 양과 형식을 먼저 적어 두어야 이 줄의 공수가 잡힙니다.
단가는 사람 등급에 따라 다르고, 해마다 갱신되는 공표 자료가 따로 있습니다. 견적서에 등급별 인원과 투입 개월이 적혀 있으면 그 자료를 옆에 놓고 구성이 어떻게 짜였는지 읽을 수 있습니다. 숫자를 외울 필요는 없고 어느 등급이 몇 명 몇 개월인지만 확인하면 됩니다.
기간이 늘어나면 금액도 늘어나나요
공수가 같아도 기간이 늘어나면 금액이 함께 늘어나는 자리가 있습니다. 투입된 사람이 그 기간 동안 붙어 있어야 하기 때문입니다. 반대로 사람을 두 배로 넣는다고 기간이 절반이 되지도 않습니다 — 서로 맞춰야 하는 부분이 늘어 확인하는 시간이 같이 늘기 때문입니다.
기간을 늘리는 것은 대개 결정이 밀리는 자리입니다. 화면에 들어갈 문구 · 정책 · 담당자 확인이 늦어지면 개발은 멈추고 그 기간의 인건비는 그대로 나갑니다. 견적서에 회신 기한이 적혀 있다면 그 줄이 이 계산과 이어져 있습니다.
재작업도 같은 자리입니다. 설계 단계에서 바꾸면 문서를 고치면 되지만, 개발이 끝난 뒤 바꾸면 화면 · 서버 · 데이터가 함께 움직입니다. 그래서 견적에는 「언제까지 무엇을 확정한다」를 함께 적어 두어야 그 금액대로 끝납니다.
매달 나가는 돈은 어디에 적혀 있나요
개발비는 한 번 내고 끝나지만 만들어진 업무 시스템은 계속 돌아갑니다. 아래 항목은 오픈한 달부터 매달 또는 매년 나갑니다. 견적서에 이 줄이 없으면 예산 밖에서 나가게 됩니다.
| 계속 나가는 항목 | 확인할 것 |
|---|---|
| 서버 · 저장 공간 | 사용량이 늘면 어떻게 오르나 |
| 도메인 · 인증서 | 갱신 주기와 갱신일 |
| 유료 외부 서비스 | 건당인지 월정액인지 |
| 유지보수 | 범위와 연락 가능한 시간 |
요청하는 방법은 간단합니다. 견적을 받을 때 「오픈 후 12개월 동안 매달 나가는 금액」을 한 줄 더 적어 달라고 합니다. 사용량에 따라 달라지는 항목은 예상 사용량을 함께 적어 보내면 그 기준으로 계산해 옵니다.
유지보수는 범위를 적어야 금액이 정해집니다. 오류를 고치는 일까지인지 · 화면 문구를 바꾸는 일까지인지 · 기능을 더하는 일까지인지 세 단계로 나눠 적으면 됩니다. 기능을 더하는 일은 대개 별도이므로 그때의 계산 방식을 한 줄 넣어 두면 매번 다시 정하지 않습니다.
예산이 정해져 있으면 무엇부터 줄이나요
줄이는 순서는 범위 → 자동화 → 디자인입니다. 1차 오픈에서 뺄 화면을 먼저 정합니다. 다음은 사람이 손으로 해도 되는 일을 자동으로 만들지 않는 것입니다 — 하루 몇 건뿐인 작업은 관리자가 직접 처리하고 나중에 붙입니다. 디자인은 화면 종류별 기본형을 정해 재사용하면 줄어듭니다.
범위를 줄일 때는 화면을 통째로 빼는 편이 낫습니다. 한 화면 안에서 기능을 반만 남기면 나중에 나머지를 붙이는 일이 처음부터 만드는 것과 비슷해집니다.
줄이지 않는 것도 정해 둡니다. 데이터 구조 · 권한 · 기록은 나중에 바꾸면 이미 만든 화면을 다시 손봐야 합니다. 여기서 아낀 금액은 다음 단계에서 더 큰 공수로 돌아옵니다.
오늘 할 일
가지고 있는 화면 목록을 열고 각 줄 옆에 보여 주는 · 입력받는 · 연동되는 셋 중 하나를 적습니다. 연동되는 화면 옆에는 어디와 연동하는지도 적습니다. 30분이면 끝나고, 이 표를 그대로 보내면 돌아오는 견적서가 한 줄이 아니라 항목별로 옵니다.