Ini ternyata lebih lama dari yang saya rencanakan (sudah dimulai sebagai komentar), tapi saya harap panjang / rincian tambahannya membantu dan Anda menemukan mereka dibenarkan.
Agile tidak spesifik untuk aplikasi CRUD
Sebagian besar literatur tentang gesit tampaknya bias terhadap aplikasi bisnis tipe CRUD di mana pengguna cukup sadar akan apa yang terjadi di balik layar. (Tidak apa-apa karena sebagian besar kode yang sedang ditulis mungkin milik kelas ini.)
Saya pikir ini karena lebih mudah untuk membuat contoh yang mudah diikuti dari jenis ini, bukan karena metodologi yang ditujukan pada sistem semacam itu. Jika Anda membuat contoh yang tidak terlalu mudah diikuti, Anda berisiko membuat pembaca terjebak mencoba memahami contoh ketika poin Anda seharusnya mengajarkan pembaca tentang konsep-konsep tangkas.
Cerita Pengguna! = Persyaratan
Untuk jenis aplikasi ini, hubungan antara cerita pengguna (persyaratan) dan tugas pengembangan sebagian besar bersifat langsung: Cukup bagi cerita pengguna menjadi beberapa tugas.
Kisah pengguna tidak sama dengan persyaratan. Benar, mungkin ada beberapa tumpang tindih tergantung pada seberapa 'tingkat tinggi' persyaratannya, tetapi umumnya tidak sama. Saya mendapat kesan bahwa Anda mengalami perangkap yang sama, banyak mantan manajer saya jatuh ke: berpikir tentang cerita pengguna hanya sebagai sinonim untuk "persyaratan", yang mirip dengan ketika pengguna SVN mencoba untuk beralih ke Git, tetapi tetap berpikir dalam hal SVN. (Mereka kemudian mengalami masalah karena asumsi awal yang buruk.)
IMHO, perbedaan utama antara persyaratan dan cerita pengguna adalah bahwa persyaratan menentukan, secara rinci, bagaimana komponen sistem tertentu harus berperilaku; mereka spesifikasi yang mencakup input, output, asumsi / pra-kondisi, pengecualian yang mungkin timbul, dll. Mereka fokus pada apa yang dilakukan sistem .
OTOH, cerita pengguna fokus pada hasil yang diharapkan untuk pengguna akhir tanpa mencoba untuk membuat spesifikasi perilaku rinci untuk komponen sistem. Mereka fokus pada pengalaman pengguna yang diharapkan .
Apa yang biasa saya lakukan, dan ini adalah praktik yang diadopsi tim saya, adalah memecah cerita pengguna menjadi tugas. Tugas Anda bisa sespesifik atau kabur seperti yang Anda inginkan / inginkan, tetapi tugas itu dimaksudkan sebagai indikator kemajuan Anda untuk pekerjaan aktual yang dilakukan untuk membawa cerita ke kondisi selesai.
Contoh
Saya kira-kira mengingat suatu AS yang saya kerjakan bertahun-tahun lalu di mana pengguna perlu menetapkan sendiri kasus uji sehingga semua orang di tim mengetahui TC mana yang mereka kerjakan untuk menghindari upaya duplikasi; UI adalah aplikasi web (internal). Pengguna hanya melihat tombol, tetapi cerita itu dibagi menjadi beberapa tugas yang mencakup beberapa detail implementasi teknis, dll.
Visibilitas Pengguna
Tetapi ada jenis aplikasi lain di mana sebagian besar kode harus berurusan dengan pemrosesan kompleks yang tidak langsung terlihat oleh pengguna.
Apakah mungkin membuatnya terlihat oleh pengguna dengan cara tertentu?
Pertimbangkan GPS. Ketika Anda melewatkan giliran Anda, Anda tidak akan melihat proses penghitungan ulang rute yang sebenarnya, tetapi pengguna memang menerima beberapa umpan balik yang berguna (misalnya, "Menghitung Ulang ...").
Compiler dapat menampilkan peringatan atau kesalahan, atau menyertakan pengaturan / opsi baru di GUI agar pengguna dapat melihat bahwa sesuatu yang baru telah ditambahkan. Saya pikir pengguna untuk kompiler adalah programmer, bukan? Tidakkah mereka melihat dukungan untuk standar baru ditambahkan?
Meskipun mendukung standar baru kemungkinan akan berada pada level fitur dan perlu dipecah menjadi cerita pengguna, sudahkah Anda memastikan bahwa, setidaknya dalam beberapa kasus, Anda tidak mencoba menggunakan cerita ketika Anda seharusnya menggunakan fitur sebagai gantinya ?
Analisis gambar dalam sebuah mobil dapat dirumuskan dengan cara yang memungkinkan pengguna tahu bahwa kemungkinan berakhir dalam kecelakaan mobil telah berkurang. Sebagai contoh:
Sebagai penumpang dalam mobil yang bisa menyetir sendiri, saya membutuhkan kemungkinan kendaraan yang menyebabkan kecelakaan dengan menabrak benda yang tidak dikenali sedekat mungkin dengan nol, sehingga saya dapat melakukan perjalanan lebih aman.
Bahwa AS menangkap, pada level tinggi, hal-hal yang biasanya harus Anda tentukan menggunakan kombinasi persyaratan fungsional dan non-fungsional - termasuk keamanan, keselamatan, dll.
Namun, persyaratan mungkin lebih banyak tentang sistem; misalnya:
Fungsi abc
dalam komponen A
harus memiliki nilai ambang toleransi menurun dalam algoritma perbandingan gambar untuk lebih mendeteksi objek bergerak lambat.
Bagi saya, ini akan dengan mudah menjadi tugas di bawah kisah pengguna yang saya sebutkan di atas, berjudul sesuatu seperti: Kurangi toleransi dalam fungsiA.abc
dan kemudian sertakan detail relevan lainnya di dalamnya.
Untuk sistem simulasi fluida, Anda bahkan bisa memiliki bilah kemajuan yang memberikan umpan balik tentang tugas latar belakang yang dilakukan sistem, jika ini masuk akal. (Selalu ada cara untuk memberi tahu pengguna tentang sesuatu, meskipun Anda mungkin ingin menghindari spam.)
Saya tidak cukup tahu tentang domain tertentu yang telah Anda sebutkan untuk menghasilkan contoh yang lebih baik dan / atau lebih realistis, tetapi jika ada kesimpulan di sini adalah bahwa Anda dapat menggunakan berbagai cara untuk memberikan umpan balik pengguna tentang sesuatu yang kurang terlihat sehingga sistem mungkin sedang melakukan, yaitu mungkin ada cara untuk membuat hal-hal yang tak terlihat sedikit lebih terlihat. (Bahkan jika itu bermuara pada menulis satu set catatan rilis yang mendokumentasikan seberapa cepat kinerja sistem sekarang karena upaya Anda, dll.)
Hubungan antara Cerita dan Tugas
Di sini sangat sulit untuk mengaitkan tugas dan cerita pengguna.
Pendekatan kami adalah untuk membuat cerita pengguna tetap fokus pada apa permintaan itu, mengapa itu dibuat, dan hal-hal apa yang perlu benar untuk menganggap AS "selesai". The bagaimana selalu ditinggalkan dari Amerika Serikat dan kiri untuk pengembang (s).
Pengembang akan memecah masalah yang dijelaskan di AS menjadi serangkaian tugas yang akan mereka kerjakan.
Saya mengatakan ini sebagai seseorang yang, sebagian besar, melakukan pemrograman sisi server back-end, yang mungkin sebagai "tidak terlihat" seperti yang Anda dapatkan untuk pengguna akhir.
Bergantung pada apa yang perlu saya lakukan, saya kadang-kadang menggunakan AJAX untuk menunjukkan animasi "memuat ..." sederhana / gif sehingga pengguna tahu mereka perlu menunggu sedikit untuk menyelesaikan sesuatu, tanpa mendapatkan kesan yang salah. Terkadang sesederhana ini. Tugas untuk ini akan sesuai.
Paradigma, Praktik, dan Pengalaman yang berbeda
Apakah ada teknik untuk mengatasi masalah ini atau itu hanya sesuatu yang harus kita terima dan lakukan yang terbaik?
Selain menerima perubahan paradigma, berlatih, dan pengalaman yang masih harus dibayar, mungkin tidak banyak bicara. Saya sering melihat orang mencoba mengambil jalan pintas melalui proses. Saya akan menyarankan hal itu, terutama jika Anda memulai. Saat Anda mendapatkan lebih banyak pengalaman, Anda bisa memberikan fleksibilitas, tetapi hindari merusak diri sendiri.
Mengingat kata-kata Anda sebelumnya, Anda masih berpikir tentang cerita seolah-olah itu "persyaratan berganti nama", yang saya anggap salah asumsi. Saya pikir ini adalah gejala dari masalah yang lebih dalam mengenai perbedaan mendasar antara pendekatan Agile dan non-Agile.
Kedua, saya pikir Anda harus menerima bahwa gesit adalah perubahan paradigma dibandingkan dengan air terjun, yang berarti bahwa, meskipun prosesnya memiliki tujuan yang sama, mereka melakukannya dengan cara yang sangat berbeda. (Pikirkan SVN vs Git, jika itu membantu.)
Cobalah untuk meningkatkan pemahaman Anda saat ini tentang perbedaan konseptual antara persyaratan dan cerita pengguna dan terima itu bukan hal yang sama.
Belajar dari Sprint Anda - Retrospektif
Apa yang saya tidak bisa cukup menekankan adalah retrospektif antara Scrum Master dan Developers di akhir setiap sprint. Itu adalah tempat di mana mereka mendiskusikan hal-hal yang "berjalan dengan baik" atau "tidak berjalan dengan baik" dengan cara yang jujur / transparan, dan perubahan apa yang bisa dilakukan akan diterapkan untuk sprint berikutnya untuk membahas poin "tidak berjalan dengan baik" .
Itu memungkinkan kami untuk beradaptasi dan bahkan belajar dari pengalaman satu sama lain, dan sebelum kami menyadarinya, kami telah meningkat secara signifikan yang diukur dengan konsistensi umum kecepatan tim kami.