“Çevik” bir ekibe, yazdıkları yazılımı planlamaları için hala ihtiyaç duyduklarını nasıl açıklarsınız?


50

Bu hafta iş yerindeyken bir kez daha çevirdim . Standart çevik, TDD, paylaşılan sahiplik, bir kart parçası üzerinde birkaç kullanıcı hikayesinin ötesinde hiçbir şey planlamayan özel geliştirme metodolojisi, 3. parti entegrasyon ve teknik özelliklerine ilişkin cud'ları hiçbir zaman gerçek anlamda yapmadan çiğneme düşünmek ya da gerekli özendirmek ve tüm üretim kodlarını son birkaç aydır kimsenin başına gelen ilk teste mimari olarak bağlamak, bir sürüm döngüsünün sonuna ulaşıyoruz ve geliştirmekte olduğumuz dışsal olarak görülebilen ana özelliği çok yavaş görüyoruz. kullanın, adamcağız, labirentte karmaşıklaşıyor ve tamamen esnek değil.

Bu süreçte "çiviler" yapıldı, ancak hiçbir zaman belgelenmedi ve hiç bir zaman tek bir mimari tasarım üretilmedi (FS yoktu, yani ne cehennem, ne geliştirdiğinizi bilmiyorsanız, nasıl planlayabilir veya araştırabilirsiniz? ?) - Proje, her seferinde sadece bir kullanıcı hikayesine odaklanan ve sonuç kaçınılmazdı.

Bunu çözmek için radardan çıktım, (korkunç) şelaleye gittim, planladım, kodladım ve temel olarak pariteyi değiştirmedim ve tek başıma çalışabildiğim kadar çalıştım; her şey sabitlendikten sonra gelecek. Kod şimdi çok daha iyi ve aslında tamamen kullanışlı, esnek ve hızlı. Bazı insanlar bunu yapmama gerçekten çok kızmış gibi görünüyorlar ve çabalarımı (muhtemelen bilinçsizce) sabote etmek için kendi yollarını kullandılar, çünkü bu, çevikliğin kutsal sürecine aykırı.

Peki, bir geliştirici olarak, ekibine işlerini planlamanın "çevik olmayan" olmadığını nasıl açıklarsınız ve planlamayı çevik sürece nasıl sığdırırsınız? (IPM hakkında konuşmuyorum; bir problemle oturmaktan ve bir problemin üzerinde çalışan bir kişinin neyi bildiğini yeterince ayrıntılı olarak çözmesi gerektiğini söyleyen uçtan uca bir tasarıma değiniyorum. kullanmaları gereken mimari ve kalıplar ve yeni kodun mevcut koda entegre olması gereken yerler)


26
İlk paragraf, çevik aleyhte bir rant gibi geliyor. Gerisi hala biraz öfke gibi geliyor, sadece ekibinizin geri kalanına karşı. Başka bir şey söylemek istersin.

1
+1 insanların bunu nasıl pragmatik bir şekilde çözdükleriyle ilgileniyor, hem şelalenin hem de çevikliğin sunduğu en iyi avantajı elde etmenizi sağlıyor. Bu arada: çevik "tasarıma" eşit değil, ancak tasarım, acımasız döngülerde ilk mağdur olma eğiliminde ...
Marjan Venema

5
Bir dereceye kadar "çevik" ile boynuna kadar geçirdim. Her dönüşte çevik bir kimsenin düzgün bir kod satırı yazmasını engelliyor gibi görünüyor ve sonuçta hepsi "plan yapmıyoruz" ifadesiyle başlıyor. Çevik olmaktan nefret etmek istemiyorum, ancak görebildiğim kadarıyla insanları yazılımlarını planlamamaya teşvik ettiği sürece üretken ve en kötü ihtimalle en tehlikeli olanı.

9
@Marjan Venema - bu benim endişem. Çevikliğin hiçbir zaman "tasarım" demek istemedi "gibi" erken optimizasyon yapma "demek" verimli kod yazma "anlamına gelmediğinden eminim. Ancak, bunun kitle piyasası yorumu gibi görünüyor. Çevikliği vurgulamanın yolu harika ve gerçekten canlandırıcı bir değişiklik, ama bana öyle geliyor ki çevik dünyada yazılımın kendisinin daha sonradan düşünülmüş olduğunu düşünüyorum.

