Tetap gesit dengan kebijakan zero-bug / cacat

18

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.

Avi
sumber
2
Saya tahu ini hanyalah sebuah contoh, tetapi menyingkirkan scrollbar yang tidak perlu adalah fitur. Sekarang jika Anda mencoba untuk mengimplementasikan fitur ini dan dan itu tidak berfungsi, Anda memiliki bug.
JeffO
Anda harus bersedia menerima gagasan bahwa bug Anda-selalu-menjadi-prioritas utama dalam melakukan sesuatu mungkin bukan hal yang tepat untuk kebutuhan Anda.
Blrfl
@ Jeffe - Saya kira Anda setuju dengan saya dengan cara. Anda hanya menyebutnya sebuah cerita daripada menyebutnya bug. Yang memang baik bagi saya untuk kasus ini.
Avi
3
Ada perbedaan besar antara "terdengar menarik dan benar" dan "menyelesaikan pekerjaan yang membuat orang yang menggunakan produk Anda bahagia." Jika 0-bug terbukti mencegah Anda mencapai yang terakhir, itu adalah hal yang salah. Saya yakin manajemen Anda akan menyukai memiliki waktu ekstra untuk membual tentang metodologi setelah pelanggan Anda menemukan orang lain untuk menyediakan apa yang mereka butuhkan.
Blrfl
1
@ Avi - Sepertinya itu adalah fitur yang harus diselesaikan sehingga pendekatan tangkas Anda saat ini tidak menunda versi baru di masa depan.
Ramhound

Jawaban:

28

Memperbaiki bug sebelum menulis kode baru sebenarnya adalah salah satu dari dua belas poin tes Joel . Joel juga menjelaskan mengapa ini harus dimiliki:

Secara umum, semakin lama Anda menunggu sebelum memperbaiki bug, semakin mahal (dalam waktu dan uang) untuk memperbaikinya.

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.

Arseni Mourzenko
sumber
+1 Tes Joel muncul di benak saya begitu saya membaca judulnya!
jkoreska
1
Tambahannya adalah bahwa ada cara berdampak lebih rendah untuk "menangani" bug. Jika Anda memiliki scrum kuat yang pandai mengelola bug, maka mungkin menyatakan bahwa bug akan sedikit ditunda dapat diterima ... asalkan tim Anda benar-benar memperbaiki bug yang mereka janjikan akan diperbaiki nanti. Jika bug mulai menumpuk, maka metodologi itu telah gagal, dan Anda harus kembali ke bahasa draconian "selalu perbaiki semua bug terlebih dahulu."
Cort Ammon - Reinstate Monica
Saya pikir hal penting untuk ditambahkan adalah mempertimbangkan berapa lama bug itu diperbaiki. Bug yang disebutkan OP terdengar seperti perbaikan yang cukup sederhana, jadi apakah itu benar-benar membuat fitur terlambat? Jika jawabannya tidak, maka perbaiki saja. Jika jawabannya ya, maka mungkin lebih kompleks. Saya selalu memikirkan bagian dari tes Joel ini seolah mudah memperbaikinya. Jika rumit, perbaiki karena Anda tidak ingin meninggalkan tugas yang rumit terlalu lama karena lupa cara kerja dan regresi.
MikeS159_Funding_Monica
13

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 :

Individu dan interaksi atas proses dan alat

Menanggapi perubahan setelah mengikuti rencana


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 :

Individu dan interaksi atas proses dan alat
dan kami memiliki proses dan alat wajib untuk mengontrol bagaimana individu-individu (kami lebih suka istilah 'sumber daya') berinteraksi

Bekerja perangkat lunak melalui dokumentasi yang komprehensif
selama perangkat lunak tersebut didokumentasikan secara komprehensif

Kolaborasi pelanggan atas negosiasi kontrak
dalam batas-batas kontrak yang ketat, tentu saja, dan tunduk pada kontrol perubahan yang ketat

Menanggapi perubahan setelah mengikuti rencana
asalkan ada rencana terperinci untuk merespons perubahan, dan diikuti dengan tepat


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.

  • Apakah Anda kebetulan bekerja pada perangkat lunak mission mission? Saya bertanya karena dalam kasus ini, zero bug policy masuk akal dan layak untuk mengkompromikan prinsip agile / non-agile / apa pun. Padahal aku kesulitan membayangkan proses lincah dalam kasus ini.

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?

agas
sumber
1
+1 - Saya sangat menyukai cara Anda menggambarkannya. Meskipun ini bukan solusi yang tepat, tetapi itu membenarkan perasaan saya ketika saya benar-benar mendukung metode ini, tetapi saya percaya bahwa dengan gesit semuanya harus dinegosiasikan.
Avi
12

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:

  1. Ini bug asli dan harus diperbaiki secepatnya: letakkan di atas backlog
  2. Ini bug asli, tetapi tidak penting untuk berfungsinya aplikasi: ubah itu menjadi cerita biasa dan biarkan pemilik produk memprioritaskannya.
  3. Ini bukan bug, atau duplikat atau tidak sepadan dengan upaya untuk menyelesaikannya: tolak dengan alasan yang tepat.

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.

Bart van Ingen Schenau
sumber
2
Yap, meskipun Anda harus memastikan bahwa penentuan prioritas dilakukan dengan alasan yang tepat (nilai bisnis) dan tidak menggunakan "asal" (permintaan fitur versus laporan pengujian versus bug yang dilaporkan dari lapangan) sebagai kriteria "pengurutan" di mana permintaan fitur selalu datang sebelum ...
Marjan Venema
2

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 ......

mattnz
sumber
Itu ide yang bagus! Saya akan membawanya ke tim saya untuk diskusi! Saya pikir ini masih membutuhkan beberapa peningkatan lagi yang akan saya coba pikirkan. Tapi saya suka ide dasarnya.
Avi
Ok, jadi setelah kami membahasnya, kami menyadari bahwa itu mungkin membawa kami ke tempat yang sama persis di mana banyak bug beralih ke level 1: /
Avi
Itulah intinya - jika Anda menyimpan bug yang tidak diperbaiki cukup lama sehingga mereka menumpuk di bagian atas beban kerja, Anda tidak mengikuti aturan Anda. Anda hanya mengakumulasi hutang teknis.
Ross Patterson
0

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.

JeffO
sumber
-1

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 :)

Arun
sumber
Pemilih Turun: Apakah saya melewatkan sesuatu? Atau apakah ini benar-benar aneh untuk pertanyaan yang diajukan? Harap jangan turunkan suara tanpa alasan apa pun. Jika ada, berikan.
Arun