Bagaimana membuat model persiapan cerita untuk isu-isu yang ditangani di beberapa proyek

9

Di perusahaan kami beberapa tim akan mengerjakan komponen yang berbeda dari beberapa proyek secara bersamaan. Misalnya, satu tim mungkin membuat jenis perangkat lunak (atau perangkat keras) tertentu untuk beberapa proyek, tim lain jenis perangkat lunak tertentu. Kami menggunakan proyek Jira untuk menjadi tuan rumah masalah untuk proyek tertentu dan papan Jira untuk sprint untuk tim yang berbeda.

Kami menghadapi masalah menghindari duplikasi kode di seluruh proyek, dan telah mengembangkan satu set perpustakaan inti yang kami gunakan dalam proyek-proyek tersebut. Saat bekerja pada suatu proyek, beberapa pengembang akan menyadari bahwa sepotong kode yang mereka tulis lebih menarik dan harus diekstraksi ke perpustakaan inti, atau bahwa beberapa kode inti yang mereka gunakan memiliki bug, memerlukan lebih banyak parametrization, atau fitur baru ... sebut saja.

Jadi mereka membuat masalah perpustakaan inti yang masuk ke dalam simpanan proyek inti. Semua masalah ini ditinjau, diprioritaskan, dan diperkirakan dalam pertemuan perpustakaan inti (sekali seminggu), dan akan ditangani sesuai dengan prioritas mereka (di samping masalah spesifik proyek) dalam beberapa sprint mendatang.

Prioritas dilakukan dengan mengurutkan masalah, dan kami memberi sortedlabel pada masalah yang diurutkan (sehingga kami dapat mencari yang tidak diurutkan). Kemudian kami secara manual menempatkan satu masalah per komponen inti ke bagian atas jaminan agar dapat ditangani terlebih dahulu. Ketika beberapa tim memasukkan masalah semacam itu ke dalam sprint mereka, mereka harus menyeret item lain secara manual ke bagian atas backlog.

Ini cukup rawan kesalahan. Pada dasarnya, yang kita miliki adalah status masalah tambahan "diurutkan" dan "diperkirakan" antara "terbuka" dan "dalam proses". Mencerminkan ini melalui sortedlabel dan posisi mereka di papan tulis agak rumit dan rawan kesalahan. (Misalnya, jika seseorang memindahkan masalah dalam beberapa sprint atas dan ke bawah, ini akan tercermin di papan inti, diam-diam mengacak urutan masalah yang mungkin telah diputuskan tim dalam diskusi ekstensif beberapa minggu sebelumnya.)

Jadi apa cara yang lebih baik untuk mengimplementasikan ini?

sbi
sumber
2
Sepertinya overhead diplomatik terlalu banyak hanya untuk menambahkan fungsi ke lib. Di perusahaan kami yang terdiri dari 50 devs (perangkat lunak medis), kami masih mengizinkan devs untuk hanya mendorong kode ke masing-masing perpustakaan internal kami jika menurut mereka itu tepat. Ini ditinjau setelahnya tentu saja. Anda mungkin dapat mempertimbangkan untuk bekerja dengan aliran penarikan tetapi pertemuan? Tidak. Itu tidak akan berhasil.
Teimpz
@ Teimpz: Tentu saja, semua orang akan mendorong ke perpustakaan di rumah, dan, tentu saja, setiap kode ditinjau. Namun, urutan masalah inti ditangani (yang tidak diperlukan untuk beberapa proyek saat ini) diputuskan oleh semua tim. Itu bekerja cukup baik, hanya Jira yang tampaknya tidak mendukungnya dengan baik.
sbi
Overhead memang terlihat agak sedikit, tetapi mengingat bahwa inti digunakan secara luas, saya akan bersedia menerima sedikit overhead untuk memastikan tidak ada yang salah. Pertemuan sepertinya sangat banyak. Saya akan melihatnya sebagai tugas lain, tetapi komunikasi ekstra - ulasan, percakapan - akan menjadi penting.
Erdrik Ironrose

Jawaban:

2

Jika Anda ingin melacak ini di JIRA saya akan mengikutinya seolah-olah itu adalah tugas baru.

Jadi misalnya:

Katakanlah Anda memiliki kisah CORE-75: Foo the Bar .

Setelah diputuskan tim mana yang akan mengambil tugas, mereka kemudian dapat membuat tugas baru: DUKUNGAN-123: Foo the Bar in Core .

Anda kemudian dapat memblokir CORE-75 dengan SUPPORT-123 . Setelah SUPPORT-123 selesai, Anda dapat kembali ke CORE-75 . Anda dapat menggabungkan ulasan, atau meninjau kode dua kali (satu kali oleh tim yang ditunjuk, satu kali oleh tim yang lebih spesifik untuk inti).

