Çevik yöntemlerle mükemmel yazılım nasıl geliştirilir?


61

Müşteri memnuniyeti Kano modeli ürün özellikleri farklı sınıflarını tanımlar. Aralarında

  1. Olması gereken nitelikler: Bunlar uygulanmazsa, müşteri ürünü kabul etmeyecektir.

  2. Cazip özellikler (teklifler): Müşterinin genellikle en başta beklemediği, ancak keşfedildiğinde heyecan ve zevk yarattığı özellikler.

Cazip niteliklerin belli ki bir çok işletme değeri var. 5.000'den daha az kullanılmış bir Fiat'ın tüm gereklilikleri karşılaması durumunda, insanların 500.000 dolara Ferrari satın almasını sağlıyorlar.

Ancak, şiddetle tavsiye ettiğim tüm çevik süreçler, zorunlu olma şartlarını gerektirir. Bunlar her zaman en yüksek önceliği alır. Çevik açıdan çekici niteliklere sahip bir yer bile görünmüyor.

Çevik süreçlerin yazılım geliştirmede çok faydalı olduğuna inanıyorum. Ancak, olmazsa olmaz gereksinimleri karşılayacak minimum kaliteyi değil, yüksek kalitede yazılım ürünlerini oluşturmak için nasıl uygulanabilirler?

Zeyilname: İlk iki cevabın işaret ettiği gibi, en yüksek önceliğe sahip olmanız gereken şartları vermek mantıklıdır. Ancak biz (ve müşteri) her zaman önceden olması gerekenlerin ne olduğunu önceden biliyoruz. Deneyimi birkaç kez yaptım, başlangıçta yüksek öncelik verilen gereksinimlerin, daha sonra işe yaramazsa daha az önemli olduğu ortaya çıktı. Bu nedenle, kişinin meclis olarak olması gereken şartlara odaklanmaması gerektiğine inanıyorum.


12
Onları gereksinimlere dönüştürmek? Şaka değil. Kano Modeline katılıyorum. Bununla birlikte, birçok kez şirketlerin, projelerin satılmasının ardından ölen boş ve işe yaramaz pazarlama ile nitelikleri ve yükleyicileri karıştırdığını gördüm. Bu şeyleri temel gereksinimlere dönüştürün. Ayrıca çevik metodolojiler taşınmaz dogmalar değildir. Agaile'yi her kim kullanıyorsa, metodolojiyi daha yüksek güçlere uyarlamakta serbesttir.
LAIV

8
"Ama biz (ve müşteri) her zaman olması gerekenleri gerçekten önceden biliyor muyuz" - hayır ve bu nedenle çevik metodolojiler mükemmel bir yazılım sunabilir; Buna izin veriyorlar. Hiçbir şeyi "kabadayı takip etmiyorsunuz " ve öncelikleri değiştirebilir ve devam ettikçe gereksinimleri gözden geçirebilirsiniz.
jonrsharpe

17
“Deneyimi birkaç kez yaptım, başlangıçta yüksek öncelik verilen gereksinimlerin, işe yaramaz olmasa bile, daha az önemli olduğu ortaya çıktı.” - bu tam olarak çevik nokta - buna tepki göstermek öğrenme süreci. Şelale süreçleri tanım gereği öncelikleri değiştiremez.
Doc Brown

21
@DanMills: Aslen tarif edildiği gibi Waterfall modeli tam anlamıyla saman bir adamdı. Bazı yazılım geliştirme projelerinin o zaman ne kadar saçma olduğunu (planladıklarını) tüm uygulamalardan önce tüm uygulamalardan önce tüm testlerden önce yaptıklarını iddia ediyordu. Aynı makale, yinelemeli gelişimin (şu anda çevik olarak adlandırdığımız şey dahil) her yerde hazır olduğunu, ancak kararlaştırılan uygulamaya aykırı olduğu için kötü bir şekilde yönetildiğini ve açıkça kucaklanması ve sömürülmesi gerektiğini savundu.
Phil Miller

4
Mükemmel yazılım nasıl geliştirilir? Mükemmel geliştiriciler kiralayın. Gelişim metodolojisi, gelişmeyi yapan insanlardan çok daha az önemlidir.
Mark

Yanıtlar:


78

Resmi cevap çevik olarak yanlış anladığınız, çevik gereklilikleri belirlemediği, paydaşların yaptığı gibi. Çevikliğin özü, gereksinimlerinizi taşa bölmek değil, ilerici içgörülerden yararlanarak, müşterilerinizle yakın temas halinde olduğunuz sürece ortaya çıkmalarını sağlamaktır.

Ama hepsi bu teori. Tanık olduğunuz şey aslında çevik bir çalışma şekli benimseyen birçok yazılım üretim hattının ortak bir özelliğidir.

Sorun şu ki, müşteriyi dinlemek ve müşterinin ihtiyaçlarına hızlı bir şekilde cevap vermek çoğu zaman ürün hakkında bir düşünce yapmamak veya herhangi bir tasarım yapmamakla sonuçlanıyor. Vizyon ve uzmanlık ile beslenen proaktif bir süreç olarak kullanılan şey, müşterinin istekleri tarafından beslenen pasif, tamamen reaktif bir süreç haline gelebilir ve çoğu zaman kötüleşir. Bu, sadece “işi yapacak” gibi zorunlu gereklilikleri ortaya çıkaracaktır.