9
Çevik prensiplerin zayıf bir şekilde uygulanmasından dolayı hüsrana uğradığınız aşikârdır, ancak bu bir soru olarak ince bir şekilde gizlenmiş bir rant gibi görünür. Açık olmak gerekirse: Agile, "bir planın ardından değişime karşılık vermeye" yanıt vermeyi tercih eder, bu da " sağdaki öğelerde değer varken , soldaki öğelere daha fazla değer vermemiz " anlamına gelir . Çok az bir planın ardından değer vermek kesinlikle mümkün , ki burada durum böyle görünüyor.
Rein Henrichs

Yanıtlar:


51

TÜM projelerin biraz klasik şelaleye sahip olması gerektiğini düşünüyorum (ve burada bir uzuvda olacağım): İlk analiz ve şartname aşaması şarttır. Ne yaptığını biliyor olmalısın ve yazılı olarak yaptırmalısın. Gereklilikleri yazılı olarak almak zor ve zaman alıcıdır ve kötü şekilde yapılması kolaydır. Bu yüzden pek çok kişi bunu atlıyor - herhangi bir bahane: "Ah, çevik yapıyoruz, buna ihtiyacımız yok." Bir zamanlar, çevik olmadan önce, "ah, gerçekten çok zekiyim ve bunu nasıl çözeceğimi biliyorum, bu yüzden buna ihtiyacımız yok." Demişti. Kelimeler biraz değişti ama şarkı aslında aynı.

Elbette tüm bunlar boğadır: Ne yapacağınızı bilmek zorundasınız - ve şartname, geliştirici ve müşterinin amaçlananı nasıl iletişim kurabildiğidir.

Bir kere ne yapmanız gerektiğini öğrendikten sonra bir mimariyi taslak haline getirin. Bu "büyük resmi doğru al" kısmı. Burada sihirli bir çözüm yok, tek bir doğru yol yok ve size yardımcı olacak bir metodoloji yok. Mimariler bir çözümün SENTEZİ, kısmen ilham almış dahi ve kısmen zor kazanılmış bilgiden geliyorlar.

Bu adımların her birinde yineleme olacak: bir şeyleri yanlış veya eksik buluyorsunuz ve düzeltmeye gidin. Bu hata ayıklama. Sadece herhangi bir kod yazılmadan önce yapılır.

Bazıları bu basamakları sıkıcı ya da ihtiyaç duyulmayan olarak görüyor. Aslında, bu iki adım herhangi bir sorunu çözmede en önemlisidir - bunları yanlış anlayın ve ardından gelen her şey yanlış olacaktır. Bu basamaklar bir binanın temelleri gibidir: Onları yanlışlayın ve bir Pisa Kulesi'ne sahip olun.

WHAT'a sahip olduktan sonra (bu sizin tarzınız) ve HOW'a (mimarlık - ki bu üst düzey bir tasarımdır), sonra görevlere sahipsiniz. Genellikle onlardan çok.

İstediğiniz gibi görevleri düzenleyin, istediğiniz şekilde verin. İstediğiniz veya sizin için işe yarayan haftanın hangi metodolojisini kullanırsanız kullanın. Ve nereye gittiğinizi ve neyi başarmanız gerektiğini bilerek bu görevleri yerine getirin.

Yol boyunca yanlış izler, hatalar, özellik ve mimaride bulunan sorunlar olacaktır. Bu şu gibi şeyleri yönlendirir: "Eh, tüm bu planlama o zamanın bir zaman kaybıydı." Aynı zamanda boğa. Sadece daha sonra başa çıkmak için DAHA FAZLA fauliniz olduğu anlamına geliyordu. Yüksek seviyeli erken günlerle ilgili problemleri bulduğunuzda, FIX THEM.

