Agile, karmaşık işleme içeren uygulamalara nasıl uygulanabilir?


12

Çevik ile ilgili literatürün çoğu, kullanıcının sahne arkasında neler olduğunun oldukça farkında olduğu CRUD tipi iş uygulamalarına karşı önyargılı görünüyor. (Bu iyi çünkü yazılan kodun çoğu muhtemelen bu sınıfa ait.)

Bu tür bir uygulama için kullanıcı hikayeleri (gereksinimler) ve geliştirme görevleri arasındaki ilişki çoğunlukla basittir: Kullanıcı hikayesini birkaç göreve ayırın.

Ancak, kodun çoğunun doğrudan kullanıcı tarafından görülemeyen karmaşık işlemlerle uğraşması gereken başka bir uygulama türü vardır. Örnekler:

  • Derleyiciler
  • Kendi kendine giden otomobillerin görüntü analiz sistemleri
  • Akışkan akış simülasyon sistemleri

Burada görevleri ve kullanıcı hikayelerini ilişkilendirmek gerçekten zor olabilir. Bu sorunun üstesinden gelmek için teknikler var mı, yoksa sadece kabul etmek ve en iyisini yapmak zorunda olduğumuz bir şey mi?


6
Downvoter değil, ama bunun yanlış bir önermeye dayandığı için olduğunu varsayacağım. IMO karmaşık sistemleri , daha karmaşık olmaları nedeniyle Çevik bir stil gelişimi için daha da uygundur . Sistem ne kadar karmaşıksa, ortaya çıkan gereksinimlere sahip olma olasılığı da o kadar yüksektir. Çevik SwDev, ortaya çıkan gereksinimleri daha iyi ele almak için oluşturuldu.
RubberDuck

4
@RubberDuck: "Sorunun yanlış bir önermeye dayandığı için olduğunu varsayacağım.": IMO, bu yanlış önermenin açıklandığı bir cevabı değil, bir cevap motive eder.
Giorgio

Kullanımın mantığı anlayıp anlamadığı, çevik süreçle tamamen ilgisizdir. Bir kullanıcı hikayesini bir uygulamaya eşlemek ve bunun ne kadar süreceğini tahmin etmek bir ekibe bağlıdır. Karmaşık ve / veya çok fazla iş varsa, takım hikayeyi daha küçük olanlara bölebilir. Mantık türü önemli değil.
Martin Maat

2
"Çevik ile ilgili literatürün çoğu CRUD tipi iş uygulamalarına karşı önyargılı görünüyor" - Ve Java ile ilgili literatürün çoğu "Merhaba Dünya" dizesini konsolda basmaya eğilimli görünüyor (ya da n. Fibonacci numarasını hesaplamak alternatif). Bu, Java'nın iyi olduğu tek şey olduğu anlamına gelmez. Nedeni her iki durumda da aynıdır: bir blog yayınında veya öğreticide gerçekçi örnekleri açıklamak zordur. [Not: Bu yanlış önermenin temelini göstermeye çalışan hiperbolik bir yorum.]
Jörg W Mittag

1
Agile, görevler ve kullanıcı hikayeleri gerektirmez. İstediğiniz herhangi bir belirtim biçimini kullanabilirsiniz. Bütün mesele esneklik.
Frank Hileman

Yanıtlar:


9

Bu planladığımdan daha uzun olduğu ortaya çıktı (bir yorum olarak başlamıştı), ancak umarım eklenen uzunluk / ayrıntılar yardımcı olur ve bunları haklı bulursunuz.

Çevik CRUD uygulamalarına özgü değildir

Çevik ile ilgili literatürün çoğu, kullanıcının sahne arkasında neler olduğunun oldukça farkında olduğu CRUD tipi iş uygulamalarına karşı önyargılı görünüyor. (Bu iyi çünkü yazılan kodun çoğu muhtemelen bu sınıfa ait.)

Bence bunun nedeni, bu tür sistemlere yönelik bu tür sistemlere yönelik olması değil, bu türden izlenmesi kolay örnekler oluşturmak daha kolay olmasıdır. İzlemesi kolay olmayan bir örnek oluşturursanız, okuyucunuzun çevik kavramlar hakkında bilgi vermesi gerektiğinde örneği anlamaya çalışırken okuyucunun takılma riskini alırsınız.

