Apa itu "berkerumun"?

42

Saya pernah mendengar berkerumun disebutkan dalam konteks Agile atau Extreme Programming. Tampaknya menjadi pelengkap pasangan.

Apa itu sebenarnya? Kapan itu harus diterapkan? Bagaimana Anda melakukannya dengan baik?

Jay Bazuzi
sumber
@CodeWorks: Pencarian saya di Google menghasilkan beberapa hasil yang relevan, dan tidak ada yang memiliki jawaban yang jelas untuk pertanyaan saya. Jika ada jawaban kanonik di luar sana, maka tentu saja, kirimkan di sini.
Jay Bazuzi
Ada garis sulih suara dalam video game strategi "Sword of the Stars" di mana orang-orang semut / belalang / hivemind berkata pada saat Anda mengeluarkan perintah penelitian, "Kami mengerumuni lab keagungan Anda." Saya selalu berasumsi bahwa itu dimaksudkan untuk mendarat dengan ironi dramatis.
Erik Reppen

Jawaban:

43

Idenya adalah bahwa semua orang di tim Anda mengerjakan cerita yang sama pada saat yang sama. Alih-alih setiap orang berfokus pada tugas yang berbeda, semua orang berfokus pada satu tugas pada satu waktu sampai selesai. Kemudian mereka beralih ke hal berikutnya, di mana mereka semua bekerja bersama untuk hal itu.

Ini membantu tim yang berjuang menyelesaikan cerita sebelum sprint berakhir. Seringkali tim menyelesaikan 80% dari semua cerita, tetapi tidak ada yang lengkap. Ini kurang bermanfaat daripada menyelesaikan 80% dari keseluruhan cerita, karena cerita yang belum selesai tidak memiliki nilai bagi pengguna akhir. Lebih mudah menyelesaikan cerita ketika semua orang di tim fokus pada satu cerita pada satu waktu. Inilah motivasi di balik kerumunan.

Ada beberapa kesulitan di sini. Misalnya, QA tidak dapat selalu menguji sesuatu sebelum dibangun (atau bahkan dirancang). Dalam hal ini, Anda harus membuat desain bersama sejak awal, dan kemudian QA dapat menulis (awalnya gagal) tes terhadap desain dan bukan implementasi yang sebenarnya.

Oleksi
sumber
+1. Menarik. Pernahkah Anda melihat pekerjaan ini dalam praktek?
CodeART
2
Cara lain untuk mengatakannya adalah "miliki sesedikit mungkin pekerjaan yang sedang dalam proses", kan?
Jay Bazuzi
1
@ KodeKerja Ya. Kami telah menggunakannya di mana saya saat ini bekerja untuk beberapa kesuksesan. Ini cara yang cukup menyenangkan untuk dikembangkan, karena berorientasi pada fitur. Setiap orang bekerja menuju tujuan yang sama pada saat yang sama, jadi saya menemukan bahwa itu memupuk kerja tim dengan sangat baik.
Oleksi
1
@ JayBazuzi Ya, cukup banyak. Memiliki dukungan tim penuh juga penting.
Oleksi
9
@ CodeWorks, Tidak sama sekali. Bahkan, mungkin meningkatkannya. Karena semua orang bekerja sangat dekat bersama, ada sedikit blocker yang muncul. Ketika sesuatu muncul, setidaknya seseorang dalam tim tahu bagaimana menyelesaikannya, dan dapat melakukannya segera karena perhatian penuh mereka. Selain itu, pengalihan konteks umumnya buruk untuk produktivitas Anda. Tanyakan saja CPU Anda. : P
Oleksi
10

Berkerumun hanya merujuk pada fakta bahwa banyak orang bekerja bersama untuk menyelesaikan tugas atau cerita. Dalam pengalaman saya, ini bukanlah sesuatu yang sering Anda lakukan.

Biasanya, setiap anggota tim saya mengerjakan tugas yang berbeda dan / atau cerita yang berbeda. Jika seseorang tertinggal, atau jika ada keinginan untuk menyelesaikan tugas atau cerita lebih awal, orang lain akan berhenti mengerjakan tugas lain dan "berkerumun" untuk menyelesaikan tugas, yang berarti mereka semua bekerja bersama pada satu tugas atau cerita sampai selesai.

Kami baru-baru ini memiliki sejumlah kecil cerita yang merupakan pekerjaan yang cukup membosankan, tidak menarik. Saya memberi tim insentif kecil (pizza) dan tenggat waktu (akhir hari) untuk menyelesaikan pekerjaan, sehingga mereka mengerumuni cerita dan merobohkan setidaknya beberapa hari kerja dalam satu sore. Mereka menyelesaikan pekerjaan dan menyingkir lebih awal, lalu masing-masing anggota tim kembali ke apa pun yang sedang mereka kerjakan. Mereka mendapat makan siang gratis, saya mendapat pekerjaan lebih awal yang bisa berlarut-larut karena sifatnya yang membosankan, dan tim maju dari sprint mereka. Menang-menang-menang.