(Ve burada bir yan konuda: Pahalı, zor ve hatta imkansız olan bir spesifikasyonu karşılamaya çalışmak için tekrar tekrar gördüğüm büyük bir cazibe var. Doğru cevap sormak: "Uygulamam bozuldu mu veya teknik bir sorun mu var? "Çünkü eğer bir sorun spesifikasyonları değiştirerek hızlı ve ucuz bir şekilde çözülebiliyorsa, yapmanız gereken şey budur. Bazen bu bir müşteri ile çalışır, bazen öyle olmaz. sorma.)

Sonunda - test etmelisin. TDD'yi veya istediğiniz herhangi bir şeyi kullanabilirsiniz, ancak bunun sonunda yapacağınızı söylediğiniz şeyi yaptığınızın garantisi değildir. Yardımcı olur, ancak garanti etmez. Bu yüzden son bir test yapmanız gerekiyor. Bu yüzden Doğrulama ve Doğrulama gibi şeyler hala proje yönetimi yaklaşımlarının çoğunda büyük öğelerdir - yazılımın geliştirilmesi veya buldozerler yapılması.

Özet: Tüm sıkıcı şeylere ihtiyacınız var. Agile gibi şeyleri bir dağıtım aracı olarak kullanın, ancak eski moda düşünme, belirleme ve mimari tasarımı ortadan kaldıramazsınız.

[1000 işçi yerleştirerek ve birkaç iş yapma ekipleri kurmalarını söyleyerek 25 katlı bir bina inşa etmeyi ciddiye alır mısınız? Planlar olmadan. Yapısal hesaplamalar olmadan. Binanın nasıl görünmesi gerektiğine dair bir tasarım veya vizyon olmadan. Ve sadece bunun bir otel olduğunu bilerek. Hayır - öyle düşünmedim.]


11
+1. Yapabilseydim +10. Sonunda inşa ettiğiniz şeyin ne olduğu hakkında iyi bir fikriniz yoksa - ki bu tasarımı daha sonra değiştirseniz bile - sadece bazı ön tasarım çalışmalarından gelebilir - o zaman takip ettiğiniz geliştirme paradigması "atar. Duvara sıçrayıp ne yapışacağına bak. "
Karınca

5
-1. Ayrıntılı teknik özelliklerden hoşlanmıyorum çünkü insanlar / müşteriler her zaman fikrini değiştiriyor; Bu nedenle, "gereklilikleri toplama" zamanını harcamak yerine, ne olursa olsun, müşterinize mümkün olan en kısa sürede gösterdiğiniz çalışma yazılımını oluşturmalısınız, böylece bir sonraki adım için gerçek geri bildirim alabilirsiniz . Tahminler ve spekülasyonlar yapmak yerine. "Şartname iletişim aracı" dır: Müşterilerimle konuşmayı ve yinelemeli olarak çalışmayı tercih ederim , ancak hey, sanırım kendilerine.
Martin Wickman

6
+1. +10 yapabilirsem +10. Ben bina yazılımı için enayi yok bir bina benzetmesi inşa gibi sadece çünkü. Evet yazılım fiziksel değildir, evet doğru yapılır, oldukça modüler ve ayrılabilir olabilir. Fakat onu oldukça modüler ve ayrıştırılmış yapmak çok zordur; plan ve zaman alan budur. Yazılım mühendisliğinde her zaman iki kamp olacağının farkına vardım: planlamayı boşa harcayanlar ve yapmayanlar. Ve biliyorsunuz ki ben de insanların kampları değiştirmediğini, aslında değil. Çok planlı bir ortamda çalıştım ve ...

6
Sizinle KABUL EDİYORUM, ama tarif ettiğiniz şey gerçekten çevik. Agile "büyük tasarım yok", "tasarım yok" diyor. Bu, eskiden devasa mega girişim şelale canavarı projelerine bir cevap olarak söylendi. Kodunuz için iyi bir mimari tasarlamamak ve bulmak için bahane değil. Önemli olan, kodlamaya başlamadan önce haftalar veya ayları TÜM tasarım yapmakla geçirmemek. Çünkü yanlış tasarlayacaksınız ve ne kadar fark ederseniz ve düzeltseniz o kadar iyi olur. Hızlı geri bildirim alın, tekrarlayın, geliştirin, vb.
sara

