Seberapa sering Anda melepaskan selama sprint. Hanya di akhir sprint atau setiap kali fitur siap. Dan bagaimana Anda menangani rilis perbaikan bug?
Seberapa sering Anda melepaskan selama sprint. Hanya di akhir sprint atau setiap kali fitur siap. Dan bagaimana Anda menangani rilis perbaikan bug?
Jawaban:
TL; DR: Lepaskan kapan saja sesuai
Kami melakukan rilis setiap kali ada nilai dalam melakukan rilis. Terkadang itu berarti melakukan rilis setelah satu fitur atau perbaikan bug selesai. Terkadang itu berarti melepaskan kumpulan fitur dan / atau perbaikan bug.
Ini tidak berarti kita sering memiliki "darurat" yang memerlukan rilis cepat. Itu berarti kami telah bekerja keras untuk membuat rilis mudah. Kode kami diuji, ditandai dan dikemas dengan setiap build. Kami menggunakan tes penerimaan otomatis dan sebagai hasilnya kami telah mengembangkan tingkat kepercayaan yang tinggi pada kode yang lulus tes itu. Karena paket kami segera tersedia melalui yum repo lokal, menyebarkan rilis itu sepele.
Tidak pernah selama. Itu melanggar premis dasar dari "sprint". Anda menjalankan sampai Anda menyelesaikan apa yang Anda berkomitmen untuk menyelesaikan. Setelah Anda selesai, itu benar-benar dilakukan dan benar-benar berfungsi. Anda kemudian dapat melepaskannya.
Rilis dapat berupa jenis sprint terpisah di mana barang dikemas untuk rilis.
Rilis perbaikan bug dapat berupa sprint pendek. Tidak memiliki jadwal reguler sprint dengan panjang yang sama dianggap oleh banyak orang sebagai ide yang buruk. Oleh karena itu, aturan yang biasa adalah bahwa perbaikan bug hanyalah pekerjaan prioritas tinggi yang terjadi selama sprint berikutnya .
Jika ini darurat, Anda memiliki terlalu banyak hal yang terjadi - dukungan dan pengembangan - dan Anda harus mempertimbangkan untuk mengubah organisasi agar lebih sedikit hal yang terjadi.
Jika pekerjaan yang dilakukan oleh tim kondusif untuk melakukan beberapa rilis dalam sprint, lepaskan sesering yang Anda inginkan.
Hal yang sama berlaku untuk rilis perbaikan-cacat - jika masuk akal untuk melepaskannya, lakukanlah.
Pekerjaan Agile terakhir yang saya kerjakan memiliki rilis setiap sprint; kode dibekukan setiap Kamis (sprint dua minggu), dan kemudian produk tersebut dikemas dan diterbitkan ke server UAT untuk klien kami untuk bekerja dengan. Ini selama pengembangan awal produk; untuk produk yang matang, terutama program yang dapat didistribusikan dan bukan aplikasi web, Anda mungkin tidak ingin membebani pengguna dengan peningkatan setiap dua hingga tiga minggu.
Hampir semua rilis kami termasuk campuran poin cerita dan cacat (bug). Cacat dihitung sebagai "jam tidak ideal"; ada 5 jam ideal dalam satu hari kerja, yang berarti pengkodean head-down dari pekerjaan titik baru. Tiga hingga empat jam sehari lainnya adalah rapat, diskusi, desain, kadang-kadang "paku" (penelitian terfokus / pengembangan konsep bukti), dan pekerjaan cacat; hal-hal yang berkontribusi pada produk yang lebih baik dan merupakan bagian penting dari proses, tetapi tidak bisa mengambil seluruh sprint seluruh tim. Satu-satunya waktu kami melakukan rilis cacat saja adalah ketika tidak ada pekerjaan poin-cerita yang tersedia di backlog pada IPM; maka kami hanya menjadwalkan sprint QA di mana kami diperintahkan untuk "membunuh sebanyak mungkin cacat". Karena tidak memiliki persyaratan siap untuk pergi SELALU kesalahan PO (dan PO bekerja untuk klien), kita bisa mengeluarkan pemberitahuan perubahan kontrak dan bekerja dengan apa yang kita miliki. Tentu saja, begitu pekerjaan cerita yang sebenarnya selesai dan kami memasuki pengembangan "garansi", semua cacat ada di sana.
Dalam proyek Agile yang dikelola dengan baik, kehabisan persyaratan tidak boleh terjadi; backlog harus selalu memiliki nilai kerja sprint yang siap diambil. Tapi, terkadang PO kebanjiran persyaratan produksi; kadang-kadang BA / penguji menahan rilis cerita ke tumpukan pembangunan, untuk alasan yang berkaitan dengan kualitas persyaratan atau konflik cerita; terkadang suatu tim memutuskan bahwa mereka harus "menyepak bola" pada cerita yang tidak terdefinisi dengan baik atau diperkirakan, dan tidak ada sesuatu yang dapat dengan mudah mengambil siklus yang tersisa. Singkatnya, bahkan dalam Agile, sial terjadi.
Apa yang Anda maksud dengan rilis? Jika yang Anda maksud PSP - produk yang mungkin dapat dikirim, Anda memiliki dua opsi:
Perbedaan utama antara level 2 dan level 3 adalah bahwa pada level 2 Anda harus berupaya untuk membuat PSP akhir di akhir sprint tetapi pada level 3 Anda menaruh sejumlah uang dan upaya pada awalnya untuk alat dan konfigurasi Anda dan Anda telah menyiapkan PSP otomatis setiap saat = tidak ada upaya manual yang terlibat. Mencapai level 3 sepenuhnya jarang terjadi.
Sama sekali tidak ada aturan dalam Scrum tentang kapan fitur baru dapat digunakan. Setiap tim perlu memiliki "definisi selesai", yang selalu harus mencakup beberapa kriteria tentang pengujian. Setelah fitur "selesai", itu siap untuk dunia nyata dan jika tidak ada dependensi atau kondisi lain yang perlu dipenuhi sebelum dapat digunakan, maka tidak ada alasan untuk menunggu akhir Sprint untuk menyebarkannya.
Tidak ada yang berarti bahwa itu tidak disajikan pada pertemuan Tinjauan / Perencanaan Sprint. Konsepnya adalah bahwa segala sesuatu yang telah diselesaikan oleh Tim ditunjukkan ke PO (dan pelanggan UKM lainnya) sehingga mereka dapat memasukkannya ke dalam pemahaman mereka yang berkembang tentang sistem ketika berevolusi.
Setelah beberapa minggu, kami menemukan solusi bagus yang sesuai dengan kebutuhan kami. Kami memutuskan untuk melepaskan kapan pun kami mau. Bagaimana kami melakukannya:
Itu dia. Kami menggunakan git dan maven sebagai sistem CI dan kami memiliki cakupan tes yang baik. Yang merupakan salah satu alasan kami dapat melakukannya seperti ini.
Menjawab pertanyaan yang hampir berumur 2 tahun mungkin agak berlebihan, tetapi untuk semoga menambah nilai bagi orang lain yang datang ke pertanyaan ini saya ingin menambahkan sekitar 2 sen. :)
Untuk menjawab pertanyaan: Anda sebaiknya melepaskan apa yang dilakukan dalam sprint, di akhir sprint itu. Melakukannya berhubungan dengan semua bagian / proses / pedoman scrum lainnya yang diarahkan untuk mendapatkan nilai bisnis terbaik pada waktu yang tepat.
TETAPI keadaan darurat, bug, kejadian tak terduga dll dapat memaksa tangan Anda, yang merupakan konsep jika "Release Release" bisa berguna. Dengan "Perencanaan Rilis" yang saya maksud bukan perencanaan jenis air terjun, melainkan perencanaan harapan yang dapat membantu mengelola tumpukan produk dan prioritas cerita dalam sprint, dll.
Tapi mungkin komentar David tentang pertanyaan itu adalah sesuatu yang sebaiknya dipertimbangkan. Scrum tidak selalu merupakan jawaban yang tepat.