Kullanıcı Hikayeleri! = Gereksinimler

Bu tür bir uygulama için kullanıcı hikayeleri (gereksinimler) ve geliştirme görevleri arasındaki ilişki çoğunlukla basittir: Kullanıcı hikayesini birkaç göreve ayırın.

Bir kullanıcı hikayesi bir gereklilik ile aynı değildir . Doğru, gereksinimin ne kadar 'yüksek seviyeli' olduğuna bağlı olarak bazı çakışmalar olabilir, ancak genellikle aynı değildir. Eski yöneticilerimin birçoğunun düştüğü aynı tuzağa düştüğünüz izlenimini edindim: kullanıcı hikayelerini sadece "gereksinimler" ile eşanlamlı olarak düşünmek, SVN kullanıcılarının Git'e geçmeye çalıştıklarına benzer, ancak SVN açısından düşünme. (Daha sonra kötü başlangıç ​​varsayımlarından dolayı sorunla karşılaşırlar.)

Gereksinimler ve kullanıcı hikayeleri arasındaki önemli bir fark olan IMHO, gereksinimlerin belirli sistem bileşenlerinin nasıl davranması gerektiğini ayrıntılı olarak belirtmesidir; onlar ediyoruz özellikler girişler, çıkışlar, varsayımlar / pre-şartları arasında, olası istisnalar Onlar ne odaklanmak vb kaldırdı sistem yok.

OTOH, kullanıcı hikayeleri, sistem bileşenleri için ayrıntılı bir davranışsal özellik oluşturmaya çalışmadan son kullanıcı için beklenen sonuca odaklanır. Beklenen kullanıcı deneyimine odaklanırlar .

Eskiden yaptığım şey, bu da ekibimin benimsediği bir uygulamadır, kullanıcı hikayelerini görevlere ayırmaktı. Görevleriniz, istediğiniz / ihtiyaç duyduğunuz kadar belirgin veya belirsiz olabilir, ancak hikayeyi tamamlanmış bir duruma getirmeye yönelik yapılan gerçek çalışmalar için ilerleme göstergeleriniz olması gerekiyordu.

Misal

Yıllar önce, kullanıcıların test senaryolarını kendileri atamaları gerektiğinde, ekipteki herkesin yinelenen çabalardan kaçınmak için hangi TC'lerin üzerinde çalıştıklarının farkında olması için kabaca çalıştığım bir ABD'yi hatırlıyorum; kullanıcı arayüzü (n dahili) bir web uygulamasıydı. Kullanıcı sadece bir düğme gördü, ancak hikaye bazı teknik uygulama ayrıntılarını vb. İçeren birkaç göreve ayrıldı.

Kullanıcı Görünürlüğü

Ancak, kodun çoğunun doğrudan kullanıcı tarafından görülemeyen karmaşık işlemlerle uğraşması gereken başka bir uygulama türü vardır.

Kullanıcıya bir şekilde görünür kılmak mümkün mü?

Bir GPS düşünün. Sıranızı kaçırdığınızda, gerçek rota yeniden hesaplama işlemini görmezsiniz, ancak kullanıcı bazı faydalı geri bildirimler alır (örn. "Yeniden hesaplama ...").

Derleyiciler, uyarılar veya hatalar görüntüleyebilir veya kullanıcıların yeni bir şey eklendiğini görmeleri için GUI'ye yeni ayarlar / seçenekler ekleyebilir. Derleyicilerin kullanıcılarının programcı olacağını düşünüyorum, değil mi? Yeni bir standart için destek görmediler mi?

Yeni bir standardı desteklemek muhtemelen özellik düzeyinde olsa ve kullanıcı hikayelerine ayrılmanız gerekecek olsa da, en azından bazı durumlarda, özellikleri kullanmanız gerektiğinde hikayeleri kullanmaya çalışmadığınızdan emin oldunuz mu? ?

