“Kaynıyor” nedir?


42

Çevik veya Aşırı Programlama bağlamında sözü geçen kaynaşmayı duydum . Eşleştirmenin bir tamamlayıcısı gibi görünüyor.

Tam olarak nedir? Ne zaman uygulanmalı? Nasıl iyi yapıyorsun?


@CodeWorks: Google’daki aramalarım, birkaç alakalı sonuç üretti ve hiçbiri sorumu net bir şekilde yanıtlamadı. Dışarıda kanonik bir cevap varsa, o zaman elbette, buraya gönderin.
Jay Bazuzi,


Strateji video oyununda "Yıldızların Kılıcı" adlı bir seslendirme çizgisi var, burada karınca / mantis / insanların bir araştırma emri çıkardıklarında "Laboratuvarı senin majestelerine boğuyoruz" diyorlar. Her zaman bunun dramatik bir ironi duygusu ile inişe geçeceğini düşünmüştüm.
Erik,

Yanıtlar:


43

Fikir, ekibinizdeki herkesin aynı anda aynı hikaye üzerinde çalışması. Herkes farklı görevlere odaklanmak yerine, herkes tamamlanana kadar bir seferde bir göreve odaklanır. Sonra birlikte çalışacakları bir sonraki şeye geçerler.

Bu, sprint bitmeden hikayeleri tamamlamada mücadele eden takımlara yardımcı olur. Genellikle takımlar tüm hikayelerin% 80'ini bitirir, ancak hiçbiri tamamlanmaz. Bu, bitmemiş hikayelerin bir son kullanıcı için hiçbir değeri olmadığı için hikayelerin% 80'ini tamamen bitirmekten daha az faydalıdır. Takımdaki herkes aynı anda bir hikayeye odaklandığında hikayelerin tamamlanması daha kolaydır. Bu, kaynaşmanın arkasındaki motivasyondur.

Burada bazı zorluklar var. Örneğin, KG her zaman bir şeyi inşa edilmeden (veya hatta tasarlanmadan) test edemez. Bu durumda, önceden bir tasarım hazırlamanız gerekir ve daha sonra KG, asıl uygulamaya değil tasarıma karşı (başlangıçta başarısız) testler yazabilir.


+1. İlginç. Bu işi pratikte gördün mü?
CodeART

2
Bunu söylemenin bir başka yolu "mümkün olduğunca az sayıda ilerleme kaydetmiş olmak", değil mi?
Jay Bazuzi

1
@CodeWorks Evet. Şu anda biraz başarılı olmak için çalıştığım yerde kullandık. Bu özellik odaklı çünkü geliştirmek için oldukça eğlenceli bir yol. Herkes aynı amaç için aynı anda çalışıyor, bu yüzden takım çalışmasını gerçekten iyi teşvik ettiğini buldum.
Oleksi,

1
@JayBazuzi Evet, hemen hemen. Yine de tam takım desteğine sahip olmak da önemlidir.
Oleksi,

9
@CodeWorks, Hiç de değil. Aslında, muhtemelen arttırdı. Herkes birlikte çok yakın çalıştığı için ortaya çıkan daha az engelleyici vardı. Bir şey ortaya çıktığında, en azından ekipten biri nasıl çözüleceğini biliyordu ve tam dikkatini çektiği için hemen yapabildi. Ayrıca, içerik değiştirme genellikle verimliliğiniz için kötüdür. Sadece sana CPU'yu sor. : P
Oleksi

10

Bağırmak, birden fazla kişinin bir görevi veya hikayeyi tamamlamak için birlikte çalışması gerçeğini ifade eder. Tecrübelerime göre bu sık sık yaptığın bir şey değil.

Genellikle ekibimin her üyesi farklı bir görev ve / veya farklı bir hikaye üzerinde çalışır. Birisi geride kalıyorsa veya bir görevi veya hikayeyi erken bitirmek arzusu varsa, diğer insanlar başka görevler üzerinde çalışmayı bırakacak ve görevi tamamlamak için “sürecek” olacaktır; bu, onların hepsi tek bir görev veya hikaye üzerinde birlikte çalışacakları anlamına gelir. tamamlandı.

Son zamanlarda, oldukça sıkıcı, ilginç olmayan bir iş olan az sayıda öykümüz vardı. Takıma küçük bir teşvik (pizza) ve son gün (günün sonunda) verdim, bu yüzden hikayeye sızdılar ve bir öğleden sonra en az birkaç gün çalışmayı bıraktılar. İşi yaptılar ve erken çıkardılar, sonra her ekip üyesi çalıştıkları her şeye geri döndü. Bedava öğle yemeği aldılar, donuk doğası nedeniyle sürüklenebilecek işleri erken yaptım ve ekip onların sprintlerinin önüne geçti. Win-win-win.