"Berkerumun" tidak lebih dari istilah mewah untuk "hei, biarkan kami membantu Anda dengan itu".

Bryan Oakley
sumber
Ini sepertinya sangat berbeda dari jawaban yang lain. Anda mengatakan "ketika ada kebutuhan mendesak yang tidak biasa, buat semua orang". @Oleksi mengatakan "ketika merencanakan siklus pengembangan, lebih baik untuk menempatkan semua orang pada satu tugas pada satu waktu daripada meminta setiap orang mengerjakan tugas terpisah secara paralel." Entah definisi yang masuk akal, dan keduanya adalah praktik yang bermanfaat, tetapi memiliki 4x suara, jadi saya berasumsi jawabannya mencerminkan definisi yang paling banyak diterima.
Jay Bazuzi
@Jay Bazuzu: Apakah semua orang ditempatkan pada satu tugas sebagai bagian dari perencanaan sprint, atau apakah itu terjadi secara organik ketika kebutuhan muncul, definisi tersebut masih kurang lebih sama - semua orang bekerja sama dalam satu tugas.
Bryan Oakley
Saya pikir jawaban Anda sangat penting di sini. Jawaban lain yang 'diterima' adalah "apa". Tapi milikmu sepertinya membahas caranya.
Kera-inago
2

Berkerumun sebenarnya adalah konsep sentral untuk kelincahan. Itu bukan sesuatu yang dilakukan "ketika ada masalah". Berkerumun, dalam bentuknya yang paling sederhana, berarti bahwa tim bekerja secara kolaboratif pada item (cerita) dan mengerjakannya sampai selesai. Konsep inti adalah "berhenti memulai, dan mulai menyelesaikan". Dengan kata lain, alih-alih setiap pengembang bekerja secara independen pada sebuah cerita, tim berfokus pada serangkaian cerita / tugas yang lebih terbatas bersama-sama dan menyelesaikan setiap item lebih cepat. Anggap saja sebagai perbedaan antara sistem single-threaded, dan multi-threaded. Jika Cerita Pengguna memiliki 10 tugas yang harus dilakukan, dan masing-masing adalah 8 jam, dengan asumsi bahwa tidak ada komplikasi, satu pengembang dapat mengerjakan setiap tugas secara berurutan dan menyelesaikan cerita dalam 80 jam, atau sekitar dua minggu (diberikan sprint 10 hari 8 jam dev per hari). Bagaimana jika dua pengembang membagi tugas dan mengerjakannya secara bersamaan? 80 jam kerja yang sama dapat diselesaikan dengan cara ini dalam satu minggu. Tambahkan sepertiga, dan Anda dapat melihat sekarang mungkin dilakukan dalam 3 hingga 4 hari.

Berkerumun dapat dilakukan dengan beberapa cara:

  1. Pair Programming (dua pengembang duduk berdampingan untuk mengerjakan kode, satu adalah "driver" menulis kode, yang lain adalah navigator, menjaga arah jangka panjang dalam pikiran dan membantu untuk meninjau kode secara bersamaan.
    1. Pekerjaan berpasangan: Pengembang dan tester bekerja secara bersamaan pada pekerjaan yang sama, satu pengkodean dan pengujian lainnya, otomatisasi penulisan, dll
    2. Berkerumun seperti yang saya sebutkan di atas, yang sangat umum. Biasanya, anggota tim mengumpulkan Cerita, tetapi masing-masing memiliki tugas individu dalam metode ini.
    3. Pemrograman gerombolan: seluruh tim berfokus pada satu cerita (atau bahkan tugas) pada suatu waktu.

Tim yang memberikan cerita kepada setiap pengembang cenderung memiliki terlalu banyak "pekerjaan dalam proses" atau WIP, dan sering kali banyak cerita dimulai tetapi tidak dilakukan. Ini adalah POLA ANTI, dan BUKAN praktik terbaik.

Tim yang berkerumun cenderung memiliki lebih sedikit WIP dan menyelesaikan lebih banyak cerita - dan dengan selesai, maksud saya Dikembangkan, Diuji, Disetujui, siap untuk digunakan. Jadi, ini adalah praktik inti dari kelincahan.

Curtis Reed
sumber
1

Artikel berikut tentang InfoQ menjelaskan satu pendekatan untuk mengerumuni:

  • Tim menggunakan pemrograman massa untuk sebagian besar tugas pengkodeannya
  • Bagian dari tim atau anggota tim individu sering kali berpisah dan bergabung dengan tim dalam waktu singkat
  • Semua orang melakukan segalanya (tidak ada peran)
  • Tim tidak menggunakan perkiraan, WIP selalu satu, tidak perlu standup atau upacara serupa

Baca artikel untuk penjelasan terperinci.

Dan
sumber