Mengapa Proyek Perangkat Lunak Gagal dan Bagaimana Melindungi Proyek Anda

·6 menit baca·Ervandra Halim

Ringkasan

Proyek perangkat lunak biasanya gagal bukan karena masalah teknis, tapi karena kepemilikan keputusan yang kabur, cakupan yang terus bergeser, dan kabar buruk yang baru muncul saat tenggat waktu tiba, pola yang sama di balik pembangunan ulang yang diam-diam menghabiskan 400 juta rupiah tanpa hasil. Dalam pengalaman Ervandra Halim menangani proyek semacam ini, tiga kontrol mencegahnya: demo mingguan perangkat lunak yang berjalan, satu pengambil keputusan bernama di tiap pihak, dan pembayaran bertahap yang dikaitkan dengan pencapaian yang diterima.

  • Kegagalan proyek perangkat lunak hampir selalu ditentukan oleh cara proyek disiapkan, bukan oleh kualitas kode, karena kepemilikan yang tidak jelas, cakupan yang terus bergerak, dan berita buruk yang baru disampaikan saat tenggat waktu sudah membuat kerusakan tidak bisa dihindari lagi.
  • Tiga kontrol kontraktual, yaitu demo mingguan perangkat lunak yang berfungsi, satu pengambil keputusan bernama di tiap pihak, dan pembayaran bertahap yang terikat pada pencapaian yang diterima, terbukti mencegah pola kegagalan ini terlepas dari seberapa kuat tim tekniknya.
  • Pembeli non-teknis bisa melindungi proyeknya tanpa perlu bisa membaca kode, sebab tiga kontrol ini adalah soal struktur kontrak dan proses kerja, bukan soal kemampuan mengevaluasi kode.

Saya telah menghabiskan sebagian besar waktu lima belas tahun dipanggil setelah sebuah bangunan mengalami masalah. Fitur pembayaran yang terlambat tiga bulan. Sistem inventaris yang sebenarnya tidak dapat digunakan oleh siapa pun. Pembangunan kembali yang diam-diam menghabiskan 400 juta rupiah dan tidak menghasilkan apa pun. Ketika orang bertanya kepada saya mengapa proyek perangkat lunak gagal, mereka mengharapkan saya berbicara tentang kerangka kerja atau kode yang buruk. Kenyataannya tidak terlalu dramatis dan lebih bermanfaat: kegagalan hampir selalu diputuskan sebelum baris kode pertama, dalam cara proyek disiapkan.

Alasan mengapa proyek perangkat lunak gagal jarang sekali bersifat teknis. Ini bersifat organisasional. Kepemilikan tidak jelas, ruang lingkup terus bergerak, dan tidak ada yang menyampaikan berita buruk sampai tenggat waktu tiba dan tidak ada yang bisa ditunjukkan. Bagian baiknya adalah kegagalan inilah yang dapat dicegah oleh pembeli non-teknis, tanpa mengetahui cara membuat kode, menggunakan tiga kontrol yang dapat Anda terapkan dalam kontrak apa pun.

Apakah Kegagalan Proyek Itu Masalah Proses atau Masalah Kode?

Kegagalan proyek perangkat lunak jauh lebih sering merupakan masalah proses ketimbang masalah kode. Ketika sebuah bangunan runtuh, pemeriksaan mayat biasanya menemukan bentuk yang sama. Klien berasumsi vendor akan mengisi rinciannya. Vendor berasumsi klien akan mengklarifikasinya. Persyaratan berubah setiap minggu karena lima orang mempunyai pendapat dan tidak ada yang mempunyai wewenang. Dan karena tim hanya menunjukkan kemajuan melalui laporan status, semua orang percaya bahwa segala sesuatunya berjalan sesuai rencana hingga ternyata ternyata tidak.

Perhatikan bahwa semua ini bukan tentang bakat. Saya telah menyaksikan para insinyur yang kuat menghasilkan bencana dan tim rata-rata menghasilkan sistem yang solid. Perbedaannya adalah disiplin pengoperasian di sekitar mereka. Hal ini menggembirakan, karena disiplin adalah sesuatu yang Anda perlukan sebagai pembeli meskipun Anda tidak dapat mengevaluasi kodenya sendiri.

Kenapa Demo Mingguan Perangkat Lunak yang Berfungsi Begitu Penting?

Demo mingguan perangkat lunak yang berfungsi penting karena inilah upaya perlindungan paling ampuh yang bisa Anda terapkan: menolak menerima laporan kemajuan sebagai bukti kemajuan. Slide yang mengatakan "backend 70 persen selesai" tidak berarti apa-apa. Layar berfungsi yang dapat Anda klik berarti segalanya.

