Saya mencoba memahami manajemen proyek yang gesit (dengan Pivotal Tracker) tetapi terus menemukan diri saya berlari ke dinding ketika mencoba untuk mendefinisikan beberapa cerita pertama dari suatu proyek. Ambil contoh cerita yang sangat sederhana ini:
"Seorang pengguna harus dapat menandai suatu produk"
Dengan asumsi saya sudah mendefinisikan "produk" di tempat lain, cerita ini mungkin melibatkan penulisan sistem penandaan polimorfik di bawah tenda, pada saat penyelesaian id sistem itu akhirnya dapat menambahkan kemampuan untuk menandai suatu produk.
Masalah saya adalah jumlah pekerjaan yang disembunyikan dalam cerita ini. Saya bisa menentukan tugas untuk menyelesaikan cerita tetapi cerita secara keseluruhan seharusnya 1-2 hari kerja? Saya tidak merasa benar tentang cerita yang hanya mengungkapkan ujung gunung es tapi itu satu-satunya bagian yang berhubungan dengan Pengguna.
Bagaimana Anda mengatasi hal semacam ini? Apa praktik terbaik?
UPDATE 25/08 Terima kasih kepada semua orang atas bimbingan Anda, saya telah mengambil semua saran untuk mendefinisikan cerita. Saya sekarang beralih ke Jira Grasshopper yang memiliki dukungan yang lebih baik untuk tugas-tugas dalam cerita (tugas, perkiraan dll) dan pelacakan tugas pengembangan setelah sprint dimulai.
Jawaban:
Jika Anda ingin cerita Anda masing-masing menjadi 1 hingga 2 hari kerja pengembang, mungkin Anda harus membagi setiap cerita menjadi tugas pengguna tertentu yaitu 1 hingga 2 hari kerja pengembang.
Pertimbangkan "kisah pengguna" berikut ini:
Pikirkan tentang apa yang terlibat hanya dalam desain database, dalam memberikan kemampuan ini kepada pengguna. Anda memerlukan tabel pelanggan, tabel tajuk faktur, dan tabel item baris faktur, dan kami bahkan belum membicarakan tentang menerima pembayaran.
Pada kenyataannya, cerita pengguna tidak sesederhana ini. Kisah pengguna yang lengkap termasuk langkah-langkah langkah-langkah pengguna yang terlibat:
dan seterusnya. Singkatnya, Anda perlu memecah cerita pengguna Anda menjadi detail yang lebih halus.
sumber
Cerita tidak seharusnya, "1-2 hari kerja". Di bawah cerita Scrum biasanya diperkirakan menggunakan Story Points, sistem ukuran relatif. Jika Anda menggunakan cerita poker perencanaan diberi nilai poin - waktu yang diperlukan untuk menerapkan cerita tergantung pada kecepatan yang telah ditetapkan tim Anda.
Jika Anda merasa cerita itu menyembunyikan kompleksitas (Anda bisa menyebutnya cerita Epic ), Anda harus memecahnya menjadi cerita yang lebih kecil. Pastikan bahwa cerita baru mengikuti kriteria INVEST .
Tapi Anda mungkin overengineering ini; prinsip XP dari YAGNI berlaku di sini. Secara eksplisit Anda tidak boleh menerapkan sistem "penandaan polimorfik di bawah tenda", kecuali Anda benar-benar membutuhkannya. Meski begitu, itu harus dirancang dengan meningkatkan sistem yang ada, yang telah Anda kembangkan dengan serangkaian tes yang baik.
Jika Anda yakin Anda membutuhkan sistem penandaan yang rumit ini, Anda harus memanggil kompleksitas dalam cerita yang berbeda. Mike Cohn menggambarkan pendekatan desain sebagai, " Disengaja, namun muncul "
sumber
YAGNI
adalah tentang: Do bahkan tidak mencoba untuk membuat sistem penandaan polimorfik penuh belum . Buat yang sederhana untuk satu use case khusus. Jika pemilik produk kembali dengan cerita lain tentang penandaan hal lain, maka Anda memperluas sistem sederhana yang ada menjadi sistem penandaan polimorfik. Hanya karena Anda pikir itu perlu, tidak berarti pasti bahwa itu akan terjadi; mungkin menunjukkan bahwa pemberian tag pada model lain tidak akan diperlukan untuk sementara waktu, maka semua orang lupa tentang hal itu dan itu tidak pernah menjadi persyaratan. Karenanya, "Kamu Tidak Akan Membutuhkannya".Tampaknya Anda mengacaukan cerita dan tugas.
Kisah Pengguna
Kisah pengguna adalah "fitur" lengkap, sesuatu yang bila ditambahkan ke produk, memberikan nilai lebih pada produk.
Kisah pengguna tidak boleh lebih besar dari yang dapat diterapkan selama sprint . Selama bagian pertama dari perencanaan sprint, Anda memutuskan cerita pengguna mana yang ingin Anda kerjakan selama sprint. Tujuan dari sprint adalah untuk melengkapi cerita pengguna ini, sehingga menambah nilai lebih pada produk.
Tugas
Selama bagian kedua dari fase perencanaan sprint, pengembang membagi cerita menjadi tugas . Tugas adalah tugas pengembangan. Itu bisa berupa "Tambahkan kolom ke basis data", "Perpanjang layanan x", dll. Tugas tidak boleh lebih besar dari yang dapat diselesaikan dalam satu hari.
Selama scrum harian Anda mengevaluasi kemajuan tugas-tugas ini. Jika tugas telah berlangsung selama lebih dari satu scrum harian, itu terlalu lama, dan Anda, sebagai tim, memiliki tanggung jawab untuk menyelesaikan situasi itu.
Ingat, kisah pengguna mewakili nilai bisnis bagi pemegang pasak. Para pemegang pasak harus tertarik pada penyelesaian cerita pengguna, bukan tugas.
Divisi tugas adalah alat bagi tim pengembangan untuk mengelola sprint, untuk memantau perkembangan cerita pengguna selama sprint, dan untuk memvisualisasikan masalah potensial.
Para pemegang pasak hendaknya tidak memusatkan perhatian pada tugas pengembangan ini. Sayangnya, ini adalah pengalaman saya yang sering mereka lakukan, terutama untuk organisasi yang baru untuk pengembangan tangkas. Berurusan dengan situasi ini adalah masalah yang berbeda.
Epik
Jika cerita pengguna lebih besar dari yang Anda kira dapat Anda selesaikan dalam satu sprint, itu disebut epik. Itu perlu dibagi menjadi beberapa cerita pengguna yang lebih kecil sebelum Anda sebagai sebuah tim dapat mulai mengerjakannya.
Ingatlah bahwa kisah pengguna menambah nilai bagi pengguna akhir, jadi memecah epik menjadi cerita "ujung depan" dan "ujung belakang" bukanlah cara yang benar. Menambahkan back-end untuk fitur baru tidak dengan sendirinya memberikan nilai kepada pengguna akhir.
Membagi sebuah epik menjadi cerita pengguna yang dapat dikelola dalam jangka waktu sprint tidak selalu mudah ketika Anda tidak berpengalaman dalam melakukannya.
Menggunakan Pivotal Tracker
Saya pikir Pivotal Tracker adalah alat yang hebat untuk melacak cerita pengguna. Tapi itu bukan alat scrum seperti itu, dan cara scrum mengajarkan untuk membagi cerita menjadi tugas tidak mudah ditangani oleh pelacak penting. Anda dapat mengaktifkan kemampuan untuk menambahkan tugas ke cerita pengguna. Tetapi jika Anda menjalankan proyek menggunakan scrum, saya akan menyarankan menggunakan papan tulis dan catatan tempel untuk melacak kemajuan tugas selama sprint.
sumber
Memiliki tujuan desain menerapkan sistem penandaan polimorfik tidak masalah, tetapi Anda harus tetap fokus pada penerapan fitur yang diinginkan pelanggan. Ini mungkin berarti bahwa, Pengguna-Cerita-halus-oleh-Pengguna-Cerita-halus, sistem Anda berkembang menjadi memiliki sistem penandaan polimorfik dari waktu ke waktu. Bagaimanapun juga dalam perjalanan itu, Anda harus memiliki sistem yang terdiri dari banyak fitur kecil dan dapat diuji, dijelaskan oleh kumpulan Cerita Pengguna yang telah Anda terapkan.
Dalam hal ini kedengarannya seperti "Menandai Produk" di sistem Anda mungkin Epic, yaitu sesuatu yang jauh lebih besar dari Kisah Pengguna tunggal dan dapat dipecah menjadi beberapa cerita yang lebih kecil dengan sedikit usaha. Mengambil cukup banyak lisensi artistik, saya bisa memikirkan Kisah Pengguna berikut yang mungkin kira-kira berlaku untuk kebutuhan Anda:
... dan saya bisa melanjutkan.
Saya ragu salah satu dari ini akan sangat hidup sehingga Anda akan menggunakannya, tetapi mudah-mudahan itu menggambarkan jenis detail yang bisa Anda kunjungi dengan Cerita Pengguna Anda.
Jika Cerita Pengguna benar-benar tidak dapat dibagi lagi menjadi cerita yang lebih kecil dan Anda masih menganggapnya terlalu besar untuk diterapkan dalam sekali jalan, maka Anda dapat membaginya menjadi irisan vertikal. Ini adalah teknik yang berarti hanya memberikan sebagian fitur di bawah setiap Kisah Pengguna, tetapi setiap bagian menjadi irisan yang dapat diuji melalui semua lapisan teknologi yang relevan, misalnya untuk situs web ini mungkin berarti mengubah basis data, aplikasi, dan lapisan UI. Hindari memiliki satu Kisah Pengguna untuk pekerjaan basis data, yang lain untuk aplikasi dan lainnya untuk UI, karena ini tidak akan dapat diuji secara individual.
Mengambil lebih banyak lisensi artistik, saya mungkin terpecah "Sebagai pengguna sistem saya ingin dapat melampirkan tag tunggal ke satu produk." ke dalam irisan vertikal berikut:
Masing-masing diuji - jika tidak sangat berharga dalam hak mereka sendiri.
sumber
Ada beberapa buku yang ditulis untuk tujuan menemukan cara yang benar untuk menggambarkan dan menjabarkan persyaratan Anda. Jadi itu bukan tugas yang mudah.
Sering kali saya menemukan tim pengembangan berusaha untuk solusi yang kompleks daripada yang paling sederhana. Ini bisa jadi karena cerita itu sendiri atau karena tim ingin mencari solusi yang terlalu rumit yang tidak hanya menyelesaikan cerita ini tetapi juga meletakkan dasar untuk cerita x, y dan z juga. Ini adalah niat yang baik, tetapi ruang lingkup di mana pekerjaan yang sama dapat dilakukan dengan pekerjaan yang lebih sedikit. Selalu sulit untuk menilai berapa banyak desain yang harus dimasukkan ke dalam cerita untuk tidak merusak cerita masa depan dengan mengacaukan desain. Keputusan ini untuk dibuat oleh tim.
Sebagai pemilik produk, Anda hanya dapat memengaruhi ini dengan memecah cerita menjadi potongan-potongan kecil. Anda harus bertanya pada diri sendiri: Apakah kisah itu solusi terkecil yang dapat kita pikirkan saat ini? Bisakah kita memecahnya menjadi set fitur yang berkurang yang suatu hari akan menjadi "sistem penandaan fleksibel besar yang selalu saya inginkan". Anda bisa mulai dengan sistem tag hanya untuk satu tag, kemudian perluas untuk menyertakan daftar tag yang dipilih sebelumnya, dan kemudian biarkan pengguna menentukan tag, dll.
Untuk tim pengembang, intinya adalah: Bisakah kita menemukan pendekatan yang lebih sederhana untuk mewujudkan cerita, tetapi masih memiliki arsitektur yang solid yang menyelesaikan pekerjaan hari ini tanpa mengorbankan fitur masa depan.
Jika Anda terbuka untuk menerima solusi perantara dan tim pengembang juga mencoba untuk menawarkan solusi yang paling sederhana, namun baik maka Anda mungkin akan menemukan sweet spot di mana ukuran cerita yang ingin Anda lakukan adalah benar (semakin kecil semakin baik) . Ini bukan untuk mengatakan bahwa Anda hanya punya cerita kecil. Beberapa lebih besar dari yang lain, ini hanya fakta yang perlu Anda terima, atau jika terlalu besar, maka bagikan cerita menjadi lebih kecil.
sumber