Bir arabadaki görüntü analizi, kullanıcının bir araba kazasında sonuçlanma şansının azaldığını bildirecek şekilde ifade edilebilir. Örneğin:

Kendi kendini süren bir arabada yolcu olarak, daha güvenli seyahat edebilmek için tanınmayan bir nesneye çarparak sıfıra yol açarak aracın kaza yapma olasılığına ihtiyacım var.

ABD, normalde belirtmeniz gereken şeyleri, güvenlik, emniyet vb. Dahil olmak üzere işlevsel ve işlevsel olmayan gereksinimlerin bir kombinasyonunu kullanarak yakalar.

Ancak, sistemle ilgili bir gereklilik daha fazla olabilir; Örneğin:

abcBileşen içindeki işlev , Ayavaş hareket eden nesneleri daha iyi algılamak için görüntü karşılaştırma algoritmasında tolerans eşik değerinin azaltılmalıdır.

Bana göre, bu, yukarıda bahsettiğim kullanıcı hikayesi altında, şu şekilde bir şey başlıklı bir görev olacaktır : İşlevdeki toleransı azaltınA.abc ve daha sonra ilgili diğer ayrıntıları ekleyin.

Sıvı simülasyon sistemi için, eğer mantıklıysa, sistemin gerçekleştirdiği arka plan görevleri hakkında geri bildirim sağlayan bir ilerleme çubuğuna bile sahip olabilirsiniz. (Her zaman kullanıcıyı bir şey hakkında bilgilendirmenin bir yolu vardır, ancak spam yapmaktan kaçınmak isteyebilirsiniz.)

Daha iyi ve / veya daha gerçekçi örnekler bulmak için bahsettiğiniz belirli alanlar hakkında yeterince bilgim yok, ancak burada bir paket varsa, daha az görünür bir şey hakkında kullanıcı geri bildirimi sağlamak için farklı yollar kullanabilirsiniz. sistem yapıyor olabilir, yani görünmez şeyleri biraz daha görünür hale getirmenin yolları olabilir. (Sistemin performansının şimdi ne kadar çabanızdan kaynaklandığını vb. Belgeleyen bir dizi sürüm notu yazarken kaybolsa bile)

Hikayeler ve Görevler Arasındaki İlişki

Burada görevleri ve kullanıcı hikayelerini ilişkilendirmek gerçekten zor olabilir.

Yaklaşımımız kullanıcı hikayelerini talebin ne olduğuna, neden yapıldığına ve ABD'nin "bittiğini" düşünmek için neyin doğru olması gerektiğine odaklanmaktı . Nasıl her zaman ABD'nin dışında kalan ve geliştirici (ler) bırakıldı.

Geliştirici (ler) bu görevlerin bir kümesi haline ABD'de açıklanan sorunu yıkmak istiyorum onlar üzerinde çalışacak.

Bunu, çoğunlukla, son kullanıcı için alabileceğiniz kadar "görünmez" olan arka uç sunucu tarafı programlama yapan biri olarak söylüyorum.

Ne yapmam gerektiğine bağlı olarak, bazen basit bir "yükleniyor ..." animasyonu / gif göstermek için AJAX'ı kullanırım, böylece kullanıcı yanlış bir izlenim olmadan başka bir şeyin tamamlanması için biraz beklemeleri gerektiğini biliyordu. Bazen bu kadar basitti. Bunun için bir görev uygun olacaktır.

Farklı Paradigma, Uygulama ve Deneyim

Bu sorunun üstesinden gelmek için teknikler var mı, yoksa sadece kabul etmek ve en iyisini yapmak zorunda olduğumuz bir şey mi?

Paradigma kaymasını kabul etmenin ötesinde, pratik yapmak ve deneyim kazanmak, muhtemelen söyleyecek çok şey yok. Sık sık insanların süreç boyunca kısayollar almaya çalıştıklarını gördüm. Buna karşı tavsiyede bulunacağım, özellikle de başlarsanız. Daha fazla deneyim kazandıkça, biraz esnekliğe izin verebilirsiniz, ancak kendinizi baltalamaktan kaçının.