5
Kai - Agile'nin şartname yapmak, planlama yapmak, sadece dalmak için bir bahane kullandığını görüyorum. Ve bu sadece yanlış.
çabucak_

36

Hala birçok insanın TDD'nin öncelikle birim testleri yazmak anlamına geldiğini düşündüğüne şaşırıyorum. Hayır, kodu yazmadan önce ihtiyaç duyacağınız testleri yazmak anlamına gelir. Test aslında birim testi, entegrasyon testi, uçtan uca test ve elbette performans testi olabilir (muhtemelen test kodundan önce performans testi yazamazsınız, ancak hiç yazmamanız gerektiği anlamına gelmez). Testin gerekli tipi, kullanıcı hikayesi için yapılan tanımdan görülebilir olmalıdır. Kullanıcı öyküsü için kabul kriterlerinden biri, bu özelliğin 50 eşzamanlı kullanıcıyla 500ms içinde sonuç vermesi gerektiğini söylerse, bu kabul kriterlerinin karşılandığını ispatlayan performans testine kadar kullanıcı hikayesi tamamlanmış sayılmaz. Otomatik teste girdikten sonra, her gün başka özellikler ekledikçe geçip geçmediğini kontrol edebilirsiniz.

Kabul kriterleriniz doğru tanımlanmadı ve bu nedenle performansınızı test edemediğinizden daha çok ses geliyor. Yine de, onu gerçek ortama dağıttığınızda ve ağır yük altında kullandığınızda uygulamanın kötü performans göstermesi olabilir, ancak her zaman gereksinimlerin başarısızlığı olarak da kabul edilebilir (gereksinim tanımlanmamışsa geliştirici üzerinde çalışırken dikkate almazsa) Kod) veya geliştirme ekibi (tanımlanmış gereksinimlere karşı yetersiz test).

Diğer ilginç bir şey de, ekibinizdeki geliştiricilerin tek bir kullanıcı hikayesine odaklanmış olmalarıdır. Çevik iletişim ile ilgilidir, bu nedenle geliştiriciler kullanıcı hikayelerinin neye ihtiyaç duyduğunu ve uygulamanın geri kalanını nasıl etkilediğini bildirmelidir - işbirliği şarttır. Test, bir geliştirici başka bir kullanıcı hikayesi için gerekli işlevselliği bozarsa, otomatik testlerde görünür olması gerektiğini de kapsamalıdır. Hala yeterli olmadığını veya işe yaramadığını hissediyorsanız, tüm ekibin birlikte çalıştığı ve uygulamanın mimarisini reddettiği mimarlık toplantısı sunabilirsiniz. Genellikle haftada bir kez böyle bir toplantı yapmak yeterlidir.

Şelale sürecinden birçok şey iletişim ve otomatik testlerle değiştirildi. Kimse üst düzey bir dokümantasyon veya tasarım yazamayacağınızı söyleyemez! Siz ve birçok takım bunun için örneğin Wiki'yi kullanır.


7
+1 mükemmel cevap. Hikaye amaç - bu buzdağının görünen kısmı, gelecekteki bir konuşma için bir yer tutucu, yolculuğun ilk adımı; bütün yolculuk değil! Test açıklamaları birleştirilmiş gereksinimler, kullanım durumları ve kabul kriterleridir. Tasarım göz ardı edilmez, tasarım hikaye ve testlerle sınırlıdır, ancak istediğiniz kadar tasarım yapın . Tasarım atlayan ve bunun çevik bir yol olduğunu iddia eden herkes ya anlamadı (XP kitabını tekrar oku), istemiyor (cowbow kodlama yee-haw!), Ya da sadece tembel olmak . Ve Agile'ye kötü bir isim vermek.
Steven A. Lowe

16

[Ürünümüz] çok yavaş, adamcağız, labirentte karmaşıklaşıyor ve tamamen esnek değildi.

Bunun çeviklikle ilgisi yok, bu programcıların işlerini düzgün yapmadıklarının bir işareti.