Jadi tuliskan dalam perjanjian: setiap minggu, tim mendemonstrasikan sesuatu yang sedang berjalan, di lingkungan nyata, yang dapat Anda sentuh. Bukan maket, bukan panduan kode, tapi perangkat lunak yang melakukan sesuatu.

  • Jika mereka dapat melakukan demo setiap minggu, proyek tersebut benar-benar hidup.
  • Jika demo tergelincir selama dua minggu berturut-turut, Anda telah menemukan masalah sejak dini, padahal perbaikannya masih murah.
  • Jika mereka menolak demo sepenuhnya, itulah jawaban Anda mengenai bagaimana enam bulan ke depan akan berjalan.

Demo mingguan mengubah risiko yang tidak jelas menjadi risiko yang terlihat. Anda berhenti menemukan masalah pada tenggat waktu dan mulai menemukannya selagi masih ada waktu dan anggaran untuk merespons. Ini adalah naluri yang sama di balik [mempersiapkan sistem Anda untuk lonjakan permintaan musiman] (/blog/preparing-systems-seasonal-traffic-spikes): Anda ingin melihat ketegangan sebelum momen yang penting, bukan selama momen tersebut.

Pengendalian 2: Satu pengambil keputusan di setiap pihak

Sebagian besar kekacauan cakupan terjadi karena terlalu banyak orang yang dapat mengatakan "bisakah kita menambahkan juga". Pemimpin pemasaran menginginkan satu hal, kepala operasi menginginkan hal lain, pemilik mengubah arah setelah pesaing meluncurkan sesuatu. Setiap permintaan terdengar kecil. Bersama-sama mereka menyusun jadwal.

Perbaikannya tidak menarik tetapi tegas. Sebutkan satu orang di pihak Anda yang memiliki keputusan produk, dan minta vendor menyebutkan satu rekannya. Setiap permintaan perubahan mengalir melalui dua orang tersebut. Semua orang bisa menyarankan, tapi hanya pengambil keputusan yang menyetujuinya.Ini melakukan dua hal. Ini menghentikan ruang lingkup diam-diam yang menjadikan proyek tiga bulan menjadi delapan bulan. Dan hal ini memberikan vendor satu suara yang bertanggung jawab, yang menghilangkan alasan favorit mereka yaitu "kami sedang menunggu keputusan". Ketika seseorang bernama manusia memiliki panggilan tersebut, keputusan sebenarnya dapat dibuat, dan keputusan tersebut dibuat lebih cepat.

Pengendalian 3: Pembayaran bertahap terkait dengan perangkat lunak yang berfungsi

Cara Anda menyusun pembayaran membentuk perilaku lebih dari klausul apa pun tentang kualitas. Bayar semuanya di muka dan Anda telah menyerahkan semua leverage Anda. Bayar murni berdasarkan waktu dan insentifnya adalah membutuhkan lebih banyak waktu.

Sebaliknya, bagi proyek menjadi beberapa tahap, dan kaitkan setiap pembayaran dengan hasil kerja yang dapat dibuktikan dan telah Anda terima.

Tahap Pemicu pembayaran
Pembukaan Rencana yang ditandatangani dan pengaturan lingkungan
Tonggak Sejarah 1 Fitur inti didemonstrasikan dan diterima
Tonggak Pencapaian 2 Kumpulan fitur kedua berfungsi ujung ke ujung
Peluncuran Sistem hidup dan berjalan dalam produksi
Stabilisasi Periode yang disepakati tanpa masalah kritis

Intinya jangan menekan vendor. Vendor yang adil akan menyambut baik hal ini, karena ini berarti mereka akan dibayar terus-menerus untuk kemajuan nyata dibandingkan memperebutkan sejumlah uang pada akhirnya. Ini menyelaraskan kedua sisi pada hal yang sama: perangkat lunak yang berfungsi, dirilis dalam beberapa bagian yang dapat Anda verifikasi.

Seperti Apa Bentuknya dalam Praktik?

Ketiga kontrol ini dalam praktik terlihat seperti pengalaman sebuah perusahaan distribusi yang saya sarankan, yang sebelumnya telah membakar satu vendor dan hampir menandatangani kontrak dengan vendor kedua dengan persyaratan jabat tangan yang sama. Kami hampir tidak mengubah apa pun tentang rencana teknis. Kami menambahkan tiga kontrol: demo mingguan, satu pemilik produk di pihak mereka, melakukan pembayaran berdasarkan pencapaian yang diterima.

Bangunan kedua tidak sempurna. Dua fitur datang terlambat dan satu fitur diam-diam dihapus karena tidak diperlukan. Namun perusahaan mengetahui setiap masalah tersebut dalam waktu seminggu setelah masalah tersebut terjadi, menelepon setiap kali masalah tersebut terjadi, dan hanya membayar sesuai dengan apa yang mereka terima. Proyek ini berhasil dilaksanakan, sesuai anggaran, dan masih berjalan. Itulah definisi sukses yang realistis: bukan tanpa masalah, tapi tanpa kejutan pada tenggat waktunya.

Jika Anda menginginkan versi yang lebih dalam dari pemikiran ini, perbedaan antara menyewa vendor bengkel dan memilih mitra yang bertanggung jawab sangat penting di sini. Saya menulis tentang hal itu di mengapa Anda harus berhenti mempekerjakan vendor dan mulai memilih mitra teknologi.

