Tanımladığınız şey - en azından benim tecrübeme göre - "Çevik" olmaya çalışan ekiplerin oldukça yaygın bir ortaya çıkması. Bu aslında Çevik'in bir parçası mı yoksa ortak bir yanlış uygulaması mı, çevik tezahür / ilkelere ya da onun doğal bir sonucuna karşı olup olmadığını tartışmaya açıktır. Sadece ampirik bir bakış açısıyla ve sadece kendi küçük örneklem deneyimimden (ve konuştuğum kişilerden) yola çıkarak, eğer bir takım çevikse, bu kalıba girme şansının ortalamadan daha yüksek olduğu görülüyor. Sadece bunu bırakalım ve somut örneğinize odaklanalım.
Tanımladığınız şeyin iki ayrı yönü vardır :
- Ortak anlayış / vizyonun eksik olması ve bu nedenle etkin olmamak
- Başarı / ilerleme ve toplam maliyet nasıl ölçülür?
Yanlış yolda ilerlemek veya dairelerde koşmak
Tecrübelerime göre, bunun gerçekleşmesinin ana nedeni, hızlı bir şekilde kod üretme girişiminde, ekiplerin aktif olarak zaten bildikleri veya kolayca öğrenebilecekleri kullanım durumlarını veya gereksinimlerini bir kenara itmeleridir . Bunu böyle düşünün: 10-20 yıl önce, insanlar devasa özellikler yazmaya ve her şeyi önceden düşünmeye çalıştı ve çoğu zaman başarısız oldu. Ya çok uzun sürdüler ya da bir şeyi gözden kaçırdılar. Geçmişin öğrendiklerinden biri, yazılım geliştirmede bilemeyeceğiniz şeyler olduğu ve her şeyin çok değiştiği, dolayısıyla hızlı bir şekilde yineleme ve hızlıca mantıklı bir çıktı üretme düşüncesidir. Bu çok iyi bir ilkedir. Ama bugün, diğer uç noktadayız: "Bunu bir sonraki süvarinin parçası olduğu için umursamıyorum" veya "O böceği dosyalamıyorum, tekrar ortaya çıktığında başa çıkıyorum".
- Bulabileceğiniz tüm üst düzey kullanım durumlarını , gereksinimleri, bağımlılıkları ve kısıtlamaları toplayın . Bunu bir wiki'ye koyun böylece tüm paydaşlar ve dev'ler onları görebilir. Yeni bir şey çıktığında onlara ekleyin. Ortaklarınız ve kullanıcılarınızla konuşun. Bunu, nihai ürüne katkıda bulunmayan veya bir sorunu çözen, ancak üç yenisine neden olan geçici çözümler / kesitler olan şeylerin uygulanmasını önlemek için geliştirirken kontrol listesi olarak kullanın .
- Üst düzey bir konsept formüle edin . Arayüzler veya sınıflar tasarlamaktan bahsetmiyorum, bunun yerine problem alanını kabaca çiziyorum. Son çözümde ana unsurlar, mekanizma ve etkileşimler nelerdir? Sizin durumunuzda, jquery-geçici çözümünü kullanırken bir ara adım olarak kullanıldığında ve yalnızca ek çalışmaya neden olduğu zaman açıkça anlaşılmalıdır.
- Topladığınız listeyi kullanarak konseptinizi doğrulayın . Herhangi bir belirgin problem var mı? Mantıklı geliyor? Uzun zamandır teknoloji borcuna neden olmadan aynı kullanıcı değerini elde etmenin daha etkili yolları var mı?
Fazla abartma. Sadece bir şeye ihtiyacın var, takımdaki herkes (dev olmayanlar da dahil), MVP'nize en iyi yolun ne olduğu konusunda ortak bir anlayışa sahip. Herkes göze çarpan bir gözetim olmadığı ve gerçekte işe yarayabileceği konusunda hemfikir olmalıdır. Bu, genel olarak, çıkmazların aşağı inmesini önlemeye veya aynı şeyi birden çok kez yinelemeye yardımcı olur. Çevik, beklenmedik durumlarla daha iyi başa çıkmanıza yardımcı olabilir, bilinenleri görmezden gelmek tartışılmaz.
Düşük maliyetli yanlışlığın farkında olun : Bir mimari veya veri tabanı türüyle başlarsanız, çoğu insan proje ortasında değiştirmekte tereddüt eder. Bu yüzden, bazı şeyleri uygulamaya başlamadan önce "eğitimli en iyi tahminde bulunmak" için biraz zaman harcamak iyi bir fikirdir. Devs, hızlı bir şekilde kod yazmak isteme eğilimindedir. Ancak çoğu zaman birkaç sahtekarlık, canlı prototip, ekran görüntüsü, tel kafes vb. Olması kod yazmadan daha hızlı yinelemeye izin verir. Sadece yazılı her kod satırının ve hatta birim testlerinin genel konseptinizi tekrar değiştirmeyi zorlaştırdığının farkında olun.
Başarı Ölçümü
Tamamen ayrı bir özellik, ilerlemeyi nasıl ölçtüğünüzdür. Diyelim ki projenizin amacı etrafta yatan şeyleri kullanarak 1 metre yüksekliğinde bir kule inşa etmektir. Bir kart evi inşa etmek, örneğin pazara çıkış zamanı istikrardan daha önemliyse, tamamen geçerli bir çözüm olabilir. Amacınız süren bir şey inşa etmek ise, Lego'yu kullanmak daha iyi olurdu. Mesele şudur: Ne hack olarak kabul edilir ve ne zarif bir çözüm, tamamen projenin başarısının ölçülmesine bağlıdır .
"Yükleme" örneğiniz oldukça iyi. Geçmişte herkesin (satışlar, PO, kullanıcılar dahil) can sıkıcı olduğu konusunda hemfikir olduğu böyle şeyler vardı. Ancak ürünün başarısı üzerinde hiçbir etkisi olmadı ve uzun vadeli borçlanmalara neden olmadı. Bu yüzden düşürdük, çünkü dev kaynaklarla yapacak daha değerli şeyler vardı.
Buradaki tavsiyem:
- Her şeyi, küçük böcekleri bile, bilet sisteminizde bilet olarak saklayın . Proje kapsamında neyin olup olmadığına dair aktif bir karar verin. Kilometre taşları oluşturun veya aksi halde birikiminizi filtreleyin, böylece her zaman hala yapılması gereken her şeyin "eksiksiz" bir listesine sahip olursunuz.
- Projenin başarılı sayılabileceği kesin bir önem sırasına ve kesin kesinliğe sahip olun. Nihai ürünün gerçekte hangi seviyede istikrar / kod kalitesi / dokümantasyonu ihtiyacı var? Her gün çalışmayı en baştan seçerek mümkün olan en iyi şekilde geçirmeye çalışın. Bir bilet üzerinde çalışırken, yeni biletler sunmadan tamamen çözmeye çalışın (düşük öncelik nedeniyle işleri ertelemek mantıklı değilse). Her söz sizi yanlara veya geriye doğru değil, son hedefinize doğru ilerletmelidir. Ancak tekrar vurgulamak için: bazen daha sonra ek iş üreten bir kesmek yine de proje için net bir pozitif olabilir!
- Kullanıcı değerini bulmak için PO'yu / kullanıcılarını kullan, ama aynı zamanda cihazlarının maliyetini hesapla . Dev-dev olmayanlar tipik olarak gerçek uzun vadeli maliyetin (sadece uygulama maliyeti değil) ne olduğunu yargılayamazlar, o yüzden onlara yardım et. Kaynayan kurbağa sorununun farkında olun: Çok az sayıda küçük, alakasız sorun zaman içinde bir takımı beklemeye götürebilir. Takımınızın ne kadar verimli çalışabileceğini ölçmeye çalışın.
- Genel hedef / maliyetlere göz atın. Sprint'ten sprint'e düşünmek yerine , "bir ekip olarak projenin sonuna kadar ihtiyaç duyduğumuz her şeyi yapabilir miyiz" düşüncesini bir zihniyette tutun . Sprintler, işleri yıkmanın ve kontrol noktalarına sahip olmanın bir yoludur.
- Erken bir şey göstermek istemek yerine, rotanızı , kullanıcıya verilebilecek asgari uygulanabilir bir ürüne giden en hızlı yolda çizin . Yine de, genel stratejiniz aradaki doğrulanabilir sonuçlara izin vermelidir.
Bu yüzden, birisi nihai uygulama hedefinize uymayan bir şey yaptığında, ideal olarak yapılan hikayeyi göz önünde bulundurmayın. Hikayeyi kapatmanın yararı varsa (örneğin, müşterilerden geri bildirim almak için), kısa zamanda cevap vermek için derhal yeni bir hikaye / hata açın. Kısayolları almanın maliyetleri düşürmediğini, sadece gizlediğini veya geciktirdiğini şeffaf hale getirin!
Buradaki hüner, projenin toplam maliyeti ile tartışmaktır: örneğin eğer bir PO bir son tarih vermek için kısayollar almaya zorlarsa, projeyi değerlendirmek için daha sonra yapılması gereken iş miktarını ölçün!
Ayrıca kritere dayalı optimizasyondan sakının : ekibiniz bir sprint incelemesinde gösterebilecekleri hikaye sayısıyla ölçülürse, iyi bir "puan" elde etmenin en iyi yolu, her hikayeyi on küçük parçaya bölmektir. Yazılan birim test sayısı ile ölçülürse, pek çok gereksiz testler yazma eğiliminde olacaktır. Hikayeleri saymayın, ihtiyaç duyulan kullanıcı işlevselliğinin ne kadarının çalıştığını, proje kapsamındaki teknik borcun maliyetinin ne kadar büyük olduğunu ölçün.
özet
Kaynatmak için: Hızlı ve minimal olmak iyi bir yaklaşımdır. T o sorun "hızlı" yorumlama ve "minimal" içindedir. Kişi her zaman uzun vadeli maliyeti göz önünde bulundurmalıdır (bunun alakasız olduğu bir projeniz yoksa). Sadece 1 gün süren, ancak teslimat tarihinden 1 ay sonra teknik borç üreten bir kısayol kullanmak şirketinize 1 hafta süren bir çözümden daha pahalıya mal olur. Derhal yazmaya başlayın testleri hızlı görünüyor, ancak kavramınız hatalıysa ve yanlış bir yaklaşıma neden oluyorsa.
Ve sizin durumunuzda "uzun süreli" nin ne anlama geldiğini aklınızda bulundurun: Büyük kod yazmaya çalışarak büsten birden fazla şirket biliyorum ve bu nedenle çok geç sevk edildi. İyi bir mimari veya temiz kod - şirket açısından - ancak bunu başarmanın maliyeti, sahip olmamanın maliyetinden azsa değerlidir.
Umarım yardımcı olur!