Terkadang dalam proyek kita perlu menghabiskan waktu untuk tugas-tugas seperti:
- menjelajahi kerangka kerja dan alat alternatif
- mempelajari kerangka kerja dan alat-alat yang dipilih untuk proyek
- menyiapkan server dan infrastruktur proyek (kontrol versi, membangun lingkungan, database, dll)
Jika kita menggunakan Cerita Pengguna, kemana perginya semua pekerjaan ini?
Salah satu opsi adalah menjadikannya bagian dari kisah pengguna pertama (mis. Buat beranda untuk aplikasi). Pilihan lain adalah melakukan spike untuk tugas-tugas ini. Opsi ketiga adalah menjadikan tugas bagian dari Masalah / Hambatan (mis. Lingkungan pengembangan belum dipilih) daripada Kisah pengguna.
project-management
agile
scrum
user-story
Asim Ghaffar
sumber
sumber
Jawaban:
Kami memikirkan masalah ini cukup banyak dalam setahun terakhir.
Sementara saya setuju bahwa kerangka dasar harus ada sebelum proyek dimulai, dalam penggunaan praktis dapat menjadi bagian dari proyek itu sendiri. Jadi, Anda harus mengelola entah bagaimana.
Walaupun mencampur pengaturan proyek dengan cerita pengguna mungkin masuk akal kadang-kadang kami telah menyelesaikan tugas - tugas sederhana yang dapat ditambahkan ke tumpukan produk dan mendapatkan perhatian yang sama dengan cerita pengguna. Kita tahu bahwa tugas-tugas teknis ini kadang-kadang diperlukan, tetapi harus dibenarkan dalam hal apa pun. Jika tim berpikir bahwa mereka benar-benar diperlukan untuk mencapai tujuan tertentu, mereka akan menjadi bagian dari sprint.
Sulit mengatakan apa yang paling cocok untuk Anda, jadi cobalah ! Lonjakan mungkin cukup untuk saat ini, tapi saya pikir Anda akan berakhir dengan masalah yang sama nanti, jadi rencanakan ke depan. Lakukan tugas yang merupakan tempat penampung untuk aktivitas semacam itu. Untuk memisahkan tugas dari cerita dua, saya akan dengan cepat membandingkannya berdasarkan pengalaman saya dengan mereka.
Tugas: Tugas adalah kebutuhan teknis. Mungkin hal-hal untuk manajemen konfigurasi atau pengaturan proyek umum, seperti menyiapkan repositori untuk komit, atau menambahkan alat ulasan kode terpanas yang pernah Anda lihat ke proses pengembangan. Tugas harus dipertimbangkan dalam perencanaan, sama seperti kisah pengguna. Jika tim dapat meyakinkan pemilik produk bahwa memiliki alat peninjau kode terbaru dan terhebat meningkatkan kinerja dan meningkatkan komunikasi tim dengan menghilangkan sesi pemrograman pasangan yang tahan lama atau ulasan kode langsung, maka itu akan mendapatkan perhatian pemilik produk.
Cerita : Berfokus pada perspektif bisnis saja, cerita selalu menghasilkan nilai yang terlihat bagi pelanggan. Kualitas internal adalah sesuatu yang sejalan dengan menghasilkan nilai bisnis.
Kami bahkan menetapkan poin cerita untuk tugas-tugas dan kadang-kadang bekerja dengan mereka sama seperti yang kami lakukan dengan cerita.
Pada akhirnya saya akan memilih solusi ini untuk Anda (yang dapat diterapkan secara umum juga):
sumber
Lakukan apa pun yang paling masuk akal di perusahaan Anda. Jangan pernah biarkan orang lain melakukan hal-hal yang menjadi penghambat akal sehat.
Tetapi saya akan mengatakan bahwa semua tugas ini terdengar seperti sesuatu yang harus terjadi jauh sebelum Anda memulai pengembangan. Jadi saya mempertanyakan apakah Scrum bahkan relevan dengan tugas-tugas ini. Ada beberapa pemeliharaan yang sedang berlangsung dan semacamnya untuk kontrol sumber dan basis data, tetapi ini seharusnya tidak dijadwalkan, mereka hanya harus menjadi hal-hal yang terjadi dan mempengaruhi kecepatan Anda.
Akan ada saat-saat ketika Anda harus memilih kerangka kerja atau apa pun selama proyek, tetapi ketika saya mengatakan bahwa maksud saya kerangka kerja seperti nHibernate, bukan kerangka kerja seperti .NET. Dalam kasus-kasus itu, penelitian harus dibubuhi spekulasi dan timebox, belum lagi cukup singkat. Cobalah untuk mengelolanya seolah-olah Anda memiliki pengembang yang sakit selama beberapa hari.
Transfer pengetahuan adalah proses berkelanjutan lainnya yang harus dikelola di luar kecepatan perkembangan umum.
sumber
Ada nama untuk membuat keputusan desain sebanyak mungkin di muka sebelum dimulainya "resmi" proyek Anda. Ini disebut air terjun. Tidak ada yang salah dengan cerita pengguna seperti, "Sebagai pengembang, saya perlu memilih kerangka kerja, jadi kami memiliki titik awal untuk situs web." Jika terlalu besar untuk dimasukkan dalam iterasi, coba jabarkan seperti, "Sebagai pengembang, saya perlu mengimplementasikan halaman muka dasar di Drupal, jadi kita akan tahu apakah itu sesuai dengan kebutuhan kita."
sumber
Memecah "kisah pengguna" sebagai sebuah konsep. Pengguna apa yang terlibat dalam hal ini? Tidak ada Ini pekerjaan yang seharusnya sudah Anda lakukan.
Tidak buruk.
Hampir sama dengan lonjakan sejauh menyangkut perencanaan dan biaya overhead.
Pengaturan bukan kisah pengguna.
Itu yang harus Anda miliki sebelum memulai proyek ini.
Anda tidak dapat benar-benar memulai proyek kecuali Anda memiliki pengaturan kerangka / alat dan server dan siap untuk pergi.
Saya sangat menyadari bahwa banyak organisasi tidak benar-benar ada sampai setelah kontrak ditandatangani. Saya juga sangat menyadari bahwa banyak organisasi tidak memilih teknologi sampai setelah kontrak ditandatangani. Ini semua adalah hal yang tidak efisien yang berada di luar cerita pengguna mana pun.
sumber
Di tempat kerja kami menggunakan tugas untuk mempersiapkan lingkungan. Mungkin membingungkan bagi sebagian orang, tetapi tugas yang kami gunakan adalah tugas yang sama dengan tugas dari kisah pengguna. Tugas tersebut bukan milik cerita pengguna tetapi diperkirakan dalam hitungan jam dan harus disetujui oleh pemilik produk untuk diselesaikan dalam sprint tertentu.
Kami juga menggunakan tugas untuk pekerjaan arsitektur yang tidak memiliki nilai bisnis "nyata" tetapi itu menambah kualitas produk terutama untuk produk yang sudah ada dengan basis kode yang besar.
Ini mungkin tidak berlaku di lingkungan kerja Anda tetapi itu bekerja dengan baik untuk kami.
sumber
Saya pikir Anda mencampur dua hal independen. Kisah pengguna tidak boleh menyertakan detail teknis apa pun.
Pilihan kerangka kerja, pengaturan repositori dan server, dan tugas-tugas lain, harus masuk ke iterasi awal.
sumber
Saya mengikuti kursus Scrum baru-baru ini dan instruktur menyarankan agar sprint khusus yang disebut Sprint 0 harus digunakan untuk menyelesaikan masalah-masalah seperti ini. Ada orang-orang di lapangan dengan berbagai tingkat pengalaman di Scrum dan hampir semua orang yang berpengalaman setuju, mengatakan bahwa mereka melakukan hal yang sama. Dalam beberapa kasus, perusahaan menggunakan Sprint 0 untuk mengevaluasi proyek dan memutuskan apakah layak atau tidak.
Bagi seseorang yang baru mengenal metodologi Scrum seperti saya, sepertinya ini adalah solusi yang fantastis karena membuat Anda bebas dari cerita pengguna dan semua aspek lain dari sprint normal seperti umpan balik pengguna.
Karena Sprint 0 memiliki waktu yang sama dengan sprint Anda yang lain, sprint ini berfungsi sebagai cara untuk memastikan Anda tidak menghabiskan terlalu banyak waktu untuk mengatur sesuatu karena mereka selalu dapat di-tweak kemudian. Poin utamanya adalah membuat diri Anda dalam keadaan di mana Anda dapat benar-benar mulai mengembangkan produk.
sumber
Terkadang ini bisa terjadi jika Anda memiliki persyaratan khusus, Anda harus melakukan beberapa POC untuk memilih alat terbaik untuk menyelesaikan persyaratan. Inilah gunanya lonjakan karena tanpa mengetahui kerangka mana yang akan Anda gunakan, kemungkinan besar Anda tidak dapat memperkirakan cerita dan menyimpannya tanpa perkiraan tidak dapat direncanakan dan dibagi menjadi beberapa tugas.
Baik. Ini sangat berbahaya. Ketika pelanggan membayar Anda untuk SW, ia mengharapkan bahwa Anda adalah profesional yang sudah tahu cara menggunakan alat-alatnya. Pelanggan tidak membayar Anda untuk pembelajaran atau pendekatan pengembangan percobaan / gagal. Pengembang bertanggung jawab untuk mempelajari alat-alat baru di waktu luangnya atau dalam waktu yang dialokasikan khusus yang dibayarkan oleh karyawannya bukan oleh pelanggan. Menghabiskan uang pelanggan untuk belajar tanpa memberi tahu pelanggan tidak profesional.
Jika Anda benar-benar harus menggunakan sesuatu yang istimewa (misalnya API pelanggan atau alat pelanggan yang dipilih) yang tidak pernah Anda gunakan sebelumnya, Anda harus memberi tahu pelanggan bahwa harga akan dinaikkan saat waktu yang diperlukan untuk mempelajari cara menggunakan API. Mungkin pelanggan akan berubah pikiran jika kenaikan harga terlalu besar.
Tentu, maksud saya bukan situasi di mana Anda harus mencari beberapa masalah baru tertentu dalam kerangka yang telah Anda gunakan berkali-kali. Maksud saya situasi di mana Anda mulai menggunakan API atau kerangka kerja baru tanpa menghabiskan waktu yang signifikan (di luar proyek) untuk belajar.
Jika Anda melanggar ini, itu akan tetap terlihat dalam kecepatan Anda karena Anda akan memberikan jumlah bisnis yang sangat kecil per iterasi. Jika pelanggan tidak mengetahui alasannya, ia kemungkinan besar akan membatalkan proyek.
Ini masih berlaku untuk proyek internal - Anda harus memberi tahu manajer / bisnis Anda tentang waktu yang diperlukan untuk mempelajari API atau alat baru. Biasanya memiliki konsekuensi yang sangat buruk jika manajer menghitung dengan produktivitas normal Anda dan produktivitas Anda hanya sebagian kecil karena API baru yang Anda coba pelajari selama tugas Anda. Itu jelas bahkan lebih buruk jika beberapa orang penjualan dihitung dengan produktivitas normal ketika menandatangani kontrak dengan pelanggan.
Itu adalah infrastruktur dan biaya internal Anda. Ketika Anda memulai proyek ini, diharapkan infrastruktur Anda sudah siap. Menyiapkan lingkungan pengembangan Anda tidak memiliki nilai bagi pelanggan dan tidak boleh menjadi bagian dari indikator terkait proyek apa pun - misalnya kecepatan di Scrum. Saya melihat ini diimplementasikan sebagai iterasi pra-proyek khusus yang digunakan hanya untuk pengaturan lingkungan, membuat infrastruktur dasar dll.
sumber