Kesimpulan praktis

Anda tidak perlu membaca kode untuk melindungi proyek perangkat lunak. Anda perlu menerapkan tiga hal yang akan diterima oleh tim jujur mana pun dan ditolak oleh tim lemah mana pun:

  1. Demo mingguan perangkat lunak yang berfungsi. Kemajuan yang dapat Anda klik, bukan slide yang harus Anda percayai.
  2. Satu pengambil keputusan di setiap sisi. Membunuh scope creep dengan mengarahkan setiap perubahan melalui pemilik yang disebutkan.
  3. Pembayaran bertahap terhadap hasil yang diterima. Pertahankan leverage dan tetap berikan insentif pada perangkat lunak yang berfungsi.

Masukkan ini ke dalam kontrak sebelum proyek dimulai. Di situlah alasan mengapa proyek perangkat lunak gagal biasanya ditulis, dan di situlah Anda bisa menulis akhir yang berbeda. Jika Anda lebih suka seseorang memegang disiplin tersebut bersama Anda, keterlibatan seperti itulah yang saya lakukan sebagai mitra teknologi.

manajemen proyekpengiriman perangkat lunakmempertaruhkancakupanvendor

Pertanyaan yang sering diajukan

Apakah tiga kontrol ini menjamin proyek berjalan tanpa masalah sama sekali?

Tidak, dan studi kasus di artikel ini membuktikannya: setelah tiga kontrol diterapkan, perusahaan distribusi tersebut tetap mengalami dua fitur yang terlambat dan satu fitur yang akhirnya dihapus karena dianggap tidak perlu. Yang berubah bukan jumlah masalahnya, tapi perusahaan tahu setiap masalah itu dalam waktu seminggu dan sempat mengambil keputusan, itulah definisi sukses yang realistis.

Bukankah mengaitkan pembayaran dengan pencapaian hanya cara untuk menekan vendor?

Justru sebaliknya. Vendor yang baik menyambut pembayaran bertahap karena artinya mereka dibayar terus-menerus untuk kemajuan nyata, bukan berebut satu pembayaran besar di akhir proyek. Skema ini menyelaraskan kepentingan kedua pihak pada satu hal yang sama, yaitu perangkat lunak yang benar-benar berfungsi dan dirilis dalam bagian-bagian yang bisa diverifikasi.

Apa bedanya demo mingguan yang sah dengan laporan status yang dibungkus seperti demo?

Demo yang sah adalah perangkat lunak yang berjalan di lingkungan nyata dan bisa diklik serta disentuh langsung oleh pembeli, bukan slide, bukan penjelasan kode, dan bukan klaim persentase seperti backend 70 persen selesai. Kalau yang ditunjukkan tidak bisa dioperasikan langsung, itu laporan status, bukan bukti kemajuan, dan tidak boleh diterima sebagai pemenuhan syarat demo mingguan.

Kenapa satu pengambil keputusan bernama di tiap pihak lebih penting daripada dokumentasi kebutuhan yang lengkap?

Karena sebagian besar kekacauan cakupan proyek muncul dari terlalu banyak orang yang bisa berkata bisa sekalian tambah ini, bukan dari dokumentasi yang kurang lengkap. Menetapkan satu pemilik keputusan di tiap sisi menghilangkan alasan favorit vendor soal masih menunggu keputusan, dan mencegah permintaan-permintaan kecil yang terlihat wajar satu per satu diam-diam membengkakkan proyek tiga bulan menjadi delapan bulan.

Ervandra Halim

Ervandra Halim

CPTO & Principal Architect

Ervandra Halim membantu owner dan leader memodernisasi operasional dan menerapkan AI setiap hari. Ia partner dengan beberapa bisnis dalam satu waktu, sebagian besar lewat referral.

Lanjut membaca

Engineering

Mengapa Proyek Perangkat Lunak Terlambat (Jarang Coding)

Mengapa proyek perangkat lunak terlambat: persyaratan yang tidak jelas, pertumbuhan cakupan yang tidak bersuara, dan pengambilan keputusan yang lambat menyebabkan lebih banyak penundaan daripada yang pernah terjadi pada bidang teknis. Apa yang dikendalikan oleh pemilik.

·5 min read

Engineering

Mengapa Proyek Perangkat Lunak Terlambat (Jarang Coding)

Mengapa proyek perangkat lunak tertunda, dari sisi pengiriman: perubahan persyaratan, keputusan yang lambat, dan ketergantungan yang tidak terlihat selalu mengalahkan pengkodean yang lambat.

·5 min read

Engineering

Kasus Teknologi yang Membosankan

Teknologi yang membosankan, tumpukan yang terbukti dengan mode kegagalan yang diketahui, mengalahkan alat yang menarik untuk sistem bisnis. Mengapa pilihan yang membosankan digabungkan menjadi keuntungan yang tahan lama.

·5 min read

© 2011–2026 Ervandra Halim