Mengapa Banyak Proyek Pengembangan Software Yang Gagal?

Sebelum membahas lebih jauh, mari kita sepakati dahulu definisi gagal dalam suatu proyek pengembangan software. Pada masa lalu, suatu proyek, apapun jenis proyeknya, akan dikatakan sukses apabila memenuhi batasan biaya, waktu dan kualitas. Pada saat ini persyaratan untuk sukses telah berkembang, bahkan untuk sebuah proyek pengembangan software harus memenuhi persyaratan di bawah ini.

 

  1. Proyek dapat selesai sesuai jadwal
  2. Proyek dapat selesai sesuai budget
  3. Sesuai dengan spesifikasi yang disepakati
  4. Dapat diterima oleh user
  5. Hanya ada sedikit perubahan scope dan itu disetujui kedua belah pihak
  6. Tidak mengganggu proses bisnis utama dari organisasi customer

Khusus untuk proyek software e-government, saya rasa perlu ditambahkan kriteria ke-tujuh, yaitu : (7) software digunakan dengan semestinya

Hal ini mengingat banyak proyek e-gov lahir bukan karena kebutuhan tetapi hanya sekedar ikut-ikutan deman e-government. Akibatnya, mungkin saja software berhasil dibangun sesuai jadwal dan budget serta memenuhi requirement awal, namun software tersebut tidak jadi digunakan dengan alasan politis

Satu dari ketujuh di atas tidak terpenuhi, maka proyek tersebut dapat dibilang gagal. Tentunya, gagal atau sukses bukan masalah hitam atau putih. Tetapi kegagalan dapat dibuat dalam beberapa tingkat mulai dari yang paling ringan sampai Gagal Total.

Hasil pengamatan penulis selama berkecimpung di dunia IT menunjukkan bahwa  mayoritas proyek software mengalami kegagalan, mulai sekedar kegagalan kecil (beberapa fungsi non-critical tidak berjalan), sampai pada kegagalan besar (banyak fungsi-fungsi yang tidak bisa berjalan). Bahkan tidak sedikit proyek yang harus distop karena sudah terlalu jauh dari rencana dan menjadikannya gagal total. Hanya sedikit sekali yang dapat dikatakan sukses karena memenuhi semua persyaratan di atas. Mengapa hal ini terjadi?

Setelah melakukan survey dan analisis, penulis berkesimpulan bahwa tidak ada faktor tunggal yang menyebabkan kegagalan suatu proyek pengembangan software. Paling tidak ada beberapa faktor yang saling terkait yang menyebabkan kegagalan proyek, antara lain.

  1. Tidak ada Spesifikasi Requirement atau Requirement yang ada jelek sekali
  2. Scope proyek melebar jauh
  3. Jadwal yang tidak realistis
  4. Testing yang jelek sekali

Mari kita bahas satu per satu:

Tidak ada SRS (Software Requirement Spec)

Tidak ada SRS ataupun SRS yang buruk merupakan penyebab utama kegagalan software. SRS adalah persyaratan-persyaratan kebutuhan yang harus dipenuhi dari suatu software yang hendak dibangun. SRS adalah petunjuk bagi seorang designer dan programmer dalam membuat software. Tanpa SRS, jalannya pembuatan software menjadi tidak terarah.

Mengapa SRS tidak dibuat?

Penyebabnya banyak, antara lain:

  • SRS dianggap tidak penting dan membuatnya dianggap hanya buang-buang waktu. Ini adalah pendapat yang salah dan sebagai konsultan IT kita mesti memberitahukan pentingnya pembuatan SRS ini.
  • Tidak tahu cara membuat SRS. Hal ini bisa dimaklumi karena membuat SRS bukanlah pekerjaan yang mudah. Mungkin merupakan pekerjaan tersulit dan paling tidak jelas dalam satu siklus pembuatan software. Membuat SRS berarti kita harus ngobrol banyak dengan user yang sering tidak ada waktu. Membuat pernyataan tertulis mengenai apa keiinginan kita bukanlah hal yg mudah, sering kali yg tertulis tidak bisa menyampaikan apa yg ada di kepala kita atupun user. Namun hal ini bisa dilatih! Dengan sering membuat SRS kita akan terbiasa dan menjadi ahli
  • User tidak mau membuat SRS karena dianggap kartu mati. Mereka takut kalau sudah membuat SRS maka developer akan membatasi permintaan user. Mungkin ada benarnya mereka, tetapi dibandingkan resiko kegagalan proyek? Lagipula SRS dalam prakteknya pasti akan berubah. Tinggal bagaimana kita membuat prosedur akan perubahan tersebut sehingga terkontrol
  • Mereka terlalu mempercayakannya semuanya kepada pihak developer. Bahkan walaupun developernya baik dan bertanggung jawab, keterlibatan user diperlukan dalam pembuatan SRS. Apalagi bila customer menemukan developer yang kurang baik, tentunya mereka akan membuat SRS yang menguntungkan dirinya dan mungkin merugikan customer.