O zamanlar üreticilerin "çevik" olması durumunda otomobil asla icat edilmeyecekti, çünkü bütün müşterilerin istediği daha hızlı bir attı.

Bu olsa çevik kötü yapmaz. Bu biraz komünizm gibidir. Neredeyse hiç işe yaramayan harika bir fikir çünkü insanlar sadece insanlar, insanlar şeyler yapıyor. Ve / ideoloji / din metodu onları, hareketlerden geçtikleri ve / veya kuralları takip ettiği sürece iyi yaptıkları fikrini geçersiz kılar.

[Düzenle]

Slebetman:

O zaman o çevik otomotiv endüstrisinden (yani Toyota) ortaya çıktı.

Otomasyonun altın kuralını hatırlıyor musunuz? "Önce organize et, sonra otomatikleştir". Kırık bir işlemi otomatik hale getirirseniz, olabilecek en iyi şey yanlış giden her şeyi hızlandırmanızdır. Toyota'daki insanlar aptal değildi.

Herhangi bir yeni metodolojiyi benimsemenin tipik nedeni, işlerin iyi gitmemesidir. Yönetim bunu kabul eder, ancak temel sorunları anlayamayabilirler. Böylece Çevik ve Scrum hakkında dirençli bir konuşma yapan bu guruyu işe alıyorlar. Ve herkes onu seviyor. Kendi sebeplerinden dolayı.

Geliştiriciler "Hey, bu işe yarayabilir. İşle ilgili meselelerle daha fazla ilgilenir ve bu birikimi doldurmak için girdi sağlayabiliriz. Bu, satış ve müşteri hizmetlerinin ne yaptığımızı, neden gerekli olduğunu anlamasını sağlamak için bir fırsat olabilir." ve üzerinde anlaşmaya vardıklarımızı şeffaf bir şekilde yakarken, onları saçımızdan alacağız. " Artık "Yaptıklarınızı durdurun, bunun şimdi yapılması gerekiyor" diyerek masanızda ortaya çıkmasını istemediğiniz bazı adamlar tarafından.

Diğer taraftan, satış, müşteri hizmetleri veya sahibi, gerekli olan işleri yapan bir bölümün bu kara kutusunun kontrolünü geri kazanmanın bir yolu olarak görebilir. Orada neler olduğunu görmüyorlar ancak sorunun özünün orada bir yere gömüldüğünden oldukça eminler. Böylece Scrum'u tanıtıyorlar, istedikleri bir ürün sahibini kuruyorlar ve aniden tüm kontrolleri ellerinde tutuyor, tüm teller ellerinde. Şimdi ne? ... Ehrr ...

Asıl sorun, genellikle dükkanın ilk başta iyi organize edilmemesi ve bunun değişmemesi. İnsanlara idare edemeyecekleri sorumluluklar verildi, ya da belki de yapabilirler ama Bay Boss sürekli yaptıklarını engelliyor ve mahvediyor, ya da (benim deneyimlerime göre) çok önemli sorumluluklar hiç kimseye tanınmamış ya da atanmamış.

Bazen zamanla biçimsel çizgiler arasında gayrı resmi bir organizasyon ortaya çıkar. Bu daha sonra resmi bir yapı eksikliğini kısmen telafi edebilir. Bazı insanlar sadece iyi olduklarını, sonunda ispatlayacak bir kartvizitleri olup olmadıklarını yapıyor. Çevik / Scrum'un künt tanıtımı bunu anında mahvedebilir. Çünkü şimdi insanların kurallara uyması bekleniyor. Eskiden yaptıklarının takdir edilmediğini hissediyorlar, üzerinde küçük hikayeler olan sarı küçük kağıtlar alıyorlar, mesaj şöyle olacak: "ne yaparsanız yapın, kimse umursamadı". Söylemeye gerek yok, özellikle bu bireyleri motive edici olmayacak. En azından emirleri beklemeye başlayacaklar ve artık inisiyatif almayacaklar.

Böylece işler kötüye gider ve sonuç Çevik'in berbat olduğu sonucuna varır.

Çevik, emmez, bakım projeleri için harikadır ve dikkatle uygulanırsa yeni gelişmeler için bile iyi olabilir, ancak yanlış insanlar bunu anlamıyorsa veya yanlış nedenlerle benimserse, en yıkıcı olabilir.


4
O zaman o çevik otomotiv endüstrisinden (yani Toyota) ortaya çıktı. Orijinalin yaptığını yapın: Toyota'nın "Toyota Yolu" metodolojisi "müşteriyi" aracı satın alan kişi olarak tanımlamaz. Bunun yerine ürün tasarımı / pazarlama departmanı. Kano gibi ürün tasarım modellerini takip etmek ürün ya da pazarlama departmanının işidir. Agile'nin görevi, ürünü uygulamak ve gerçekten inşa etmektir. Kendinizi karıştırma metodolojileri bulursanız, patronunuz iş rollerini gerçekten anlamıyor demektir. Eğer bir başlangıçsanız ve başka seçeneğiniz yoksa, bunları ayrı olarak yapın.
Slebetman