Çevik bir temel fikir, ekibin süreç üzerinde tam kontrol sahibi olmasıdır. Bu, planlama, dokümantasyon, test miktarı ve refactoring ile nasıl başa çıktıkları konusunda hemfikir olmaları gerektiği anlamına gelir. Tüm bu güç harika, ama aynı zamanda sorumlulukla geliyor ve bu muhtemelen ekibinizin başarısız olduğu yer. Özgürlüklerini kabul ettiler ama sorumluluklarını ihmal ettiler.

Sonunda sadece kod kalitesini açıklamak ve arttırmak ve bu şekilde tutmak için bir yol üzerinde anlaşmaya çalışmak meselesi. Normal programlama uygulamaları gerçekten geçerlidir.

Profesyonel ipucu: bunu uygulamak için "İşlemin Tanımı" nı kullanın. Herkesin aynı fikirde olduğundan emin olun ve herkes için görünür hale getirin. Bir hikayenin tamamlanıp tamamlanmadığına karar vermek için katı bir bekçi olarak kullanın. Bu listeye işlevsel olmayan gereksinimler (performans gibi) eklemek bile mümkündür.


1
“Özgürlüklerini kabul ettiler, ancak sorumluluklarını ihmal ettiler” belki çevik duvarda bir afiş olmalı “Sorumluluklarınızı ve Özgürlüğünüzü kabul ettiniz mi?”
Andy Dent,

Harika bir cevap, DoD’yu bu şekilde bir sözleşme olarak kullandığınızda, aynı zamanda geçmişe dönük olarak merkezi hale geldiğini ekleyebilir miyim? Bu DoD, müşterilerimiz için değer katmamıza nasıl yardımcı oldu veya engelledi?
Graham Lee

11

Evet. Takım arkadaşların salak. Projeniz Agile yüzünden berbattı. Daha iyi hissetmek? Tamam, devam edelim. : P

Siz ve ekibiniz, başkent M Metodolojilerinizin isimlerine daha az odaklanırsanız ve yazdığınız yazılımın neden bu kadar yavaş ve daha fazla sorunlu olduğuna daha fazla odaklanırsanız, neyin yanlış gittiği hakkında daha etkili bir şekilde iletişim kurabileceğinizi düşünüyorum. Hiç çevik veya şelale terimlerini kullanmayın . Ofisinize açıkça duygusal olarak yüklenirler.

Çevik bazen çalışır. Takımınız için bu sefer işe yaramadı. Bazı insanlar bunu çevik yanlış yaptığınız için söyleyecektir. Sonuçta, Agile çalışıyor, yani doğru yapsaydınız işe yarayacaktı, değil mi? Her neyse.

Hiç kimsenin bir başarısızlık olmadığı konusunda hemfikir değil gibi gözüküyor, ancak bir metodolojiyi suçlarsanız arkadaş kazanmayacak, insanları etkileyemeyecek veya bir dahaki sefere daha iyisini yapamayacaksınız. Bunun muhtemelen yanlış gidenle ilgisi yoktu.

Bunun yerine, başarısızlığın en doğrudan nedenlerini saptamaya odaklanın ve bir daha olmadıklarından emin olmak için ekiple birlikte çalışın. Bu, insanların yeteneklerini gerektirecektir.

İnsanların yeteneklerinden bahsetmişken, ekibinizin, tüm işlerini yaparak ve onlardan daha iyi yaparak onları kötü görünmelerini sağladığınızı takdir etmemesine şaşırmamalısınız. Bunu “radarın altında” yaparak bazı ilişkilere zarar vermiş olabilirsiniz, şimdi ekibin etkili bir üyesi olmak için yeniden inşa etmeniz gerekecek.

Böyle bir duruma bakmanın en iyi yolunun takımın uzun vadeli toplam çıktısını bir bütün olarak ele almak olduğunu düşünüyorum. Bu sefer haftayı kurtarmış olabilirsiniz, ancak uzun vadede şirketiniz için daha iyi bir takım kurarak daha iyisini yapmış olabilirsiniz .

Bunların hepsini size söylüyorum, ama sanırım zaten çoğunu zaten biliyorsunuz ve bu duruma çok yakın değilseniz, başkalarına anlatabiliyorsunuz.


