Apa cara terbaik untuk mengukur dan memecah tim lincah yang membangun aplikasi web?

14

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?

Ani Møller
sumber
Apakah tim memiliki pemimpin?
superM
Memiliki banyak tim adalah pertukaran. Sebuah tim besar (bahkan lebih besar dari 9) bisa ok, dibandingkan dengan overhead scrums scrums dll. Itu hanya membutuhkan sedikit lebih banyak disiplin dalam berdiri
Dave Hillier
Ya, mereka berdua perlu memiliki pemimpin. Saat ini salah satu tim tidak akan melakukannya.
Ani Møller

Jawaban:

8

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!

Kelas Abstrak
sumber
"Saya selalu mendukung irisan vertikal untuk tim saya" +1, saya juga! Anda selalu dapat memiliki beberapa pakar UI, atau ahli DB untuk memoles bagian-bagian tersebut dengan sempurna, tetapi secara keseluruhan, pengembangan slice vertikal selalu merupakan cara yang saya sukai.
ozz
7

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.

superM
sumber
5

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.

andy256
sumber
Inilah yang telah disarankan oleh beberapa anggota tim, tetapi saya tidak yakin itu adalah hal terbaik untuk dilakukan. Karena itu pertanyaannya! Saya pikir itu sampai pada kenyataan bahwa orang-orang UI tidak peduli tentang detail dari pekerjaan backend yang kompleks.
Ani Møller
4

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.

pengguna99561
sumber
1
Dalam proyek besar sulit bagi satu tim untuk mengerjakan setiap aspek suatu produk, dan biasanya itu tidak perlu. Jadi saya tidak akan setuju bahwa setiap tim dengan sendirinya harus dapat memberikan nilai langsung kepada pelanggan _ pelanggan tidak tertarik pada UI atau backend, mereka membutuhkan seluruh proyek. Di sisi lain, UI dan backend adalah bagian dari produk dan tim yang mengerjakannya memberikan nilai pada produk.
superM
2
Yah, kami jelas tidak setuju. Pertanyaannya adalah untuk tim yang gesit. Bagi saya, nilai bisnis untuk pengguna backend yang berfungsi tanpa frontend adalah 0,0 Hal yang sama berlaku untuk frontend yang berfungsi tanpa backend. Dan apa yang akan didemokan oleh masing-masing tim pada ulasan sprint? Selain itu, akan sulit untuk menyelaraskan pekerjaan kedua tim.
user99561
3
  1. 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).

  2. 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.

  3. 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.

  4. Praktik yang dapat mengurangi konsekuensi buruk dari pemisahan tim

    • Bagian belakang yang stabil
    • API Stabil
    • Tingkat cacat rendah back-end
      • Alasan: untuk menghindari frustrasi
      • Bagaimana: pengujian unit
      • Tidak berarti: kinerja atau optimisasi; itu hanya perlu benar secara fungsional.
    • Integrasi berkelanjutan
    • Transparansi dalam komunikasi, kemajuan, dan pengambilan keputusan
    • Dorong diskusi informal di kedua tim
    • Dorong anggota tim (mereka yang tidak zona) untuk menghadiri pertemuan tim lain.
    • Atur pertemuan bersama sesekali, dan retrospeksi bersama
    • Kegiatan membangun tim lainnya
rwong
sumber
0

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:

  1. Agile Team 1: SM, PO, tim Cross-fungsional. Memiliki tim backlog sendiri untuk cerita mereka.
  2. Agile Team 2: SM, PO, tim Cross-fungsional. Memiliki tim backlog sendiri untuk cerita mereka.
  3. Tim Manajemen Program: Manajer Produk, Manajer Rilis, Arsitek Perusahaan. Memiliki program backlog epos dan fitur tingkat yang lebih tinggi yang akan diatur, dianalisis, dan kemudian dimasukkan ke tim.

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.

Jay S
sumber