1
İyi bir soru olurdu. Biz (geliştiriciler) müşteriyi, bugünlerde sadece işlevselliğin yeterli olmadığını anlamaları için nasıl etkileyebiliriz? Hatalı olduğu kanıtlanan veya gerçek sustansı olmayan kararların bazılarını etkilemeye çalışırken her zaman zor zamanlar geçirdim.
LAIV

5
+1 Gerçek dünyada çevikliğin en iyi tanımı, çok uzun zamandır gördüm.
Paul Smith

4
İnsanlara "çevik" kelimesinin kazara seçilmediğini hatırlatmak isterim. Amaç, gelişim sırasında ortaya çıkan beklenmedik olaylara (örneğin bir barikat ya da fikrini değiştiren bir müşteri gibi) çevik bir şekilde cevap verebilmektir. Müşteriniz statik ise ve işiniz sürprizlerle gelmiyorsa, çeviklik sizin için kötü bir modeldir veya işleri biraz sarsmasına izin vermek için çevikliği yakalayabilirsiniz.
Cort Ammon

3
@Kik ​​Aynı şirketlerden bazılarında hem yaptım hem de sonuçlar çarpıcı bir şekilde farklıydı. Çevik yaklaşım zayıf bir şekilde çalıştırıldığı zaman bile, sorunun kim / ne olduğu ve çözülebildiği açıkça ortaya çıktı. Şelale aslında iyi bir fikir değildir ve asla değildir, aslında 'onu icat eden' adam neden böyle korkunç bir fikir olduğunu açıklayan bir makalede yaptı , ama sanırım insanlar her şeyi okumaktan rahatsız olamazdı.
JimmyJames,

74

Çevik açıdan çekici niteliklere sahip bir yer bile görünmüyor.

Elmaları ve portakalları karşılaştırıyorsun. Geleneksel şelale, gereksinimlerinizin olması gerekenleri gerektirdiğini söylerse, bir Fiat elde edersiniz. Gereksinimler birinci sınıf olması gerektiğini söylüyorsa, bir Ferrari alırsınız.

Aynısı Çevik'te de olur. Gereksinimleriniz mutlaka olmazsa durursa, bir Fiat elde edersiniz. Mükemmellik hikayeleri varsa, bir Ferrari olsun. Tüm bu çeviklik gerçekten uygular, ilk önce mutlaka gerekenleri yapmalısın . İki yıl boyunca süper havalı bir spoiler üretmeyin ve motorun son teslim tarihini kaçırmayın.

Çok uzun lafın kısası: İhtiyacınız olanı elde edersiniz. Bir spor araba planlıyorsanız, bir spor araba. Çevik bunu hiç değiştirmez. Çevik süreciniz bir Fiat için şartlar getirirse, çevik suçlama, sadece Fiat isteyenleri suçlayın.


5
Çok doğru, araçlar agnostik ve ahlâksızdır. Herhangi biri sizin koyduğunuzdan daha fazlasını çıkardığı kanıtlanmış bir işlemi bilen varsa , lütfen aşağıdaki yorumlarda bana bildirin.
Mindwin

21
Ve çevik ile size olabilir Fiat projeyi genişletmek ve bir Ferrari ya da bir Ferrari projesi ile olsun, hala proje başarısız olsa bile (sıfırdan farklı bir değere sahip) bir Fiat elde edebilmek.
user253751

7
Evet, tüm bunlar doğru ama aynı zamanda soruyu cevaplamıyor. Mesele, çevik uygulamaların, operasyonda zaten yer alan ticari güçlerin yazılım geliştirme sürecine girmesini sağlamasıdır. Bu, satış yöneticisinin yan vuruşuna sahip bir ürün sahibine veya ürün geliştirmeye çok fazla ilgi göstermeden şirketteki diğer güçlü kişilerin yan vuruşlarına kolayca yol açabilir. Bu yine tipik olarak OP tarafından tarif edilen sıradanlığa neden olur, bunu yapmaz.
Martin Maat

13
@MartinMaat Zayıf bir PO'nun kötü bir sonuç verdiğine dair sizinle aynı fikirdeyim, ancak şelalenin içinde çok çevik bir gereklilik dokümanı gördüm, bunun çevik bir şey olduğu konusunda aynı fikirdeyim. Kötü bir iş kötü bir iştir ... her süreçte.
nvoigt

28

Ancak, şiddetle tavsiye ettiğim tüm çevik süreçler, zorunlu olma şartlarını gerektirir. Bunlar her zaman en yüksek önceliği alır.

Olması gerektiği gibi - Kano modelinize tekrar bakın: Olması gereken şartlar yerine getirilmezse, müşteri ürünü kabul etmeyecektir. Ve sonra senin avcıların önemli değil.

Çevik açıdan çekici niteliklere sahip bir yer bile görünmüyor.