9

Tartışmalarınıza özlü bir alıntı eklemek isterseniz, Eisenhower iyi bir teklif aldı:

"Planlar hiçbir şey değildir; planlama her şeydir."

http://www.brainyquote.com/quotes/quotes/d/dwightdei149111.html

Planlarınızı değiştirmeyi beklemeniz gerektiği ve bu plana olduğu gibi çok fazla değer vermediğiniz anlamına geliyordu, ama aynı zamanda planlama süreci enerjilerinizi çok önemli bir şekilde odaklayacaktır. Onları test etmeden ve hassaslaştırmadan önce planlar yapmalısınız.


9

+1 Bu, son zamanlarda okuduğum kurumsal çevikliğin en iyi açıklamasıdır.

Çeviklikle geçinen herkes, bunun asla kastedilmemesi gerektiğine dikkat çeker, ancak bir kez herkes metriklere takılırsa, bu, tam olarak ürünün kalitesi konusunda tutkusu olmayan ve her ikisi de takıntılı olan bir ekipten elde ettiğiniz şeydir. Her şeyden önce test kapsamı veya haftalık teslim tarihlerini karşılayarak, herkesi içine çekmiş oldukları köşeye bakmaksızın, haftalık olarak yönetim seviyesine getiren tek şey budur.

Bunu bir organizasyondan daha az bir şeyle çözmemiştim. Gerçekten tutkulu insanları cezbetmek için özel bir şeyi olmayan orta sınıf bir şirketseniz, bir sonraki yönetim bazen metodolojileri değiştirmezse, bu durumu düzeltmez.

Çevik, ancak gerekli olan ilave, kredilendirilmemiş çalışmaya rağmen iyi bir ürün üretmeye özen gösterdiği ekiplerde iyi çalışıyor gibi görünüyor. Etkili bir şekilde kendi zamanlarında iyi olacak, iyileştirme için mücadele edecek (ve bazı TDD vakalarında birçok ekstra zaman tekrarlama testi yakmaya istekli olmaları için) yeterince özen göstermelidirler.

Belli ki iyi bir ürün göndermeyi önemsiyorsunuz, açık bir şekilde kodlanmış bir dizi hareketten geçmeyi ve yaptıkları karmaşayı sürekli olarak temizlemek için bir maaş çeki almayı önemsiyorlar.

Çevik olsun ya da olmasın, başka yerlerde daha az rahatsız edici bir iş arardım.

Çevik olarak tamamen yanmışsanız, hala diğer metodolojileri yapan birçok yer vardır. Örneğin, teklif veya sözleşmedeki neredeyse her şey.


1
Aslında okuduğum en kötü çevik tanım bu. Geliştiricilerin ekstra ve kredilendirilmemiş işler yapmasına gerek yoktur. Ayrıca, sadece aptallar kendi zamanlarında çalışırlar. Kodu test etmek için harcanan zaman iyi harcanan zamandır.
BЈовић

Daha fazla hemfikir olamazdı, Çevik, canavara dönüştüğünde, genellikle bürokrasi seviyelerinde olduğu için mümkün olan en kötü çeviktir. Kurumsal olmayan başka bir kasetli renk ortamında, ekip bu şeyleri ya hikaye olarak ya da hikayelere başlamadan önce yapardı. Çevik bir kurumsal ölçüt haline geldiğinde esnekliğin genellikle ilk giden şey olduğunu gösterir.
Bill

4

Bir çeşit melez kullanmaya meyilliyim. Genel plan şelale, ancak uygulamada çevik.

Tahminime göre eğer durum sizin söylediğiniz kadar kötü ise, ekibiniz gerçekten çevik kullanmıyor, sadece tembel veya disiplinsiz. Çevik planlama ile ilgili değil, sadece esnek olmakla ve de çevik olmakla ilgilidir.


Bunu ben de düşünme eğilimindeyim. Gerçek çevikliğin planlama ile ilgili olmadığından eminim , sadece bunun bir yorumu.

