Saya baru-baru ini bergabung dengan sebuah perusahaan di mana saya bekerja sebagai master scrum pada proyek pengembangan lincah membangun aplikasi web.
Tim baru saja akan menjadi ukuran maksimum untuk tim tangkas (mengharapkan 9 minggu depan). Kami telah berbicara tentang kemungkinan membagi tim menjadi dua tim, bukan untuk memperpendek standup (yang tidak berlebihan saat ini) tetapi untuk menghentikan orang agar tidak bosan dalam sesi perencanaan sprint (yang lagi-lagi tidak terlalu lama).
Ada dua lapisan yang sangat berbeda untuk proyek - pengembang backend teknis yang tinggi (seperti sangat rumit), dan desain / bangun / integrasi UI. Tampaknya ketika para backend berbicara teknis para pengguna UI zona keluar, dan sebaliknya. Sepertinya cara yang logis untuk membagi tim jika hanya untuk lebih efisien waktu, tetapi saya punya satu reservasi besar dalam semua yang saya mungkin benar-benar lakukan adalah mengurangi kolaborasi dan berbagi pengetahuan. Kedua tim tidak akan memiliki ide bagus tentang apa yang sedang dibangun oleh tim lainnya.
Adakah yang punya pengalaman dalam menangani hal seperti ini?
Jawaban:
Sangat disayangkan orang-orang UI tidak peduli tentang detail dari pekerjaan backend yang kompleks. Ini terdengar seperti topik diskusi untuk retrospektif. Membagi tim dengan disiplin akan menjadi preseden yang berbahaya, seberapa cepat sebelum Persyaratan orang mulai zonasi dan tidak peduli tentang apa yang dilakukan orang-orang UI dan meminta tim mereka sendiri.
Saya selalu mendukung irisan vertikal untuk tim saya. UI harus mendengarkan apa yang dikatakan orang-orang teknis, karena mereka adalah orang-orang yang dapat membantu membuat pekerjaan mereka lebih mudah (Oh, widget itu akan menyebabkan Anda melakukan ini, bagaimana jika kita menggunakan widget ini sebagai gantinya).
Secara pribadi saya akan fokus pada masalah orang-orang UI zonasi pertama, kemudian setelah disfungsi itu diselesaikan, diskusikan cara terbaik untuk membagi tim. Saya tidak mencoba menjelek-jelekkan para pengguna UI, mungkin orang-orang teknis juga bisa berbuat lebih banyak untuk membuat diskusi mereka lebih cocok untuk para pengguna UI.
Seperti yang dikatakan orang lain, tim harus diizinkan mengatur diri sendiri untuk menentukan struktur baru. Pengalaman masa lalu telah mengajarkan saya pengorganisasian diri hanya bisa benar-benar bekerja ketika semua orang memperhatikan tim, daripada disiplin atau minat mereka sendiri.
Bersulang!
sumber
Memang ide yang bagus untuk membagi bagian-bagian independen dari tim menjadi tim baru. Dalam proyek yang lebih besar, hampir tidak mungkin bagi pengembang untuk akrab dengan seluruh proyek, sehingga pemisahan masih ada formal atau informal.
Setiap tim baru harus memiliki pemimpin tim / manajer teknis, yang memiliki pengetahuan yang kuat tentang ruang lingkup tim mereka dan yang akrab dengan pekerjaan tim lain juga.
Setelah itu masing-masing tim dapat memiliki pertemuan scrum terpisah, dan para pemimpin tim lain dapat hadir. Dengan cara ini Anda akan mengurangi jumlah orang yang "bosan", tetapi tim masih akan tahu apa yang sedang dikerjakan orang lain dan akan dapat berhasil berkolaborasi.
Kolaborasi menjadi lebih penting jika lingkup tim bersilangan atau satu tim bergantung pada yang lain. Tetapi sekali lagi tidak perlu seluruh tim hadir - pemimpin tim dapat mengoordinasikan kolaborasi.
sumber
Aspek kunci Scrum adalah pengorganisasian diri .
Saya sarankan Anda mendiskusikan pertanyaan dengan tim, dan biarkan mereka menyelesaikannya.
Kekhawatiran Anda semuanya beralasan, tetapi ingat bahwa sebagai Scrum Master, tugas Anda adalah melatih dan memfasilitasi. Jadi tanyakan kepada mereka bagaimana mereka akan memecahkan masalah ini. Mereka akan memiliki solusinya, dan membuatnya bekerja.
Saya ingin menambahkan: secara umum, tim lintas fungsi adalah jalan yang harus ditempuh.
sumber
Ketika memisahkan tim, saya selalu berusaha mengingat fakta bahwa tim perlu dapat memberikan nilai kepada pelanggan. Dalam kasus Anda itu akan memiliki pengembang backend dan frontend dalam tim.
sumber
Seberapa jauh front-end dari backend? Bisa ditebak, pemisahan adalah saran yang baik hanya jika jaraknya terlalu jauh.
Jika backend berbicara tentang skema database, ini tidak terlalu jauh . Front-end dan backend perlu mendengarkan diskusi tentang skema database.
Jika backend berbicara tentang sharding, cache memori, latensi disk, dll., Maka ini agak terlalu jauh (di mana backend berfokus pada simpati mekanis dan optimisasi, sedangkan front-end fokus pada estetika manusiawi).
Apakah ada antarmuka pemrograman yang stabil dan tidak ambigu antara front-end dan backend?
Dengan stabil dan tidak ambigu, itu berarti pengguna antarmuka pemrograman (pengembang front-end) tidak akan macet dengan perubahan, dan tidak perlu membaca dinding teks untuk mempelajari cara menggunakannya dengan benar.
Tim backend perlu menyediakan API yang baik, dan implementasi tiruan sejak awal, dan hanya setelah itu memulai pengembangan nyata.
Ini bukan untuk mengatakan bahwa API harus dibuat dengan batu. Ini hanya mitigasi konsekuensi untuk membagi tim menjadi dua.
Mengapa begitu banyak artikel gesit merekomendasikan memiliki irisan vertikal? Berikut ini beberapa informasi latar belakang:
Sebagian besar artikel tangkas sebenarnya merekomendasikan menghindari pekerjaan backend, dari perspektif biaya.
Juga jangan lupa bahwa sebagian kecil artikel tangkas memiliki bias implisit terhadap perusahaan startup.
Dan jangan lupa realitas pemasaran yang keras - sebagian besar pelanggan hanya membayar untuk ujung-depan.
Pekerjaan backend cenderung mahal dan pembayarannya lambat. Kecuali jika perusahaan sudah didirikan untuk jangka panjang dan menghasilkan laba yang layak, lebih baik untuk "mengalihdayakan" backend dengan tetap berpegang pada teknologi yang tidak tersedia dan perpustakaan open-source.
Sebagian besar artikel tangkas juga merekomendasikan penerapan front-end sehingga dapat bertahan dari backend switch. Saran ini sejalan dengan yang sebelumnya: jika teknologi yang tersedia tidak memenuhi semua persyaratan, coba yang lain.
Praktik yang dapat mengurangi konsekuensi buruk dari pemisahan tim
sumber
Seperti yang lain, saya pasti akan menyarankan irisan vertikal. Ini kadang-kadang disebut sebagai "Tim Fitur". Saya akan merekomendasikan membaca pro / kontra di situs Scaled Agile Framework: http://scaledagileframework.com/scaled-agile-framework/team/features-components/
Pada awalnya, ketika Anda berpisah, Pemilik Produk dan SDF Master Anda dapat menangani Rilis Tunggakan untuk kedua tim dan juga tunggakan individu untuk setiap tim fitur. Ketika Anda tumbuh, bagaimanapun, Anda mungkin perlu menerapkan jaminan fitur produk yang kemudian dimasukkan ke dalam beberapa tim tangkas melepaskan backlog. Setelah Anda skala ke tingkat itu, Anda mungkin akan membutuhkan tim terpisah yang mengelola jaminan fitur dan kemudian membawa fitur ke masing-masing tim untuk implementasi. Dalam struktur itu, Anda mungkin memiliki sesuatu seperti ini:
Situs web SAFe memiliki banyak hal keren untuk mengatur tim yang lebih besar, dan beberapa mungkin bermanfaat bagi Anda saat Anda pindah ke tim tim yang lebih besar.
sumber