Hiçbir şey gerçeklerden daha fazla olamaz.

Çevik süreçler tipik olarak şu noktaları vurgulamaktadır:

  • Çalışan bir ürünün sık teslimatı hakkında geri bildirim alabilirsiniz.
  • Özellikleri kısa sürede tamamlanabilecek küçük parçalara ayırın.
  • Bu parçaları öncelik sırasına göre uygulayın.

Hiçbir şey "zevkli" özelliklere yüksek öncelik vermenizi önleyemez. Bu tamamen önceliklerin belirlenmesinden sorumlu olan kişilere bağlıdır.

Şimdi, bu tür insanların birçoğunun risk almamayı tercih ettiği ve bu nedenle "kadınlara" yüksek öncelikler getiremeyeceği doğrudur. Ancak çevik olmayan bir projede bu yine de böyle olacaktır.


1
“Ama çevik olmayan bir projede bu yine de geçerli olacak.” Katıldığımdan emin değilim. Öncelikle "olması gereken" gereklilikleri yerine getirmenin bir kısmı, daha az önemli sayılan şeyleri kesmeniz için yer açması veya belirli bir zamana sahip olduğunuz özellikleri serbest bırakmanız daha önemliyse onları daha sonraki bir sürüme itmenizdir. . Agile , belirtilen gereksinimlerinizi periyodik olarak yeniden değerlendirmeye daha fazla önem veriyor gibi görünüyor; bu, istediğiniz her şeyi istediğiniz kadar hızlı elde edemediğinizi gösteren, gerçeğe acımasız bir tepki vermeye yol açıyor.
jpmc26

9

Agile, ilk önce ne yapılması gerektiği hakkında hiçbir şey söylemedi , yalnızca bu kod artımlı olarak yazılmalı ve bir sonraki serbest bırakılabilir duruma kadar aylarca kullanılamaz olması planlanan yerine, mümkün olduğunca sık olarak serbest bırakılabilir bir durumda tutulmalıdır.

Hem Çevik hem de BDUF (Big Design Up Front) süreci altında çalıştım ve her iki işlemden de kesinlikle yenilikçi, çekici özellikler elde edebilirsiniz, ancak BDUF'da, şaşırtıcı bir şekilde, onlar için önceden plan yapmalısınız. Bu, inovasyonların genel olarak tasarım sürecinde belirsiz kişiler tarafından önerilmesi veya en azından desteklenmesi gerektiği anlamına gelir.

Bunun nedeni, bir sonraki sürüme kadar altı ayınız (veya her neyse) olması ve proje yöneticilerinin bu sürüme neyin gireceği konusunda strese maruz kalmasıdır; . Sıkışma dolu bir programda sıkışma dolu bir özellik listesi var ve eğer düşük rütbe ve dosya sıradan bir şeyle iki veya üç gün boyunca çalışırken yakalanırsa, müşterinin hoşuna gideceğini düşünüyorlar ve Liste, tüm programı riske atıyorlar ve ödeme yapacaklar.

Çevik bir süreçte, yazılımı serbest bırakılabilir bir durumda tutmak için çaba harcıyoruz ve proje yöneticileri daha az strese maruz kalıyorlar, çünkü özellikleri değişirse iki hafta içinde alabilirler. Dolayısıyla, bir geliştirici harika bir fikirle bir konferanstan geri dönerse ve birkaç gününü bir şeye harcıyorsa, altı aylık bir kanda yazılı olan programı tehlikeye atmazlar.

Temel olarak, ektiğinizi biçersiniz. Eğer inovasyonu özendirir ve ekiplere teslim edecek kadar özerklik verirseniz, bunu elde edersiniz. Son teslim tarihlerini karşılamak için sürekli olarak kesim köşeleri talep ediyorsanız, metodolojiniz ne olursa olsun uyması için bir yazılım alırsınız.


9

Mükemmel yazılım iki şeyden gelir:

  • Müşteriye ihtiyaç duyduğu şeyi vermek

  • Profesyonel olmak

Yazılım geliştirirken izlenmesi gereken her türlü ilke vardır. Müşteri gereksinimleriyle ilgisi olmayan kuru, okunaklı, katı, vb. Müşteri bir spor araba istedi. Müşteri, bir spor arabayı harika kılmak için ne gerektiğini anladıysa, sana ihtiyaçları olmayacaktı. Başka neyin önemli olduğunu bulmak size kalmış.

İşimizin bir kısmı, işler ters gitmediği sürece müşterinin asla deneyimlemediği standartları korumaktır.

Doğru yapıyorsanız çevik fiat sadece müşterinin gerçekten istediği şey olduğunda eğilimi gösterir. Yapmaları gereken şey bu değilken.

Şelale farklıdır, çünkü bir zamanlar yüksek kaliteli bir spor otomobil gereksinimi hakkında yanlış bir anlama yerleştikten sonra, buna bağlı kalmaya meyillidir. Çevik, yeni bilgilerle başa çıkabilir ve gerçekte ihtiyaç duydukları şeyin bir mermi bisikleti olduğu ortaya çıktığında uyum sağlayabilir.