Sermaye - "A" Çevik ve küçük harf - "a" çevik arasında bir fark dünyası var.
Aaron

Pssst ... çevik insanlara söyleme, çünkü neredeyse bütün şelale insanlarının yaptığı gibi çalışıyor. Yine de, TÜM şelale geliştiricilerin, sonuna kadar herhangi bir kod yazmadan monolitik belgeler oluşturduklarına ve her aşamada her şeyin yanlış olduğuna inanıyorlar, çünkü uygulama yok.
Dunk

4

Bazı personel ile aynı problemleri yaşıyoruz.

Temel olarak "Yazana kadar bilmiyorum" en sevdiğim bir ifadedir. Böylece tam tersi yönde gittik, teslimat kalemlerini çıkış noktaları ile tanımlamak için müşteri ile çalıştık. Sonuncusu "şimdi X kodunu yazın".

"Eğlenceli ve ilginç bir kod yapın" ile aynı teslim edilebilir sürümde "tasarım / test / plan vb." Yazıyorsak, ilk bölüm asla olmaz ...

ANCAK eğer "ne yapacağınızı ve müşterinin imza attığını söyleyene kadar eğlenceli ve ilginç bir kod yapamazsınız"

  • ilk önce homurdanan bir kabul görüyorsun, birkaç gözyaşı ve ben boşlukları doldurmak için çok fazla çaba sarf etmek zorunda kaldım.
  • daha sonra, "işlem nasıldı" diye sorduğunuzda, kağıt üzerinde ilk versiyonunu denemenin daha iyi olacağını düşündüğünüzde şafak algısı alıyorsunuz.
  • o zaman geliştiricilerin görebileceği test durumlarına sahipsiniz ve tam olarak "ne anlama geldiğini" beklentisine işaret edebilirsiniz.
  • Daha sonra müşteriler geliştirme konusunda% 80 daha az ret oranına sahip olurlar ...
  • Ayrıca, tasarım geliştirici dökümanları dolaşırken ve tasarımlarla birbirinizle konuşurken tüm geliştiricileri izliyorsunuz ... gerçekten almaya başlıyorlar.
  • Ardından, proje planının ısırık büyüklüğünde parçalara ayrılmasını ve bir işlemin nasıl yapılmasını sağlarsınız.

Çevik kısım, müşteri daha sonra plandan değiştiğinde gelir ve 2 haftalık bir süre içinde uyum sağlayabilirsiniz.

Bizim durumumuzda “büyük tasarım önü” ortalama 5 etapta 9 aşamaya (fiili üretim sürümleri) ayrıldı. Tasarımcılar ve geliştiriciler birbirlerine ayak uyduruyorlar; halihazırda gelişim içinde “taşa yerleştirilmiş” olarak uygulanmıştır. Her trafo 1 geliştirici için 2-4 sprint değerindedir.

Daha küçük projelerde, aynı geliştiricinin ilk önce> oturumu kapat> fatura> geliştir> oturumu kapat> fatura ... döngülerinde tasarladık.

Test isimlendirme problemi

Testin birçok yüzü var, resmi olarak her biri alt bölümleri olan yaklaşık 7 test kategorisi var ... bunlardan biri "otomatik birim testleri yaz".

Geliştiricilerin "testlerin" ne anlama geldiğini anlamaları nedeniyle "ilk gelişmeyi test etmek" kötü bir isimdir, bu bağlamda testleri uygulama için arayüze karşı testin gerçek kodunu yazıyorlar. Gerçekten o kadar da değilken ... kod yazmaya geldiğinde bunu yapabilirsiniz, ancak gerçekten "kodu, yazmaya başlamadan ÖNCE" kullanım durumlarına ve kullanıcı öykülerine göre tasarımı doğrula "... geliştirme sırasında normalde ortaya çıkan sorunlardan bazıları hala çok daha ucuz olan "atılabilecek kağıt" versiyonunda.


3

Çevik'in temel unsurlarından biri, sürekli iyileştirme fikri ve tüm ekibin projenin sahibi olduğu fikridir. Dolayısıyla doğru yaklaşım, takımla ilgili sorunları gözden geçirmek ve ekibin nasıl düzelteceğine karar vermesini sağlamaktı.