Scope melebar jauh

Melebarnya scope termasuk salah satu yang paling sering terjadi dalam proyek software. Project Manager seringkali tidak mampu melahan laju pelebaran scope ini, akibatnya schedule molor dan bahkan proyek jadi tidak terfokus. Tidak jarang proyek yang harus distop karena pelebaran scope sudah sedemikian tidak bisa ditolerir.

Hal ini mungkin terkait dengan SRS yang buruk, karena waktu itu belum tuntas analisanya.  Mungkin di SRS hanya tertulis “Modul ini harus bisa menghasilkan billing pasien”. Setelah berjalan, muncul tambahan “Billing ini harus bisa tampil di internet”. Kemudian berkembang lagi “Billing di internet hanya bisa dibaca oleh pihak asuransi yang mana pasien tersebut melakukan claim”, dst.

Masalah scope ini memang termasuk yang sering terjadi. Bagaimana menghindarinya? Tugas ini bukan hanya milik seorang Project Manager, walaupun PM memegang peran sentral. Namun System Analyst juga memainkan peranan penting dalam mencegah melebarnya scope ini, yaitu yang terkait dengan User Requirement. Tugas System Analystlah untuk menggali seluruh User Requirement dan membatasinya sebelum proyek dimulai.

Jadwal yang tidak realistis

Penyebab utama lainnya dari kegagalan proyek adalah jadwal yang tidak realistis, bisa terlalu singkat atau terlalu panjang. Jadwal yang terlalu panjang membuat implementasi dari software bisa jadi kedaluarsa. Di jaman dengan tingkat perubahan yang cukup besar, bisa jadi sebelum software selesai dibangun sudah ada teknologi baru yang ingin diterapkan atau iklim bisnis sudah berubah. Untuk itu proyek pembuatan software hendaknya jangan terlalu panjang waktunya.

Namun demikian terlalu singkat juga tidak baik. Software yang dihasilkan kemungkinan besar belum matang dan masih mengandung error yang cukup banyak. Software yang memiliki error cukup significant akan segera  ditinggalkan oleh user dan mengakibatkan kegagalan proyek.

Banyak proyek pemerintah yang didanai oleh pinjaman asing yang memiliki time frame yang cukup singkat dan hampir tidak mungkin dikerjakan. Kebanyakan alasan yang dikemukan adalah bahwa pinjaman ini harus segera cair dalam tahun ini, kalau tidak, maka dana itu akan dikembalikan.

Bisa jadi, proyek-proyek yang didanai pinjaman asing, karena menggunakan konsultan asing menganggap sama proses development di Indonesia dengan di Amerika sana. Orang-orang di pemerintahan atau di perusahaan sana mungkin sudah siap untuk implementasi software, sehingga begitu ada proyek maka mereka sudah siap untuk mendukung. Sedangkan di Indonesia, SDM nya belum siap untuk implementasi software untuk itu perlu waktu yang cukup lama untuk meyakinkan mereka agar turut mensukseskan proyek tersebut.

Testing yang jelek tidak memadai

Testing adalah hal yang sangat penting dalam suatu proses pengembangan software untuk memastikan software yang dibangun sesuai dengan requirementnya. Testing meliputi Unit Testing, System Integration Testing dan User Acceptance Testing. Kesemuanya penting dilakukan, dan biasanya dilakukan oleh orang yang berbeda. Unit testing dilakukan oleh programmer masing-masing, System Integration Testing dilakukan oleh System Integrator dan User Acceptance Test dilakukan oleh user yang ditunjuk.

Testing seharusnya adalah yang berdasarkan requirement. Jadi kalau di requirement menyatakan harus bisa ini itu, maka testing akan membuktikannya. Masalahnya, sering terjadi tidak ada requirement atau requirementnya jelek. Maka yang terjadi adalah melakukan testing dengan asal, yaitu developer hanya diminta menunjukkan apa yang bisa dilakukan oleh software tersebut.

Beberapa developer menganggap sepele testing internal oleh mereka, dan membiarkan user yang menemukan error tersebut. Jadi, user dijadikan sebagai beta tester dari software tersebut. Masalahnya user sering tidak kompromi dan kalau menemukan error langsung meninggalkan software tersebut dan kembali ke manual, katanya lebih reliable!.

Demikianlah empay penyebab utama kegagalan proyek. Seperti dijelaskan di atas hampir semua penyebab utama ini terkait dengan Requirement yang menunjukkan pentingnya membuat requirement dengan baik itu. Tentu saja masih banyak faktor-faktor penyebab kegagalan proyek software, seperti kurangnya skill developer, project manager, rendahnya mutu SDM untuk operator, infrastruktur yang tidak memadai, dll.