Şelale, günümüzde pek çok mağazada halen kullanılmaktadır. Bu mağazalar başarılı çünkü ihtiyaçları yılda% 2'den az değişiyor.

İşiniz müşteriye sadece istediklerini vermek değildir. Ayrıca, sizin için hiçbir şekilde kredi almayacağınızı bildiğiniz şeylerle de ilgilenir. İşler çok yanlış gitmesine izin vermediğiniz sürece müşterinin asla getiremeyeceği şeyler. Bu şeylerin iyi seçilmesi daha iyi olurdu, ya da onlara zaman harcamak için çok fazla bok alırsınız.

Her aptal sınırsız bütçeli bir köprü kurabilir. Bir profesyonel, ancak asla düşmeyecek bir köprü kurar.

Bu nedenle, kişinin meclis olarak olması gereken şartlara odaklanmaması gerektiğine inanıyorum.

Tabii ki yapmalısın. Vaktinizi tahmin ederken hariç. Çünkü bu şartlar gereken tek şey değil.


"Slavishly takip etmeden" derken kastedilen, müşterilerin iş ihtiyaçları açısından ne istediklerini bilmeleri, ancak genellikle yazılım geliştirme hakkında yeterince bilgi sahibi olmadıkları için anlamlı olan ayrıntılı gereksinimleri bulamamalarıdır. Tipik olarak bazı ihtiyaçların bir listesini yaparlar ve müşteriyle görüşmek ve ona iyileştirmeler ve alternatifler önermek yazılım üreticisinin işinin bir parçasıdır.
Frank Puffer

@ FrankPuffer çok doğrudur, çünkü bu sık sık yinelemenin çok önemli olmasından kaynaklanmaktadır. İstediğiniz tüm toplantıları yapabilirsiniz, ancak müşterinin yazılımınızı kullanmasına izin vermek için hiçbir şey yaklaşmaz. Gerçekten ne anlama geldiklerini öğrenmeye başladığınızda o zaman.
candied_orange

4

Tamam,

Çevik'te programcı yazılımı yaratabilir, ancak sonunda ürünü yaratan yapımcıdır. (yazılım geliştiricileri kullanarak.)

Yani "çekici nitelikler" hakkında, yapımcıya kalmış.

Yapımcı "seksi tasarım" şartını yerine getirirse, bu bir zorunluluk haline getirilebilir. Geliştirici bu seçimler için endişelenmek zorunda olmamalıdır.

Ayrıca, yazılım gerçek fiziksel ürünlerden o kadar farklıdır ki, birçok Kano modelinin geçerli olmadığını düşünüyorum. Mesela neden facebook yapıyorum? Tek sebep: çünkü arkadaşlarım öyle. Bunu bir sonraki adımda ortaya koymak nasıl ........ Ayrıca, yazılımdaki en çekici özelliklerden biri, aslında yapması gerekeni yapıyor olmasıdır. (Ve çeviklerin çok yardımcı olduğu yer: P)


3