Ini benar-benar apa yang Anda lakukan: Pertimbangkan perpustakaan inti sebagai produk / pelanggan sendiri, jangan setengah jalan.

Erdrik Ironrose
sumber
Tampaknya tidak praktis, tetapi, ya, itu akan berhasil. Jadi +1dari saya.
sbi
0

Salah satu pendekatan adalah bagi tim untuk membuat masalah baru untuk sprint mereka yang menghubungkan kembali ke masalah perpustakaan inti. Sepertinya Anda membuat sub tugas untuk suatu tugas, tetapi di seluruh papan / backlog.

Pendekatan lain adalah hanya melacak ini secara terpisah di luar JIRA. Ekspor backlog yang ada sebagai CSV atau spreadsheet dan atur itu.

Dengan memisahkan masalah dari JIRA, Anda memiliki fleksibilitas untuk menentukan prioritas dalam rapat perencanaan dan tidak perlu khawatir tentang algoritma penyortiran JIRA di papan dan Anda tidak perlu menggunakan label juga.

Dalam pertemuan perencanaan prioritas untuk perpustakaan inti Anda dapat membuat daftar tugas yang harus diselesaikan untuk perpustakaan inti dan siapa pun yang bertanggung jawab / bertanggung jawab untuk perpustakaan inti dapat memastikan tugas-tugas ini dimulai oleh tim proyek yang berbeda dan diselesaikan.

Rudolf Olah
sumber
-2

Ada pandangan bahwa Core Libraries yang merangkum banyak kesamaan, tetapi fungsionalitas yang tidak berhubungan adalah 'hal buruk' (tm)

ada beberapa alasan untuk ini

  • Mereka menarik dependensi dan kode yang tidak Anda butuhkan
  • Mengubahnya menyebabkan perubahan pada semua aplikasi
  • Tidak ada 'pemilik' tunggal

Dalam kasus Anda, saya pikir pembagian tugas Anda oleh aplikasi perubahan akan dibuat menjadi akar masalahnya. Semacam membalikkan hukum Conway.

Saya pikir solusi terbaik bagi Anda adalah dengan pindah dari memiliki 'Perpustakaan Inti' Perpustakaan harus memiliki satu set spesifik (kecil) fungsionalitas yang dikelompokkan secara logis. Seharusnya mungkin untuk menyelesaikannya. yaitu JsonParser, LogWriter dll. Jarang masuk akal untuk menambahkan fitur baru.

Namun, dengan asumsi ini akan menjadi tugas yang panjang dan sulit, sebagai solusi sekunder saya hanya akan menjaga tugas perpustakaan inti dengan tim yang membutuhkan fungsionalitas. yaitu.

Tugas: tambahkan fitur X ke produk Y

Dev: hmm beberapa kode untuk fitur X harus ada di corelibrary .. Saya akan meletakkannya di sana sebagai bagian dari tugas ini

Ewan
sumber
Ini sepertinya aneh. Sebagai permulaan: Menurut Anda apa perbedaan antara apa yang Anda sebut "perpustakaan dengan sekumpulan fungsionalitas yang dikelompokkan secara logis" dan apa yang kami sebut "perpustakaan inti"? (BTW: Sepertinya saya telah melewatkan notifikasi untuk jawaban ini. Maaf sudah terlambat membalas.)
sbi
Saya pikir ini adalah kutipan yang menonjol bagi saya: "sepotong kode yang mereka tulis lebih menarik dan harus diekstraksi ke perpustakaan inti". Jika proyek yang Anda bagikan adalah 'pustaka' lengkap fitur, maka Anda tidak perlu menambahkan fitur kepadanya.
Ewan
Saya gagal memahami argumen Anda. Mengapa kode apa pun tidak mendapat manfaat dari pemeliharaan? Dan apakah pelanggan Anda tidak pernah meminta fitur baru, yang mengarah ke kode baru untuk ditulis? Dan bagaimana Anda tahu kode merupakan kepentingan bersama, selain dari ditugaskan proyek lain dengan persyaratan yang sudah tertarik?
sbi
Katakanlah perpustakaan Anda adalah Json.Net. ia memiliki satu objek serialise tujuan untuk json dan membalikkan. yakin Anda mungkin perlu memperbaiki bug, atau menambahkan dukungan untuk obat generik tetapi set fitur keseluruhan tidak pernah berubah. Anda tidak pernah berada dalam posisi di mana misalnya seorang pelanggan meminta Anda untuk menerapkan 'kemampuan untuk membatalkan pesanan' atau apa pun dan Anda berpikir, 'Saya akan menambahkannya ke Json.Net'
Ewan