Önceki ifadeleriniz göz önüne alındığında, hikayeleri hala "yeniden adlandırılmış gereksinimler" gibi düşünürsünüz, ki bu yanlış bir varsayımdır. Bence bu Çevik ve Çevik olmayan yaklaşımlar arasındaki temel farklarla ilgili daha derin bir sorunun belirtisi .

İkincisi, bence çevikliğin şelaleyle karşılaştırıldığında bir paradigma kayması olduğunu kabul etmelisiniz , yani süreç benzer hedeflere sahipken, çok farklı şekillerde ilerliyorlar. (Bu yardımcı olursa SVN'yi Git'e karşı düşünün.)

Gereksinimler ve kullanıcı hikayeleri arasındaki kavramsal farklar hakkındaki mevcut anlayışınızı geliştirmeye çalışın ve aynı şey olmadığını kabul edin.

Sprint'lerinizden Öğrenme - Retrospektifler

Yeterince vurgulayamadığım şey, her sprint sonunda Scrum Master ve Geliştiriciler arasındaki retrospektiftir . Dürüst / şeffaf bir şekilde "iyi giden" veya "iyi gitmeyen" şeyleri tartıştıkları ve "iyi gitmedi" noktalarını ele almak için bir sonraki sprint için hangi yapılabilir değişikliklerin uygulanacağı yer burası. .

Bu, birbirimizin deneyimlerine uyum sağlamamıza ve hatta öğrenmemize izin verdi ve bunu bilmeden önce, ekibimizin hızının genel tutarlılığı ile ölçülen önemli ölçüde iyileştik.


"Kullanıcı Hikayeleri! = Gereksinimler": İkisinin eş anlamlı olduğunu söylemek istemedim. Her gereksinim bir kullanıcı hikayesi değildir. Ancak tüm kullanıcı hikayelerinin gereksinimler olduğunu düşünüyorum. Gereksinimleri, kullanıcı öykülerinin belirli bir ayrıntı düzeyi olduğu hiyerarşik bir yapı olarak görüyorum. Kabul eder misin?
Frank Puffer

@FrankPuffer Kullanıcı hikayelerini, gereksinimler hiyerarşisinde farklı bir düzeydeymiş gibi görüntülemek temelde farklı kavramları karıştırıyor. Çevik tarafta, bir hiyerarşi daha çok benzer: Temalar >> Destanlar >> Özellikler >> Kullanıcı Hikayeleri >> Görevler . Gereksinimler genellikle daha geleneksel Şelale yaklaşımında işlevsel ve işlevsel olmayan gereksinimlere ayrılır, ancak gerçek bir hiyerarşiyle karşılaşmadım; dedi ki, eğer birisi daha küçük "alt" gereksinimlere tekrar tekrar girecek olsaydı şaşırmazdım . Her durumda, farklı kavramları karıştırıyorsunuz.
code_dredd

PTC Integrity gibi gereksinim yönetim sistemleri, gereksinimleri bir hiyerarşi olarak ele alır. Bu, gereksinimleri bir şartname belgesiyle eşlerken bir avantaj olabilir.
Frank Puffer

@FrankPuffer Evet, bu yüzden şaşırmayacağımı söyledim. Bununla birlikte, cevabımın sizin için her şeyi netleştirdiğini merak ediyorum. SVN vs Git benzetmesi faydalı oldu mu? (Bir yazılım geliştirme bağlamında makul görünen her iki sistemi de bildiğinizi varsayar.)
code_dredd

Tamam, "olmaz" gibi "yanlış" yanlış. Ve evet, cevabınızı çok yardımcı buluyorum ve muhtemelen kabul edeceğim. Muhtemelen kullanıcı hikayelerini gereksinimler olarak görmeme fikrine alışmak için biraz zamana ihtiyacım var.
Frank Puffer

4

Bu durumlarda çevik ilkeler kesinlikle uygulanabilir. Nasıl?

  • Derleyiciler daha sonra ayrı kullanıcı öykülerine yeni dil özellikleri ekleyebilir
  • Görüntü analiz sistemleri, farklı görüntü sınıflandırmaları olarak eklenen yeni özelliklere sahip olabilir
  • Akışkan akış simülasyon sistemleri, simülasyonlarında farklı model yönlerini dikkate alabilir