Benim deneyim yukarıdaki yorumlarla hemfikir - şey yok doğasında mükemmel yazılım gelişimini engellemektedir Çevik - ancak yazılımlara yönlendiren (arızaları) uygulanan Çevik genellikle nasıl birçok açıdan sadece "yeterince iyi olan vardır ."

  • Çevik, en kısa zamanda çalışan bir şeyin elde edilmesine vurgu yapar ; ancak bu, özellikle kullanıcı tarafından görülmeyen altyapıda varsayımları basitleştirmek ve köşeleri kesmek anlamına gelir. Sadeleştiren varsayımların düzeltilmesinin maliyeti düşükse , bu konuda doğal olarak yanlış bir şey yoktur ; bununla birlikte, sık sık bu "teknik borç", bir ürün üretime girmeden kaldırılmaz;
  • Çevik, bir sprintin sonunda, her zaman yapabildiğin kadar taşıyabileceğin bir şeye sahip olmalısın, böylece paydaşların ve proje yöneticilerinin "sahip olduklarının" zorlamak için yeterince iyi olduğuna karar verebilmeleri için üretim. Yine, bu doğal olarak yanlış bir şey, eğerTüm "teknik borcunuzu" temizlediniz (veya ne kadar olduğunuza ve nerede olduğunuza huzura kavuştunuz.) Ancak, benim tecrübeme göre, çok fazla teknik borç bir yöneticinin verdiği sözle üretime giriyor " 'geminin baskısı bittiğinde' temizleyeceğim, ki bu hızla “üretimde, şimdi neyi değiştirdiğimize çok dikkat etmeliyiz” haline geldi, ve sonunda “bana bu maruz kaldığımızı asla söylemediniz! "Bir dahaki sefere daha iyi bir iş yapmalıyız!" Ben Frankin'in “Düşük kalitenin acılığını unutulduktan kısa bir süre sonra, düşük kalitedeki acılık” dersini asla öğrenemedi;
  • Ancak, daha güvenen yöneticiler ve disiplinli geliştiricileri ile, sadece çok az uygun analiz, tasarım ve yaygın bir sorun olduğu tasarım gözden geçirme meydana öncesinde uygulama başlatıldı ve tamamlanması bekleniyor edildiği sürat başlamasından. Düşünceli bir alternatif düşünememekUI metaforları ve tasarımları büyüktür - bir proje başladıktan sonra bunu önemli ölçüde gözden geçirir; Genç takımların rakiplerinin ürünlerini dikkatlice incelememeleri veya I18N, bildirim çerçeveleri, kayıt, güvenlik ve API sürüm stratejileri (örneğin) gibi altyapı teknolojilerinin tanımlanmasına ve uygulanmasına öncelik vermemeleri, sonuçta daha yüksek hatalara sahip olacakları anlamına gelir. düşük üretkenlik ve gerekli eğitim, analiz, tasarım ve prototipleme yapmak için ilk 2-5 sprinti harcadıklarından daha fazla teknik borç tahakkuk ettirecektir. Kısacası, Çevik ekipler hackleme lisansına karşı koymalıdır;
  • Geliştiricilerini, en temel düzeyde bile planlı tasarımlarını yazmak için zaman ayırmaktan caydıran ikinci bir menajer (100'ün üzerinde geliştiriciden) aldım. Akıl yürütmesi - "İnsanların birbirleriyle konuşmasını istiyorum" - ironikti çünkü 5 farklı zaman diliminde ve 3 ülkede. Söylemeye gerek yok, hangi takımın geçe kadar çok sayıda gece ve hafta sonları çalışmak zorunda kalacağı konusunda birçok parmak izi vardı ve herkes bir diğer işlevselliği uygulamaktan sorumlu olduğunu düşündüklerinde (veya yeniden uygulama, çünkü tedarikçi ve tüketicinin tasarımları henüz elemedi.)

Her şey, proje yöneticisinin ve paydaşların yüksek kaliteli bir ürün sunmak isteyip istemediklerine bağlı olarak kaynamaktadır . Bunu yapmaya kararlılarsa, Agile bunu mümkün kılacaktır. OTOH, Agile, karar vermeyi yalnızca paydaş ve proje yöneticisinin ellerine verdiğinden, Agile bir geliştirme ekibinin bu destek olmadan mükemmel bir proje sunmasını zorlaştırıyor. Kısacası: ürün kalitesinin sorumluluğu, neredeyse yalnızca proje yöneticilerinin ayaklarına aittir.


1

TL; DR

Aslında çevik geliştirme, yazılım kalitesini artırmanıza, müşteriyi memnun tutmanıza ve değerli bir ürün sunmanıza yardımcı olur.

Birkaç akıllı proje uzmanı tarafından birçok yazılım projesinin geleneksel süreçlerde karşılaştığı sorunları ele almak için çevik bir gelişme sağlandı.

Çevik manifesto (1) tarafından tanımlanan çevik gelişimin kilit değerleri ,

  • Süreçler ve araçlar üzerinde Bireyler ve Etkileşimler
  • Kapsamlı dokümantasyon üzerinden çalışan yazılım
  • Sözleşme müzakere konusunda Müşteri İşbirliği
  • Bir planın ardından Değişime Cevap Vermek

Dolayısıyla, çevik geliştirme, yüksek kaliteli yazılım oluşturmanızı engellemez. Çevik geliştirme, yüksek kaliteli yazılımlar sunmanıza destek olur.

Ancak biz (ve müşteri) her zaman önceden olması gerekenlerin ne olduğunu önceden biliyoruz.

Bütün mesele bu. Bireylere odaklanarak, müşteri, çalışma yazılımı ve gereksinim çevik değişiklikler, müşterilerin nihai ürün teslim edilmeden önce ne istediğini belirlemenize yardımcı olur.

Bu, Scrum gibi çevik çerçevelerin, sonuçların çalışan ürünler olduğu kısa yineleme döngülerine sahip olmalarının bir nedenidir. Çalışmanızı, müşterinin beklentilerine karşı erken bir aşamada doğrulayabilir ve talep üzerine hedefleri / gereksinimleri ayarlayabilirsiniz. Çevik bir geliştirme , bir ürünün olmazsa olmaz kalitesinin farkına varmanızı sağlamanıza yardımcı olur .

O günlerde - bugün için hala doğru - geleneksel yaklaşımlarla geliştirilen pek çok yazılım projesi başarısız oldu, başarılı olmadı ya da müşterilerin memnuniyetsizliğine neden oldu çünkü olması gereken kaliteye ulaşılmadı.

Ayrıca çevik gelişim, Cazip Kaliteye ulaşmanıza yardımcı olur . Her yinelemeden sonra ürünü yansıtmak, proje başlangıcında müşteri tarafından ilgilenmeyen yeni gereksinimleri aydınlatır (çekici özellikler). Bu müşteri memnuniyeti sağlar.

Ben de Kano modelinin Ters Kalitesinden - memnuniyetsizliğe yol açan özelliklerden - bahsetmek istiyorum .

Her projede, proje başlangıcında iyi fikirler gibi görünen gereksinimler vardır. Bir süre sonra tam tersine dönerek hayal kırıklıklarına neden oluyorlar.

Geleneksel bir yazılım geliştirme sürecinde, uzun bir proje çalışmasının ardından nihai üründeki bu gereklilikleri tanıyacaksınız. Müşteri hayal kırıklıklarını önlemek ve onları değiştirmek için çok geç bir takip projesi gereklidir.

Çevik geliştirme, çalışmayan veya tatmin edici olmayan gereksinimleri erken belirlemenize ve proje sırasında bunları değiştirmenize yardımcı olur.

Dediğim gibi, çevik geliştirme, yazılım kalitesini artırmanıza, müşteriyi memnun tutmanıza ve değerli bir ürün sunmanıza yardımcı olur.


1

Bu partiye geç kaldım ama bu konuda başka bir açı daha paylaşmak istiyorum:

Ancak, olmazsa olmaz gereksinimleri karşılayacak minimum kaliteyi değil, yüksek kalitede yazılım ürünlerini oluşturmak için nasıl uygulanabilirler?

Bir yoktur geçici durumdaki kaynaklanan çevik yazılım geliştirme tekrara dayalı yaklaşımla ve dikkate müşteri görüşlerine çevik metodolojisinin iki önemli unsurlardır. Örnek: Yinelemede t çekici kalite olarak tanımlanan özellikler , bir sonraki yinelemede t + 1 olması gereken bir kalite olabilir .

Çevik yöntemler kullanmak, bir özelliğin kalite kategorisini dinamik olarak değiştirebilir. Eğer iterasyonun planlanan özelliklerini, daha sonra tekrarlanan t + n'nin bitmiş özellikleriyle karşılaştırırsanız, tam olarak bahsettiğiniz şeyi deneyimleyeceksiniz:

Deneyimi birkaç kez yaptım, başlangıçta yüksek öncelik verilen gereksinimlerin, daha sonra işe yaramazsa daha az önemli olduğu ortaya çıktı.

Bu geçici bakış açısına göre, çevik yöntemlerin, en düşük düzeyde konsantre olurken aynı zamanda yüksek kaliteli sofware ürünlerini de üretebilecekleri düşünülebilir . İteratif yaklaşım ile eşleştirilmiş müşteri geri zamanla oyunun kurallarını değiştirir.

Sonuç

Çevik yöntemlerle mükemmel yazılım nasıl geliştirilir?

Yinelemeli bir yaklaşım uygulayın ve müşteri geri bildirimlerini dinleyin . Bu unsurlardan birini ele geçirin ve daha az başarılı bir çevik yazılım geliştirme formu elde edeceksiniz.


1
   > How to develop excellent software with agile methods?
  • Bir müşteriye özel bireysel yazılım üretirken :
    • maliyetin önemli olmadığı bir müşteri bulun çünkü "keyifli" bir özellik ekstra paraya mal olur ve bunun için ödeme yapmak isteyip istemediğine karar vermek zorundadır.
  • Softwareproducts üretirken :
    • "keyifli" özellikler yeni müşterileri çekmek için iyidir ve ürün "1000" den fazla satılırsa "keyifli" bir özelliği uygulama maliyeti o kadar önemli değildir .
  • "Yeterince iyi (en ucuz) en iyi" olduğu bir ortamda, "keyifli" özellikler uygulamak için para alamayacaksınız

Bir Scrum ekibinde, hangi özelliklerin uygulanacağını seçmek Ürün Sahibi'dir. Bu nedenle, "iyi bir yeterlilik" veya "mükemmel" bir yazılım tanımlamak ona bağlıdır (ve bütçesine göre).


1

Bazı iyi puanlar yükseltiyorsun. Ancak bu sorunların çevik süreçler / metodolojilerle sınırlı olduğuna inanmıyorum.


Neyin önemli olduğu, neyin gerekli olmadığı konusunda farklı görüşler vardır. Örneğinizi kullanmak için, oto satın alan bir kişi dikkat çekmeyi temel bir özellik olarak kabul edebilir ve bu nedenle bir Fiat'ı bu şartı yerine getirmeyen şartı yerine getirmediğini düşünebilir.
Daha gerçekçi olarak, bir yazılım ürününün, gerçek son kullanıcılarının ihtiyaçlarını karşılamak için belirli bir işlevselliğe sahip olması gerekebilir ... ama ayrıca, satılmak için başka özelliklere de sahip olması gerekebilir. Çünkü satın alma işlemine izin veren kişi sıklıkla son kullanıcı değildir.
Bu nedenle, son kullanıcı (lar) için "zorunlu olmayan" bir özellik, ürünü satmak için gerekli olabilir ... ve bu nedenle ürünü oluşturan şirket için de gerekli olabilir.

Bunların hepsi, gereklilikleri ve öncelikleri uygun bir şekilde belirlemek için iyi bir ürün geliştirme ekibine sahip olmanın çok önemli olduğu gerçeğinden kaynaklanmaktadır. Ama bu sadece çevik dükkanlar için geçerli değil.

Ayrıca, karar vermeye yetkili ürün sahibine / sahiplerine sahip olmak da önemlidir. Ürün sahibinizin kararları sürekli başka biri tarafından reddedilirse, bunun bir sorun olduğunu kabul eden ilk kişi olurum, ama yine de çevik bir sorun değil.

Ürün sahibinizde / sahiplerinde istediğiniz diğer şeyler var ... duyduğum bir açıklama "CRACK" (işbirlikçi, temsilci, yetkili, kararlı ve bilgili). Bu alanlardan herhangi birinde eksik olmayan bir ürün sahibi, bir proje için sorun yaratabilir. Ancak bu kısaltmayı ilk önce bir şelale ortamında duydum, bu yüzden açıkça kötü müşterilerin / ürün sahiplerinin acıları çevik dükkanlarla sınırlı değil.


Çevikliğin yapabileceği (yardım edebilecek) bu sorunlardan bazılarını yüzeye çıkarmak.

Örneğin, XP literatürü "müşteri" nin bilgili, ekibe erişilebilir ve karar verme yetkisine sahip olma konusunda oldukça açık bir şekilde IIRC'dir. "Ürün sahibi" terimi bir miktar bilgi, taahhüt ve yetki anlamına gelir.

Teslim edilen işlevselliğin çoğunun sahip olması gereken özelliklerden ziyade kepçelerden oluştuğu bir durumda bulursanız, çalışan veya çalışmayan bir yazılımı teslim ederken bu sorunu ortaya çıkarmak (ve nedenini belirlemek çok daha kolaydır) Teslimatların aylar veya yıllar ayrı olduğu zamanlara göre 2-3 hafta.

Küçük yinelemelerde çalışıyorsanız (ve sıralamayı sık sık gözden geçiriyorsanız (önceliklendirmeyi gözden geçirme dahil)) bu, ekibe eski hatalardan ders alma fırsatı verir. “Bu şimdi gerçekten önemli gibi geliyor, ancak kullanmamıza gerek olmadığından emin olduğumuz dinamik navigasyonu hatırlıyor musunuz?” Diğerlerinin de belirttiği gibi, her şey önceden planlanmışsa bu tartışmaların olasılığı daha düşüktür.

Buna karşılık, ön tasarım metodolojisi (varsayılan olarak) ürünün ve özelliklerin anlaşılmasının statik olduğunu varsaymaktadır. Bu benim deneyimim değildi: çalışmak için somut bir şeylere sahip olmak hemen hemen her zaman iş adamlarının sorunu anlama anlayışını değiştiriyor. Dolayısıyla hızlı geri bildirime vurgu yapılır. (Geliştiricilerin anlayışı da değişiyor, ancak bu öncelikleri etkilemeyecek.)

Bazı planlamanın ertelenmesi iş gereksinimlerindeki değişikliklere cevap vermenize de olanak sağlar. “Yaptığınız web sitesini biliyor musunuz? Bağlantısız işlem yapabilen bir mobil uygulama olması için gerçekten ihtiyacımız var.” Bu özellikle sorulan bir şey değil ... ama sürecinizin iş ortamındaki değişikliklere cevap vermesini istemez miydiniz (en azından teoride)?


Çevik "temel olmayan özellikler oluşturma" demiyor. “İşletmenin hangi özellikleri (değil) inşa edeceğine karar vermesine izin ver” diyor.
... ve (aynı derecede önemli) "teknisyenlerin size istediğiniz özelliğin ne kadar süreceğini söylemesi için izin verin".


1
  1. Must-be qualitiesbelirlemek genellikle zordur. İnsanlar onları bilinçaltında tutuyor. Çevik yinelemeler ve müşteri katılımı, olması gerekenlerin çoğunu bulmanıza yardımcı olur. Çevikliğin gücü budur ve onu ihmal etmek aptalcadır .
  2. One-dimensional qualitiesBu, yerine getirilmesi gereken sözler anlamına gelir, değişmeyene kadar Tamam, şelale tarafından desteklenir. Burada çevik olmak sadece yardımcı olur, ama o kadar da güçlü değil.
  3. Attractive qualitiesgüzel özellikler. Gelecek nesilde mutlaka olması gerekenler olabilir. Fakat şimdiki nesilde onlar anlaşmada bile değiller - yoksa Tek boyutlu nitelikler olurlar. Müşteri temsilcisinin katılımını varsayan çevik yöntemler, bu nitelikleri çok iyi desteklemektedir. Çünkü çalışma sırasında kapsamı hafifçe değiştirebiliriz. Başka bir yerde bir tazminat ödemesi için bir yerden iyileştirme konusunda pazarlık yapabiliriz. Şelale içinde neredeyse imkansız. Büyük bir organizasyonel gecikme olmadan sadece özellikleri ücretsiz ekleyebildik. Daha önce bütçeye fazladan bir süre ayırarak girilmesi mümkündür.

Dolayısıyla, çevik süreçler Kano modelini destekleyebilir, bazıları bunu çok iyi yapıyor ve kesinlikle en iyi şelale projelerinden çok daha iyi.

Anlayışınızla büyük ölçüde yapmak için, sorumlu bir müşteri temsilcisi katılımcısıyla çevik süreçleri belirlemelisiniz.

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.