Dalam proyek kami, kami bekerja dalam metodologi zero-bug (alias zero-defect). Gagasan dasarnya adalah bahwa bug selalu lebih tinggi dalam prioritas daripada fitur. Jika Anda mengerjakan sebuah cerita dan memiliki bug, itu harus diselesaikan agar cerita tersebut dapat diterima. Jika ada bug yang ditemukan selama sprint untuk cerita yang lebih lama, kita harus meletakkannya di backlog kita dan menyelesaikannya - prioritas utama.
Alasan saya mengatakan tekad adalah bahwa kami tidak selalu memperbaiki bug. Kadang-kadang kita hanya menyatakan "tidak akan memperbaiki" karena itu tidak penting. Secara keseluruhan, ini terdengar hebat. Kami mengirimkan produk-produk berkualitas tinggi dan tidak membawa "punuk" dalam bentuk tumpukan bug yang sangat besar.
Tapi saya tidak yakin pendekatan ini benar. Saya cenderung setuju bahwa kita selalu perlu memperbaiki bug serius secepatnya dan kita perlu membuang bug yang tidak menarik. Tetapi bagaimana dengan bug yang penting tetapi tidak sepenting fitur baru? Saya cenderung berpikir mereka harus diarsipkan dengan prioritas yang sesuai.
Saya akan memberikan contoh agar lebih jelas - dalam proyek saya, kami bekerja dengan UI yang ditulis dengan flex. Kami memiliki layar panduan yang terbuka pada ukuran yang sama untuk setiap resolusi layar. Ternyata ketika kita memperpanjang jendela wizard, salah satu halaman tidak terlihat bagus (ada bilah gulir vertikal yang tidak hilang meskipun wizard sekarang dapat menampilkan semuanya dan tidak memerlukan bilah gulir). Saya pikir bug ini jelek. Saya yakin itu HARUS diperbaiki. Tapi kami berada di jadwal yang ketat dan kami memiliki banyak fitur yang kami khawatir tidak akan memotong dan memasuki rilis. Saya merasa kita bisa hidup dengan bug semacam itu. Memang perlu diperbaiki tetapi pada prioritas yang lebih rendah daripada fitur lain (jadi, jika kita tidak akan dapat menyelesaikannya, setidaknya kita tidak meninggalkan fitur yang lebih penting). Tapi,
Saya ingin mendengar pendapat tentang cara mengelola bug yang tidak ingin saya tandai sebagai "tidak akan diperbaiki" tetapi juga bukan yang paling penting.
Jawaban:
Memperbaiki bug sebelum menulis kode baru sebenarnya adalah salah satu dari dua belas poin tes Joel . Joel juga menjelaskan mengapa ini harus dimiliki:
Anda punya pilihan:
Entah Anda menerapkan fitur yang sangat diminta dan menunda memperbaiki bug, yang pasti akan meningkatkan biaya memperbaikinya,
Atau Anda memperbaiki bug sekarang, mengingat bahwa pelanggan akan kecewa bahwa Anda begitu lambat dalam memberikan fitur yang sangat mereka butuhkan.
Jika bug tidak terlalu penting, sementara fitur tersebut, manajemen akan cenderung untuk meminta untuk mengimplementasikan fitur tersebut terlebih dahulu, kemudian memperbaiki bug. Dari segi bisnis, ini adalah pilihan yang benar-benar valid, sejauh manajemen jelas memahami konsekuensinya, yaitu bahwa akan lebih sulit untuk memperbaiki bug lebih lambat daripada sekarang.
Berpegang teguh pada "tidak ada fitur baru sampai semua bug diperbaiki" mungkin bukan pilihan bisnis terbaik. Anda sudah menyebutkan batasannya, jadi tidak perlu dijelaskan.
Ini dikatakan, risiko membiarkan fitur yang sangat penting diimplementasikan sebelum memperbaiki bug kecil memiliki risiko: di mana harus membatasi? Apakah fitur yang diminta oleh 1.000 pelanggan lebih penting daripada bug yang ditemui oleh 100 pelanggan? Bagaimana cara mengevaluasi apakah fitur yang diberikan harus dilakukan sebelum memperbaiki bug yang diberikan?
Tanpa aturan ketat dan jika manajemen tidak memahami proses pengembangan dengan sangat baik, Anda mungkin melihat diri Anda dalam beberapa tahun dengan tumpukan penuh bug yang dianggap tidak cukup penting untuk diperbaiki sebelum hanya fitur mewah lainnya.
sumber
Selain menyelam ke detail tingkat rendah tertentu dari situasi Anda, Anda lebih baik memastikan bahwa Anda sudah benar, hal-hal mendasar.
Dalam hal ini, saya percaya sangat penting untuk menunjukkan bahwa kebijakan yang Anda sebutkan, "bug selalu lebih tinggi dalam prioritas daripada fitur", khususnya kata yang selalu menyimpang dari setidaknya dua dari empat prinsip yang dinyatakan dalam Agile Manifesto :
Saya tidak bersikeras bahwa Anda harus mengubah kebijakan, karena saya sangat percaya bahwa seseorang harus gesit tentang penerapan prinsip-prinsip tangkas.
Tetapi Anda harus setidaknya sadar ketika Anda menyimpang dan memahami apakah dan bagaimana penyimpangan dibenarkan . Sederhananya, Anda lebih baik memastikan bahwa apa yang Anda sebut "lincah", tidak benar-benar meluncur ke dalam kepalsuan yang tidak masuk akal, sehingga secara fasih dibahas dalam Half-Arsed Agile Manifesto :
Demi kelengkapan, bukan hanya prinsip gesit yang tampaknya menyimpang dari kebijakan zero-bug.
Dalam proyek-proyek non-agile yang saya ikuti, secara umum dianggap er ... tidak bijaksana untuk menghabiskan waktu programmer memperbaiki bug yang tidak cukup penting untuk membenarkan penundaan rilis fitur prioritas tinggi.
Karena itu, manajemen biasanya menghabiskan (mungkin akan lebih akurat untuk mengatakan diinvestasikan ) beberapa upaya untuk memutuskan bug apa yang bisa menunggu untuk rilis berikutnya.
Anda tahu, kecuali Anda bekerja pada perangkat lunak misi kritis, saya akan merekomendasikan untuk lebih dekat menilai keterampilan dan kemampuan berpikir manajemen Anda.
Maksud saya, dari apa yang Anda jelaskan, tampaknya itu tidak dapat digunakan untuk memprioritaskan bug dan fitur dengan benar. Jika ini masalahnya, jika mereka tidak dapat menangani tugas yang relatif rutin seperti itu, apa lagi yang tidak mampu mereka lakukan? Memberikan gaji yang kompetitif? peluang pertumbuhan karier? kondisi kerja?
sumber
Seperti yang Anda tunjukkan dengan benar, kebijakan zero-bug memiliki risiko masalah-masalah non-kritis diabaikan atau didorong di bawah permadani, karena sekarang bukan waktu terbaik untuk menyelesaikannya.
Yang bisa Anda lakukan adalah, ketika masalah baru dilaporkan, buat keputusan tiga arah:
Dengan cara ini, masalah yang kurang penting tidak akan sepenuhnya dilupakan, tetapi mereka juga tidak memaksa semua fitur mengkilap baru keluar dari sprint berikutnya. 'Ubah menjadi cerita' hanya agar manajemen dapat terus mengklaim bahwa Anda mengikuti kebijakan zero-bug dan pemilik produk harus dapat menyeimbangkan pentingnya masalah dengan pentingnya fitur di backlog.
Perhatikan bahwa, dengan prosedur ini, masalah seperti bilah gulir yang Anda sebutkan mungkin masih belum terselesaikan pada akhir proyek, tetapi kemudian itu karena tidak ada yang menganggapnya cukup penting (termasuk pelanggan), bukan karena tidak ada saat masalah ditemukan.
sumber
Namun, saya suka skema Anda, seperti yang telah Anda identifikasi, hanya perlu sedikit perubahan untuk membuatnya bekerja - Seperti yang telah Anda amati, kenyataannya sering kali fitur baru mengalahkan perbaikan bug .....
Saran saya adalah untuk memaksa peningkatan bug prioritas setiap sprint. Katakanlah Anda memiliki bug di level 5 (skala 1-tinggi, 5 = rendah). Ini dimulai sebagai 5, 4 sprint kemudian, ini adalah bug level 1. Namun, pola pikir yang diperlukan untuk perhitungan prioritas adalah "Prioritas saat ini - Jumlah Sprint", daripada "Tingkatkan prioritas bug yang beredar di akhir setiap sprint" - ini mencegah prioritas yang "diatur ulang" ke rendah untuk menunda lebih lanjut.
Bug level 1 harus diatasi dalam sprint berikutnya ......
Mudah dijelaskan, mudah diimplementasikan ....
Sekarang, sejauh itu untuk permintaan fitur, mungkin tingkat yang berbeda. Setelah beberapa saat, permintaan harus ditangani - baik dilakukan atau dibuang, mencegah tumpukan fitur yang tidak memiliki nilai ......
sumber
Anda mendapat masalah ketika Anda mencoba untuk menjadi terlalu harfiah atau bersikeras tentang apa pun dalam pengembangan perangkat lunak sebanyak yang kita semua benar-benar ingin hal-hal dipotong dan dikeringkan. Bug harus diperbaiki sebelum fitur baru ditambahkan, tapi saya masih akan mempertimbangkan pentingnya masing-masing ketika membuat keputusan ini bersama dengan ruang lingkup masalahnya. Ada pengecualian untuk semuanya.
Beberapa aplikasi sangat besar sehingga memiliki bagian yang tidak terkait sama sekali. Saya tidak melihat mengapa setiap fitur baru dari modul hutang dagang harus ditunda, karena ada beberapa bug yang mengganggu dalam manfaat karyawan GUI. Jika beberapa langkah penyihir gangguan GUI ditemukan di bagian pembelian situs web perusahaan, perbaiki, tetapi banyak bug mungkin harus diperbaiki jika fitur yang ditambahkan adalah hasil dari keamanan tambahan, kebutuhan bisnis, dan terutama perubahan peraturan.
Selain perbedaan besar dalam waktu dan sumber daya untuk menyelesaikan keduanya, yang terbaik untuk mendapatkan beberapa input pengguna / pelanggan. Jika mereka dapat hidup dengan bug jika itu berarti mendapatkan fitur baru, tambahkan fitur tersebut. Tujuannya adalah untuk menghindari membiarkan bug menumpuk, sehingga memiliki celah berhenti. Pada titik tertentu banyak masalah kecil menjadi masalah besar.
sumber
Menulis tes untuk menunjukkan bug saat menjalankan tes adalah awal yang baik untuk memperbaiki bug. Tetapi ketika mencoba untuk memperbaiki bug yang memiliki prioritas yang paling rendah maka kita harus berpikir dua kali sebelum melanjutkan. Saya tidak bermaksud melewatkan perbaikannya. Tetapi kita dapat menggunakan sumber daya tidak kritis untuk memperbaiki bug itu. Katakanlah, di tim saya, kami melatih sumber daya baru dengan bug yang paling tidak diprioritaskan dalam daftar bug. Dengan cara ini, kami mendapat kesempatan untuk melatih sumber daya baru serta memberi warna kepercayaan pada mereka bahwa mereka telah membuat perbaikan dalam entri mereka ke aplikasi. Ini tentu akan membuat mereka menjadi sukarelawan untuk tugas yang diprioritaskan berikutnya.
Semoga ini membantu :)
sumber