Tek bir ekip üyesi kendiliğinden kaybolarak Çevik'in tüm ilkelerini atıp kendi yolunda bir şeyler yapmak, az miktarda kodun çalışmasına neden olabilir, ancak tüm projeyi olumlu bir şekilde ilerletemez.


Bana projeyi ilerletmek gibi geldi, tam olarak yaptığı şeydi . “Ekip ile inceleme” aslında bir çözüm değil, yalnızca çözümü erteleme ve sorumluluğu yaymanın bir yoludur.
Aaron

Sonuçtan zaten takım sorumludur. İhtiyaç duydukları şey, birilerinin "Berbat ediyoruz, metodolojimizi nasıl değiştiririz?" Demeleridir. Sonra düzelttiler.
Dave

2
Ne bu izlenimi olsun özellikle ekip ihtiyacı üyelerinin yerine körü körüne anlamadıkları bir süreç takip kendileri için düşünmeyi öğrenmek için içindir. Zaten bir yankı odasıysa, konuşmak hiçbir şeyi başaramaz.
Aaron

2

Onları işe almanın bir yolu , tüm süratli geri girişinizi kapsayan bir T-Harita yapmak olabilir.

T-haritası

Her takımın bir dişi vardır, her sürat bir dönemdir. Her şey birbirine bağlanıyor (ekibinizin devrildiği yer burası). Bunu bir yere sabitleyin ve çiftleri / alt grupları temsil eden mıknatısları alın. Hatta 'yarışabilirler'. Ama herkes nerede ve diğer takımların nerede olduğunu biliyor Varsa dependancy buraya koy.

Buradaki nokta, toplam işlemi iletmek, fakat aynı zamanda onu ikiye bölmek. Buraya sadece ilk sürat koşusu ve diğer dönemler boş olsa bile, bu projeyi bitirmek için mükemmel bir yol haritası olmalıdır.


1

İki problemin var: Gereksinimler ve zayıf mimaride yeterli şekil yok.

Gereksinimler

Hem genel bir amaç hem de oraya nasıl gideceğinizin ayrıntılı yol haritasına ihtiyacınız var.

Şelale dünyasında, nihai amaç işlevsel özelliklerdir ve oraya nasıl gideceğinizin yol haritası proje planıdır.

Çevik dünyada, bir yol onu epik bir kullanıcı hikayesinde yakalamaktır. Öyleyse yol haritası, destanın ayrıntılarını gösteren ayrıntılı kullanıcı hikayeleridir.

Bu hikayeden hiçbir zaman tam olarak memnun olmadım, çünkü destansı hikaye hiçbir zaman tam fikri aşmak için yeterli et yakalamıyor. Bu yüzden, kullanmaya meyilli olduğum şey, epik bir kullanıcı öyküsü ile birlikte yüksek düzeyde bir sistem gereksinimleri belgesi. Ondan sonra, yol haritası detaylı kullanıcı hikayeleridir.

Bir sistem gereksinimleri belgesine sahip olmanın güzel tarafı, daha sonra birçok kullanıcı hikayesi için kabul kriterleri çıkarılabilir olmasıdır.

Üst düzey sistem gereksinimleri belgesini, pazarlamanın ürünü teknik açıdan anlayışlı bir müşteriye satmak için kullanabileceği "bir sayfa" olarak düşünün.

Mimari

"Kesilmiş sac" ın size sunduğu şeylerden biri, tasarladığınız sisteme sınır koyar. Bu, kullanılacak mimarlık hakkında önceden karar vermenizi sağlar.

Ekibiniz daha önce böyle bir belgeye sahip olsaydı, sistemi daha sonra yeniden inşa etmenin acısını yaşamanız gerekmezdi.


Aslında, üçüncü bir problemin kötü iletişim. İletişim, iki yönlü bir caddedir (veya birden fazla kişi arasında çok yönlüdür). Bununla birlikte, bu sadece bir insanın başarısız olması ve (bazen) insanüstü çabaları düzeltmek için çaba göstermesidir.

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.