Tüm fili tek bir ısırıkta yemek zorunda değilsiniz. Agile sadece bir sonraki fil servisinden önce tabağınızı temizlediğinizi göstermenizi ister.


Yine de çok fazla temel işlev gerektiren bir veya daha fazla kullanıcı hikayesinin kalacağını düşünüyorum. Genellikle tek bir sprint'e uymazlar. Bu nasıl ele alınmalı?
Frank Puffer

1
Başarıyı müşterilerin test edebileceği, görebileceği veya dokunabileceği çalıştırılabilir uygulamalarla ölçersiniz. Durum buysa, onlara bu şekilde ilerleme hissi veren bir oyuncak verin. Örneğin, muhtemelen ilk süratte kendi kendine giden bir araba bırakamazsınız, ancak algo'nuzun insanları nasıl bağladığını gösteren bir demo yapabilirsiniz. Daha sonra, sinyalleri ve hayvanları nasıl keşif eder. Daha sonra mesafeleri, boyutları vb. Nasıl ölçüyor ... Kendi kendine giden araba uzak bir sprintte çok uzak, çok uzak olup olmayacağını bilen biri.
Laiv

2
@Laiv: Güzel olurdu ama işe yarayıp yaramadığından emin değilim. Parctice'de, ilk birkaç sprintten sonra, yazılım müşterinin ilgili olabileceği hiçbir şeyi yapamaz. Teknik ilerlemeniz olacak, ancak imkansız değilse bile müşteriye iletilmesi zor olacaktır.
Frank Puffer

2
Neden? Taş üzerinde projenize yabancı biri tarafından yazıldığı için mi? Agile'ın kendi ihtiyaçlarıma adapte olmasını beklerim, aksi halde değil. Eğer 4 hafta içinde paten yapmayı öğretebileceğimi ve 5'inde hala ayakta kalmayı başaramayacağımı söylesem, bu paten öğrenmeyeceğin anlamına mı gelir? Yoksa sadece biraz daha uzun sürecek mi? Çevik manifesto taş üzerine yazılmadı ya da Scrum'ın kuralları Eğiliş Emirleri değil.
Laiv

2
Sprintlerin amacı müşterinizi tekrarlarınızın bir parçası haline getirmektir. Onlarla birlikte verilen kodu kullanarak iletişim kurmak. Planlar ve vaatler değil. Sorunu çözmeye odaklanmanızı gerektirir. Teslim ettiğiniz ilk şeyin taş haline getirilmesini gerektirmez. Her koşuyu ödemeye değer olduğunuzu kanıtlamanızı gerektirir.
candied_orange

1

Kesinlikle kullanıcı hikayelerine bağlı olan insanların, sadece arka uç teknik değişikliklerin kullanıcıyı etkilediği çok getirilmiş yollarla gelmenin çok aptalca bir alıştırmasına gireceğini görüyorum (elbette kullanıcıya göre değil, çünkü bunlar sadece naif kullanıcı ve veri analizi boru hattınızdaki karmaşık değişiklikler veya bu tür bir şeyden bahsediyorsunuz) ya da "bu işi nasıl organize edeceğiz!?!"

Bence bariz çözüm daha pragmatik olmak. Eğer iş doğası gereği çok teknikse ve kullanıcı üzerinde belirgin bir etkisi yoksa, nasıl çalıştığını açıklamaya çalışırken uykunuzu kaybetmeyin. Sadece kullanıcılara fayda sağlayabileceği bariz ve basit bir yol seçin ve ardından hikayeyi geliştiricilerin işlerini yapması için gerekli ayrıntılar etrafında yönlendirin. Bir PO'nun kesinlikle gerekli olduğunda hikayede teknik bilgi sahibi olmamakta ısrar etmesi inanılmaz derecede sinir bozucu buluyorum. Bu eserin (hikaye) gerçekte ne olduğuna dair çok bütünsel bir bakış değil. Bunun sadece onlar için var olduğunu düşündükleri gibi, çoğu durumda mühendisler için de önemlidir.

