Tim Scrum
- 3 x Pengembang
- 2 x Penguji
- 1 x Analis Uji Otomasi
Kami bukan tim multi-fungsi karena pengembang tidak menguji dan penguji tidak berkembang. Saya percaya ini adalah akar penyebab masalah ini.
Kami saat ini melakukan sprint dua minggu.
Pada awal sprint, semua orang sibuk, para pengembang memulai pekerjaan pengembangan dan para penguji sedang melakukan persiapan pengujian (menulis kasus pengujian, dll.)
Setelah penguji menyelesaikan persiapan mereka, mereka sekarang menunggu pekerjaan pengembangan selesai ATAU pekerjaan pengembangan selesai dan pengembang menunggu umpan balik / bug.
Para pengembang merasa gatal di sini dan mulai mengerjakan item di backlog yang berada di luar sprint saat ini. Ini telah menciptakan pengaruh yang aneh di mana kami selalu mengembangkan pekerjaan sprint berikutnya dalam sprint saat ini. Bagi saya ini terasa tidak benar.
Dari sudut pandang manajemen, mereka lebih suka para pengembang melakukan pekerjaan daripada duduk di meja mereka tanpa melakukan apa-apa, tetapi pada saat yang sama saya merasa bahwa tujuan dan fokus tim scrum harus semata-mata berada pada sprint saat ini. Saya berharap tim kami multi-fungsi tetapi sayangnya itu tidak dapat dicapai. Penguji tidak memiliki keterampilan yang diperlukan untuk melakukan pekerjaan pengembangan dan sebagian besar pengembang berpendapat bahwa pengujian ada di bawah mereka.
Apakah ini dianggap masalah dalam scrum? Apakah ada solusi untuk ini? Apakah scrum hanya bekerja dengan tim multifungsi?
Saya ingin tahu pengalaman orang lain dengan ini jika memungkinkan :)
Jawaban:
Itu masalah yang agak umum, disebabkan oleh pipelining . Tim ini multifungsi, tetapi tentu saja ada silo internal yang mengurangi kinerja.
Pertama saya ingin mencatat beberapa hal yang menurut saya penting:
Jika pengembang Anda mengerjakan iterasi terlebih dahulu, mereka akan mencegah rapat perencanaan Anda. Manajer produk Anda dan tim perlu mendiskusikan apa yang paling berharga untuk iterasi berikutnya dengan benar. Prioritas tidak boleh dilakukan secara efektif oleh pengembang karena tidak ada yang lebih baik untuk dilakukan.
Tidak peduli bagaimana Anda membagi dan mengatur iterasi, Anda tidak dapat benar-benar membuat semua orang sibuk sepanjang waktu dan memiliki satu tim dengan satu rapat perencanaan selama tim Anda memiliki spesialis yang bekerja di silo. Bahkan dengan pendekatan air terjun murni, Anda masih perlu "melempar barang-barang ke dinding" dan menunggu umpan balik.
Anda juga memiliki masalah yang sering membutuhkan satu cerita untuk memiliki fase pengembangan, diikuti oleh fase pengujian, diikuti oleh fase perbaikan bug, diikuti oleh ... ini benar-benar dapat membuat tim Anda tidak efisien - terutama jika mereka bekerja di muka , karena mereka perlu beralih konteks.
Jelas ada biaya yang sangat nyata untuk situasi ini: tim tidak berkolaborasi. Saya mengalami hal ini setiap kali ada tim QA yang terlibat, jadi saya punya sedikit waktu untuk mencoba berbagai solusi.
Apa yang bekerja dengan sangat baik bagi saya adalah dua alat ini:
Tekankan prinsip bahwa seluruh tim bertanggung jawab untuk menyelesaikan pekerjaan. Tolak cerita "dev done", karena itu adalah cara bagi pengembang mengatakan "bukan masalah saya lagi", yang keduanya tidak konstruktif dan jelas salah. Jika sebuah tim tidak menyampaikan cerita yang mereka terima, itu adalah seluruh tim yang tidak menyampaikan.
Untuk mengisi waktu pengembang dan QA, pasangkan mereka . Sejauh ini, ini adalah cara terbaik untuk berbagi keahlian dan pengetahuan domain yang dapat Anda pilih. Pengembang dapat membantu penguji mengotomatiskan tugas mereka. Penguji dapat menunjukkan kepada pengembang di mana penting untuk menguji kode karena rapuh. Keduanya berkolaborasi dan bekerja lebih cepat daripada tidak.
Dengan menggunakan dua teknik ini, tim harus mengurangi kesunyian dan performanya. Sementara penguji dan pengembang sangat tidak mungkin untuk bertukar pekerjaan, mereka akan dapat bekerja sebagai tim dan menyelesaikan masalah secara internal, alih-alih saling menyalahkan.
sumber
Tidak ada masalah dengan cara Anda bekerja terkait dengan SCRUM dan sprint, asalkan akan dicatat pada saat evaluasi bahwa pekerjaan pengembang selesai dalam waktu yang lebih singkat (dan berapa lama waktu) yang direncanakan. Ini akan memungkinkan tim untuk mengambil lebih banyak poin cerita untuk sprint berikutnya. Bagaimanapun, titik sprint adalah untuk menjadi lebih baik dalam perencanaan. Jelas Anda masih memiliki ruang untuk perbaikan.
Wah! Ini teknis tidak mungkin di Scrum. Anda tidak tahu item backlog apa yang akan ada dalam sprint berikutnya, yang akan ditetapkan pada awal sprint berikutnya dalam sesi perencanaan sprint.
Tetap menarik untuk belajar tentang cara-cara kreatif baru yang diciptakan organisasi untuk menyabot Scrum.
sumber
Scrum mengoptimalkan tim , bukan individu. Inti dari scrum adalah agar tim menjadi efisien. Jika pengembang mulai mengerjakan hal-hal di luar sprint saat ini, mereka merugikan tim. Ini juga menunjukkan bahwa Anda agak gagal dalam proses perencanaan Anda, jika Anda gagal merencanakan pekerjaan yang cukup untuk mengisi pegas.
Jika pengembang telah kehabisan tugas pengembangan, mereka benar-benar harus melakukan dan membantu penguji atau penulis teknologi atau desainer - siapa pun di tim. Mereka tidak perlu harus menulis tes yang sebenarnya (meskipun, mereka harus ), tetapi mereka masih dapat berpartisipasi dalam proses pengujian. Mereka dapat menulis skrip yang membantu penguji menjadi lebih efisien, atau mereka hanya dapat berdiskusi dengan penguji apa tantangan mereka dan terus membantu mereka mengatasi tantangan tersebut (misalnya: menambahkan atribut id ke elemen halaman web, menyediakan kait atau API yang dapat diuji oleh penguji dapat digunakan dalam tes mereka, dll).
Saya pikir inti masalahnya adalah jika pengembang Anda tidak selalu bekerja pada sprint saat ini, mereka belum bekerja sebagai tim. Scrum master Anda harus memperhatikan, dan bekerja untuk membuat tim bekerja sebagai unit daripada kumpulan individu.
Saya juga menyarankan bahwa ini adalah masalah manajemen. Jika mereka menekan pengembang untuk tetap sibuk maka mereka belum sepenuhnya merangkul scrum. Ini adalah hal lain yang dapat dibantu oleh scrum master. Mereka dapat bekerja dengan manajemen untuk membantu mereka memahami bagaimana scrum bekerja sehingga mereka dapat membantu mendukung dan mendorong tim pengembangan daripada menumbangkan mereka.
sumber
Saya pikir masalah utama di sini adalah sebagai berikut:
Cara kami menangani ini di perusahaan kami adalah kami bertanya kepada pengembang bagaimana mereka dapat mengatakan bahwa mereka benar-benar menyelesaikan pekerjaan mereka jika mereka tidak dapat membuktikannya. Tentu saja, satu-satunya cara untuk membuktikannya adalah dengan menunjukkan bahwa kode yang mereka tulis benar-benar berfungsi, dan ini dilakukan melalui pengujian. Harus ditunjukkan kepada mereka bahwa jika mereka setuju untuk berpartisipasi dalam pengujian, maka pengujian akan dilakukan lebih cepat, dan mereka akan memiliki lebih banyak waktu untuk membuat kode fungsi tambahan (yang juga perlu diuji).
Pastikan bahwa pengujian kode Anda tidak di bawah tingkat pengembang. Ini adalah bagian integral dari proses pembangunan. Itu tidak dapat dipisahkan dari hanya coding. Siapa saja dapat membuat kode. Tidak semua orang bisa membuat kode dan membuktikan bahwa apa yang mereka kodekan benar-benar berfungsi.
Cara lain untuk membuat para pengembang sibuk adalah membuat mereka bekerja pada pengkodean tes otomatis untuk fungsi yang mereka kembangkan dalam sprint. Tes-tes tersebut kemudian dapat digunakan untuk pengujian regresi yang akan dijalankan secara berkala.
Either way, melakukan sesuatu yang tidak direncanakan pada awal sprint adalah besar tidak-tidak. Lebih baik tidak melakukan apa pun, daripada melakukan sesuatu yang tidak direncanakan. Fungsi yang mereka tulis dalam kasus-kasus itu kemungkinan besar tidak memenuhi kriteria DoD (Definition of Done), karena mungkin tidak diuji dengan baik, karena para penguji sibuk dengan menguji apa yang semula direncanakan. Ini adalah cara yang pasti untuk memperkenalkan bug dan menurunkan kualitas produk, yang kemudian mengirim tim ke dalam spiral masalah regresi dan pergantian konteks yang menurun, mengakibatkan stres, mengurangi kecepatan, dan akhirnya, berhenti dari tim karena hal itu.
sumber
Secara teori, semua anggota tim SCRUM harus memiliki pengetahuan yang sama, sehingga setiap anggota dapat mengambil setiap tugas dari setiap anggota lainnya. Jika tidak, Anda harus menyebarkan pengetahuan.
Namun dalam praktiknya selalu ada semacam spesialisasi. Perangkat lunaknya mungkin kompleks, anggota tim memiliki keterampilan yang berbeda, dll. Membagi tim menjadi pengembang dan penguji hanyalah satu contoh (sangat umum) dari spesialisasi.
Menyebarkan pengetahuan mungkin membutuhkan waktu lebih lama daripada yang ingin diterima manajemen.
Untuk pengalaman saya, Anda bisa melakukan beberapa hal:
Saran-saran ini mungkin bukan teori SCRUM 100%, tetapi pertama-tama Anda harus terus mengembangkan pengembangan. SCRUM hanyalah sebuah kotak alat.
sumber
Tampaknya Anda perlu menguraikan tim Anda. Seperti itu:
Jika saya mengerti tes otomasi, pria harus memulai beberapa hari lebih awal.
Tapi saya merasakan ada masalah di tim Anda: Saya punya masalah dengan pengembang yang tidak menguji kode mereka sendiri. Jika orang-orang tes mempersiapkan tes tanpa meninjau kode mereka mungkin hanya melakukan tes blackbox yang tidak memperhitungkan poin keputusan dari program yang dikembangkan. Anda puas dengan kualitas perangkat lunak Anda?
sumber