Cara Menyusun Estimasi dan Penawaran Proyek Software
Langkah menyusun estimasi dan proposal penawaran proyek software yang realistis: memecah lingkup kerja, menghitung man-day, menentukan harga, termin pembayaran, dan mengelola perubahan lingkup.
Penawaran yang terlalu murah membuat proyek merugi dan tim kelelahan. Penawaran yang terlalu mahal tanpa penjelasan membuat klien pergi. Kuncinya adalah estimasi yang bisa dipertanggungjawabkan dan dokumen penawaran yang jelas batasannya.
1. Pecah lingkup kerja (WBS)
Mulailah dengan Work Breakdown Structure: pecah proyek menjadi modul, lalu fitur, sampai setiap bagian cukup kecil untuk diperkirakan (idealnya 1–5 man-day). Contoh untuk aplikasi klinik:
- Master data: pasien, dokter, poli, tarif, obat
- Pendaftaran dan antrean
- Rekam medis: anamnesis, pemeriksaan, diagnosis, resep
- Farmasi: stok dan penyerahan obat
- Kasir dan laporan keuangan
- Integrasi: BPJS, SATUSEHAT
2. Jangan lupakan pekerjaan di luar koding
Bagian inilah yang paling sering membuat proyek merugi:
| Pekerjaan | Contoh |
|---|---|
| Analisis & desain | Wawancara pengguna, mockup, desain database |
| Manajemen proyek | Meeting rutin, laporan kemajuan, koordinasi |
| QC | Menulis dan menjalankan test case, pendampingan UAT |
| Infrastruktur | Penyiapan server, SSL, backup, monitoring |
| Migrasi data | Pembersihan dan pemindahan data lama |
| Implementasi | Pelatihan per peran, pendampingan go-live |
| Dokumentasi | Panduan pengguna, dokumentasi teknis |
Sebagai patokan kasar, pekerjaan nonkoding bisa sama besarnya, atau bahkan lebih besar, daripada koding itu sendiri. Porsinya bergantung pada jenis proyek dan klien.
3. Estimasi dengan tiga titik
Untuk setiap bagian, minta orang yang akan mengerjakannya memberi tiga angka: optimis, paling mungkin, dan pesimis. Gabungkan dengan rumus PERT, lalu tambahkan cadangan risiko. Hitungannya bisa langsung dilakukan dengan kalkulator estimasi proyek.
4. Dari man-day ke harga
Harga = (total man-day × tarif per man-day) + biaya langsung + margin
- Tarif per man-day mencakup gaji, tunjangan, dan porsi biaya kantor, alat, serta waktu yang tidak ditagihkan, bukan hanya gaji harian.
- Biaya langsung: lisensi, server atau cloud, domain, sertifikat, transportasi dan akomodasi ke lokasi klien.
- Margin untuk keuntungan dan pertumbuhan usaha.
Pisahkan juga biaya sekali bayar (pengembangan dan implementasi) dari biaya berulang (hosting, pemeliharaan, dukungan). Jika ada fitur AI, masukkan juga perkiraan biaya API-nya dengan kalkulator biaya API AI.
5. Isi dokumen penawaran
- Latar belakang dan tujuan: masalah klien dengan bahasa mereka sendiri.
- Lingkup pekerjaan: daftar modul dan fitur yang termasuk.
- Di luar lingkup: hal yang tidak termasuk, ditulis secara eksplisit. Bagian ini sering menyelamatkan proyek dari perselisihan.
- Asumsi: misalnya "data master disediakan klien dalam format Excel paling lambat minggu ke-2".
- Jadwal dan tahapan, beserta hasil yang diserahkan di setiap tahap.
- Harga dan termin pembayaran.
- Garansi dan dukungan: masa garansi perbaikan bug, SLA, dan biaya pemeliharaan setelahnya.
6. Termin pembayaran yang sehat
Kaitkan pembayaran dengan tahapan yang jelas hasilnya, misalnya: uang muka saat kontrak, lalu pembayaran setelah UAT, setelah go-live, dan pelunasan setelah masa garansi. Pola seperti ini menjaga arus kas tim sekaligus memberi rasa aman bagi klien.
7. Kelola perubahan lingkup
Permintaan tambahan hampir pasti muncul. Sepakati prosedurnya sejak awal: setiap perubahan dicatat dalam formulir permintaan perubahan, diestimasi, lalu disetujui klien secara tertulis, termasuk dampaknya pada biaya dan jadwal. Tanpa prosedur ini, "tambahan kecil" bisa menumpuk menjadi proyek kedua yang tidak dibayar.
Presentasikan nilainya, bukan hanya harganya
Sertakan perkiraan manfaat bagi klien, seperti penghematan waktu, berkurangnya klaim yang tertolak, dan kepatuhan regulasi. Perhitungan ROI dan payback period membantu pengambil keputusan melihat penawaran sebagai investasi, bukan sekadar biaya. Tips menyampaikannya ada di artikel menjelaskan keputusan teknis kepada klien non-teknis.