Bu teknik görevlerin çoğu için, kullanıcının etkisi ile ilgili olarak, gelecekteki teslimatların daha hızlı olması, performansın, güvenilirliğin vb. İnsanların 'kullanıcı hikayelerini' düşündüklerinde gerçekten düşünmeye eğilimli oldukları şey değildir, ancak işletme neden teknik borç veya bunun için bir şey üstleneceğinizi anlamak istiyorsa, bu açıklamalar genellikle en basit olanıdır.

tl; dr, bir scrumnazi'nin hayatınızı daha da zorlaştırmasına izin vermeyin çünkü uyum sağlamak için çok fazla karedirler. Uyarlanabilir olmak, sonuçta temel bir çeviklik kavramıdır. Scrum veya Agile'a sıkı sıkıya bağlılık genellikle yüz veya pragmatizm ve pratiklikte uçar (aslında en iyi olanı).


Ben esnek olduğum için, ama açıkçası kullanıcı hikayeleri tatmin olduğu sürece teknik detayları önemsemiyor. İyi gereksinimlere sahip olmak için "kesinlikle çevik" olmak zorunda değilsiniz; ve iyi gereksinimlerle, her birinin gereksinimin kesin olarak karşılandığını kanıtlayan bir kabul testinin eşlik ettiği gereksinimleri kastediyorum. "Çok aptalca alıştırmalar yapan" insanlar açıkça yanlış yapıyorlar, ama bu "katı scrum" kavramını takip ettikleri anlamına gelmiyor.
Robert Harvey

@RobertHarvey Teknik detayların kullanıcıyla alakasız olduğunu kabul ediyorum, ancak benim açımdan, kullanıcı hikayelerini içeren eserlerin, yalnızca işlerin kullanıcı için nasıl çalıştığını (veya en azından yapmaları gerektiğini) bildirmekten daha geniş bir amacı olduğu. Tamamen kullanıcı hikayeleri yazarlarsa mimari, genişletilebilirlik, performans vb. İle ilgili gereklilikleri nasıl uygular? Saf bir 'kullanıcı hikayesi' yaklaşımı geliştirmek, geliştiricileri düşük kaliteli kod yazmalarına teşvik eder. Ve devs ve qa 'kullanıcı hikayelerini' okuyan kullanıcılar değil, teknik olduğu için ilgili bilgileri kasten hariç tutmak aptalca.
evanmcdonnal

0

Bence sorun kullanıcı hikayelerine sahip olmadıkları bir anlam vermektir. Scrum, PBI veya Ürün İş Listesi Maddesi terimini kullanır; bu da son derece daha iyi olduğunu düşünüyorum. PBIs olacak genellikle bir kullanıcı hikaye biçimi yoktur "Aboneler Abonelik ayrıntılarını görüntülemek mümkün olmalıdır" gibi örneğin, bir KBI sahip olabilir, ama aynı zamanda aynı kolaylıkla gibi KBI olabilir "Abone bilgilerini almak için bir saklı yordam oluşturma ".

Kullanıcı hikayeleri bir araçtır . Kendinizi bir kullanıcının yerine koymaya dayalı özellik açıklamaları ve gereksinimleri oluşturmanıza yardımcı olurlar. Ancak, bir resmi asmanız gerektiğinde bir anahtarın işe yaramaz olması gibi, bir kullanıcı hikayesine ihtiyaç duymayabileceğiniz zamanlar vardır.

Bununla birlikte, birçok takım aslında "kullanıcı" kısmı ile hızlı ve gevşek oynuyor. Onlar gibi "kullanıcı hikayeleri" olabilir "Bir geliştirici olarak, abone ayrıntılarını almak için saklı bir prosedür çağırabilmeliyim, aslında bir" geliştirici hikayesi "olduğu gibi. Bu eşit derecede geçerli bir seçenektir, ancak kişisel olarak, ne yapılması gerektiğini açıklayabildiğiniz ve bir dizi kabul kriteri ortaya koyabildiğiniz sürece, arkasında gerçek bir kullanıcı hikayeniz olup olmadığı pek önemli değildir.


