Klien & Bisnis

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:

PekerjaanContoh
Analisis & desainWawancara pengguna, mockup, desain database
Manajemen proyekMeeting rutin, laporan kemajuan, koordinasi
QCMenulis dan menjalankan test case, pendampingan UAT
InfrastrukturPenyiapan server, SSL, backup, monitoring
Migrasi dataPembersihan dan pemindahan data lama
ImplementasiPelatihan per peran, pendampingan go-live
DokumentasiPanduan 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

  1. Latar belakang dan tujuan: masalah klien dengan bahasa mereka sendiri.
  2. Lingkup pekerjaan: daftar modul dan fitur yang termasuk.
  3. Di luar lingkup: hal yang tidak termasuk, ditulis secara eksplisit. Bagian ini sering menyelamatkan proyek dari perselisihan.
  4. Asumsi: misalnya "data master disediakan klien dalam format Excel paling lambat minggu ke-2".
  5. Jadwal dan tahapan, beserta hasil yang diserahkan di setiap tahap.
  6. Harga dan termin pembayaran.
  7. 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.