“Swarming”, “hey, size yardım etmemize izin verin” için süslü bir terimden başka bir şey değildir.


Bu diğer cevaptan oldukça farklı görünüyor. "Alışılmadık, acil bir ihtiyaç olduğunda, herkesin üzerine gelsin" diyorsunuz. @Oleksi, "bir geliştirme döngüsü planlarken, herkesin aynı anda bir göreve başlamasını, her bir bireyin ayrı bir görev üzerinde paralel çalışmasını sağlamaktan daha iyi olduğunu" söyledi. Her iki tanım da makul ve her ikisi de yararlı uygulamalardır, ancak onun 4 oyu vardır, bu yüzden cevabının en yaygın kabul gören tanımı yansıttığını farz ediyorum.
Jay Bazuzi,

@ Baz Bazuzu: Herkes sprint planlamasının bir parçası olarak tek bir göreve konsa da, ya da ihtiyaç duyulduğunda organik olarak gerçekleşse, tanım hala hemen hemen aynıdır - herkes tek bir görev üzerinde birlikte çalışır.
Bryan Oakley

Bence cevabın burada çok önemli. 'Kabul edilen' diğer cevap ise "ne" dir. Ama seninki nasıl olduğunu ele alıyor.
Ape-inago

2

Bağırmak aslında çeviklik için merkezi bir kavramdır. “Sorun olduğunda” yapılan bir şey değildir. Yutmak, en basit haliyle, ekiplerin eşyalar üzerinde (hikayeler) işbirliği içinde çalışması ve tamamlanması için çalışması anlamına gelir. Temel kavram "başlamaktan vazgeçme ve bitirmeye başlamak" tır. Başka bir deyişle, bağımsız olarak bir hikaye üzerinde çalışan her geliştirici yerine, ekip birlikte daha sınırlı bir dizi öykü / görev üzerine odaklanır ve her bir öğeyi daha erken tamamlar. Tek iş parçacıklı bir sistem ve çok iş parçacıklı arasındaki fark olarak düşünün. Bir Kullanıcı Öyküsünün yapılması gereken 10 görevi varsa ve her biri 8 saat sürüyorsa, herhangi bir komplikasyon olmadığı varsayılırsa, bir geliştirici her bir görevi sıralı olarak çalıştırabilir ve öyküyü 80 saat veya yaklaşık iki haftada tamamlayabilir (10 günlük sprint verildiğinde) günde 8 dev saat). İki geliştirici görevleri bölüp aynı anda çalıştıysa ne olur? Aynı 80 saatlik çalışma bu şekilde bir haftada tamamlanabilir. Üçüncüsü ekleyin ve artık 3 ila 4 gün içinde yapılabileceğini görebilirsiniz.

Kaynaşma birkaç şekilde yapılabilir:

  1. İkili Programlama (kod üzerinde çalışmak için yan yana oturan iki geliştirici, biri kodu yazan "sürücü", diğeri ise gezicidir, uzun vadeli yönü akılda tutarak ve aynı anda kod incelemesine yardımcı olur.
    1. Eşleştirme: Bir geliştirici ve bir test cihazı aynı iş, aynı anda kodlama ve diğer test, otomasyon yazma, vb. Üzerinde aynı anda çalışır.
    2. Yukarıda bahsettiğim gibi kaynıyor, ki bu çok yaygın. Genellikle, ekip üyeleri bir Hikaye yutar, ancak her biri bu yöntemde bireysel görevlere sahiptir.
    3. Mob programlama: Tüm takım bir kerede bir hikaye (hatta görev) üzerine odaklanmıştır.

Her geliştiriciye bir hikaye veren ekipler, çok fazla "devam eden iş" veya WIP'e sahip olma eğilimindedir ve çoğu zaman pek çok hikaye başlar fakat yapılmaz. Bu bir ANTI-PATTERN ve en iyi uygulama değil.

Sürüdeki ekipler daha az WIP'ye sahip olma ve daha fazla hikaye tamamlama eğilimindedir - yani, demek istediğim, Geliştirilmiş, Test Edilmiş, Onaylanmış, konuşlandırmaya hazır. Dolayısıyla bu bir pratiktir, çevikliğin özü budur.


1

InfoQ ile ilgili aşağıdaki makalede , kaynaşmaya bir yaklaşım açıklanmaktadır:

  • Takım kodlama görevlerinin çoğu için mafya programlamasını kullanıyor
  • Takımın bir kısmı veya bireysel takım üyeleri sık sık kısa aralıklarla takıma katılır ve katılır.
  • Herkes her şeyi yapar (rol yok)
  • Takım tahminleri kullanmıyor, WIP her zaman birdir, standuplara veya benzeri törenlere gerek yoktur

Ayrıntılı açıklama için makaleyi okuyun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.