1
Çok garip ve nadir durumlar dışında buna katılmıyorum. Scrum'da NASIL ürün sahibinin değil geliştirme ekibinin görüşüdür. Yine de ürün sahibi PBI'lardan sorumlu olmalıdır. Dolayısıyla, "saklı yordam oluşturma" gibi bir PBI, geliştirme ekibinden NASIL seçim hakkını ortadan kaldırır. Kullanıcı öyküsü olsun ya da olmasın PBI'lar, PBI yaparken iş değerinin ne olduğunu açıklamalıdır. Saklı yordam oluşturmak iş değeriyle değil, uygulama ayrıntılarıyla ilgilidir.
RibaldEddie

Konu o değil. Bu sadece bir örnekti. "Saklı yordamı" yalnızca "bir yol" gibi genel bir şeyle değiştirebilirsiniz. Mesele şu ki bir kullanıcı hikayesi olmak zorunda değildir.
Chris Pratt

bir örneğin bütün amacı örnek olmaktır. Örneğin "nokta değil" ise o zaman örneğin amacı nedir ??
RibaldEddie

-3

Bu tür uygulamalar tam olarak farklı uzmanlıkların mevcut olduğu uygulamalardır ve daha da gelişecektir. Ekip üyeleri farklı eğitim, farklı hobi projeleri ve farklı geçmiş iş tecrübesi farklı becerilere sahip olacaklardır. Dahası, eğer birisi belirli bir kod parçası geliştirirse, geliştiricinin kodu en iyi bilen kişi olması beklenebilir. Bu yüzden aynı geliştiriciye aynı kod parçasını içeren daha fazla geliştirme görevi vermek mantıklı olabilir.

En popüler çevik süreç Scrum'da, her göreve bir zorluk seviyesi verildiği planlama pokeri var. Zorluk seviyesi, bu görevi sürece göre yapan kişiye bağlı değildir. Daha sonra sprint sırasında, insanlar homojen olarak kabul edilir, böylece her bir kişinin her bir görevi seçip yerine getirmesi beklenir. Basit CRUD projelerinde bu varsayım geçerlidir. Ancak çok karmaşık ve zor projelerde, kesinlikle değil.

Bu tür projeler için çevik bir süreç kullanmam. En iyi seçiminiz resmi süreçlerden kaçınmak ve sadece iyi proje yönetimi kullanmaktır. Belirli bir özelliği kimin uyguladığına karar verirken, bu özellik için gereken en iyi becerilere ve mevcut kod hakkında en iyi bilgiye sahip olanları düşünün. Bunun için herhangi bir işlem gerekmez. Muhtemelen tüm özellikler için iyi tasarım belgeleri yazmak ve güncel tutmak isteyeceksiniz. Burada şelale benzeri bir modeli tanımadığımı unutmayın: tasarım belgelerinin tamamı projenin başında yazılmayacak; bunun yerine yeni özelliklere ihtiyaç duyulduğundan yeni tasarım belgeleri yazacaksınız.


5
Sorumla gerçekten ilgili değil, ama her zaman en iyi becerilere sahip olan bir özelliğin uygulanmasına izin vermek tehlikeli olabilir. Ekip içindeki bilginin yayılmasını engeller. Bakım gerekiyorsa ve uzman ekipten ayrıldıysa veya geçici olarak kullanılamıyorsa, başınız belada olacaktır.
Frank Puffer

@FrankPuffer Uzman ekipten ayrılırsa listelediğiniz bazı sistemler için, örneğin kendi kendine giden arabalar için, başınız belada ise. Dönemi. Muhtemelen bu durumda olmasa da kodlama merkezileştirilmesi, herhangi bir makul kısa zaman ölçekli uzman değişimine olanak tanımak için yeterli bir "bilginin yayılmasını" varsaymak da tamamen mantıksız. Bunlar, sorunu araştırmak için on yıldan fazla zaman harcayacak ve muhtemelen kendi alanlarının en üstünde yer alacak kişilerdir. Muhtemelen farklı becerilere sahip böyle birden fazla kişiye ihtiyacınız olacak. Bu tür projeler doğal olarak risklidir.
Derek Elkins SE
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.