Çevik olmak ne demektir?


17

Herkesin çevik bir şekilde yapacağımızı söylediği bir projemiz var, ama çevikliğin ne olduğunu açıkça anladığımızdan şüpheliyim.

Önceki projelerde planlama toplantıları yaptık, sonra ürün geri kaydını tanımladık ve işi 2 ila 3 haftalık sprintlerde geliştiricilere tahsis ettik. Her sabah scrum toplantıları (ki her seferinde 1/2 saat gibi görünüyordu) vardı ve her geliştirici bundan sonra var. Sprint sonuna kadar hiç kimse herhangi bir test yazmamış ve tamamlanmamış işler bir sonraki sprint'e eklenmiştir.

Geliştiriciler birbirleriyle neredeyse hiç konuşmadılar ve geliştirme ile ilgili bir TDD yoktu. Aslında çoğu geliştirici başlangıçta bir spesifikasyona sahipti ve sadece sprint için ayarlanan 2 veya 3 hafta boyunca onunla anlaştı. Müşteri / paydaş ile neredeyse hiç iletişim yoktu.

KG genellikle birkaç ay sonra dahil oldu ve o zamana kadar, yapmamız gereken iş miktarını daha da arttıran eksik gereksinimler bulduk. Açıkçası geri bildirim döngüsü yoktu.

Benim sorum şu, nerede yanlış yaptık ve ekibin aynı hataları yapmasını nasıl önleyebilirim.


4
Kopyası gibi görünüyor programmers.stackexchange.com/questions/15928/... O sizin gibi sesi gerçekten sürecini uygulamak için gerçek yönetimini yapmak ve yoksun ne bilmiyordum gelmez
Sylvanaar

1
Evet, sana% 100 katılıyorum. Yöneticim çevik bir kitap okumak ve sadece (çok kötü olmasına rağmen) onunla var. TDD'yi projenin sunucu tarafında kullandım, ancak diğerleri onu öğrenmek ya da faydasını görmek istemedi. Sonsuza kadar süren bir çerçevemiz vardı (müşteri tarafında) ve geliştirici sadece (müdahale olmadan) onunla başa çıkması gerektiğini savunmaya devam etti.
JD01

3
Başlık yineleniyor gibi görünse de, bu sorunun kendi başına faydalı olduğunu düşünüyorum, çünkü birçok takım çevik olanın "genel" açıklamalarını okuyor (ve hatta eğitim dersleri alıyor ve danışmanları işe alıyor) ve sonra JD01'lerle tamamen aynı sorunlarla karşılaşıyor yine de takım. Bu nedenle, soruyu bu özel ekibin bağlamına koymak için, diğer genel yayın sorularının yanıtlamayacağı belirli sorunlara ve çözümlere ışık tutabilir.
DXM

Yanıtlar:


27

Tanımladığınız şey tanım gereği Agile değil (Agile Manifesto) , günlük statü toplantılarıyla Şelale. Çevik, değişime kolayca adapte olmak anlamına gelir, eğer ürün sahibi ve dolayısıyla müşterilerle etkileşimli bir geri besleme döngüsü yoksa, o zaman hangi değişiklik oluyor?

Çevik, ürün sahibi / müşterileri ile sürekli iletişim yoluyla hızlı arızalarla ilgilidir. Daha erken başarısız olmak daha iyidir, daha az iş yapılır ve daha az "kaybolur". Ve şu argümana takılı kalmazsınız, "doğru yapmak için zamanımız yok, çünkü yanlış yapmak için çok fazla zaman harcadık, başarısızlığa yol açsa bile aynı yola devam etmemiz gerekiyor ".

Yönetiminiz "SCRUM, ama ..." yapıyor gibi görünüyor ama burada "ama" anlamadıkları veya kabul etmedikleri tüm SCRUM şeylerini atıyorlar ve her zamanki gibi gelişigüzel şelale yolunu yapıyorlar, ama yeni parlak buzzword isimleri ile.

Hüngür günlük ayağa edilir DEĞİL teslim hakkında durumunu yinelenen işi sizin diğer ekip üyeleri ne yaptığını biliyor ve birbirlerine out yardımcı olabilir ve o kadar yönetime, bu geliştirici etkileşimi zorlamaktır. Kişi başına 45 saniyeden uzun sürerse yanlış yapıyorsunuz demektir. Takım için şeffaflık ile ilgilidir, eğer bir kişi aynı statüyü tek bir günlük işte olması gereken bir şey üzerinde birkaç gün veriyorsa, takım kişi problemini daha sonra çözebilir.

Birbirinin kodunu yazıldığı gibi test etmiyorsanız, kodu da doğru şekilde yapmazsınız. Test edilmelidir gömülü süreç değil sonra bir düşünce içine. KG, planlama oturumlarına dahil edilmeli ve testlerin ne kadar süreceği hakkında tahminlerde bulunmalıdır.

Sprint taahhütlerini yerine getirmiyor ve işleri devrediyorsanız, doğru şekilde yapmıyorsunuz demektir. Sprintler, çok fazla iş taahhüt ediyorsanız taahhütler ile ilgilidir , bunu yapmayı bırakın, teslimatları doğru bir şekilde taahhüt edemezseniz herhangi bir öngörülebilirlik veya tekrarlanabilirlik sunmanın bir yolu yoktur.


1
Cevabınız için teşekkür ederim Jarrod. TDD çevik olmaktan ayrı mı olmalı? Geliştiricilerin bu şekilde düşünmesini sağlamak zordu. Sonunda bahsettiğim gibi sonunda bazı testler yaptılar (hatırlarlarsa) ve bunun TDD olduğunu söylediler. Söylediğin her şeye katılıyorum. Geri bildirim döngüsü hemen hemen hiç yoktu, çünkü yöneticim aylar ve aylar süren sağa "çerçeve" ye müdahale ettiğini düşünüyordu. O zamana kadar, müşteri gereksinimlerini karşılamayan bir işlevsellik uygulamak zorunda kaldık.
JD01

3
TDD kırmızı bir ringa balığıdır, kişisel olarak bir din olarak kabul etmiyorum, müşterilerin ihtiyaçlarını karşılamayan kod testleri ne kadar iyidir. Ve test gömülü olmalı ve test edilmeyen hiçbir şey yayınlanmamalı ve gösterilmemelidir, çünkü mantra olarak TDD oldukça işe yaramaz. Eğer işe yaramazsa, demo yapmazsınız. Demo yapmazsanız ürün sahibi / müşteri kabul edemez.

2
Çok fazla TDD yapmaya başladım, ancak artık kabul testleri olarak müşterilerin ihtiyaçlarına daha uygun olan BDD'ye geçtim. TDD'nin tasarımlar yaratmaya yardımcı olduğunu düşünmeme rağmen, test sağlamanın yanı sıra başka türlü göremezdim.
JD01

1
TDD'nin temel nedeni, teknik borcun birikme oranını azaltarak sürekli yeniden düzenlemeye izin vermektir. Yeniden düzenlemenin çok pahalı olacağı için değiştirmek istediğiniz bir kod varsa, proje erken sona erecektir.
kevin cline

Birçok insanın TDD'yi vaaz ettiğini duydum, pratikte hiç görmedim. Şahsen beynim bu şekilde çalışmıyor. Ne yazdığım hakkında iyi bir genel fikre sahip olma eğilimindeyim, ancak yazarken bir şeyleri yeniden dengeliyor ve hareket ettiriyorum. Testleri önce yazmak benim için mümkün değil. Genellikle kod yazmanın bir parçası olarak birim testleri yazıyorum, ama önceden değil, kod yazarken yazılıyorlar.
DaveG

9

Jarrod iyi bir cevap verdi (+1) ve bunu biraz uzatmak istiyorum.

Çevik sadece ürün sahibi (müşteri) ve ekip arasındaki hızlı arızalar ve geri bildirimlerden ibaret değildir; ilgili tüm paydaşlar arasında hızlı geri bildirim ile ilgilidir. Gerçekten çevik olmak (ve bu doğrudan manifestodan ) sürecin sadece geliştiricilere daha iyi ürün sunmalarına yardımcı olmak için var olduğunu kabul etmektir. İşlemin üstündeki kişiler, ekip mevcut işleminizi tanımaz onaylamaz, onu değiştirir ve çalışır hale getirirsiniz.

"Scrum ama ..." da bir sorun, ama bu madalyonun iki yüzü var. Manifestoya bakarsanız, bunun ekiple ilgili olduğunu ve araçların / süreçlerin sizin için çalışmasını sağladığını göreceksiniz. İki takım aynı değildir ve bu nedenle her biri biraz farklı çalışır ve sorun olmaz. Kesinlikle, tüm Scrum metodolojisini alıp mektuba takip etmeye çalışın ve takımınız için işe yarayıp yaramadığını görün.

Başka bir alternatif de, takıma başka bir süreci zorlamak ve Scrum'ın size söylediklerinizi takip etmesini sağlamak , çevik yaklaşımı denemek : Ekiple iletişim kurun ve birlikte her biri için sorunlu alanları ve çözümleri tespit edip edemeyeceğinizi görün. Ardından, sorunların giderilmesi için çalışma biçiminizde yavaş yavaş değişiklikler yapın.

Biraz zaman alabilir, ama ...

  1. Öncelikle ekiplerinizin ürün teslim etme yeteneği üzerinde en büyük etkiye sahip olacak en büyük sorunları çözeceksiniz.
  2. Acil sorunları tespit ederek ve çözüm bulmaya katılarak ekip üyeleriniz, belirli uygulamaların neden önemli olduğunu anlayacak ve bunları yapmaları söylendiğinden bunları yapmayacaklardır.

Scrum ve bir tasarım deseni arasında bir benzetme yaparsak, önerdiğim şekilde çalışmak, kodu olabildiğince basit tuttuğunuz ve yalnızca gerektiğinde bir tasarım deseninde birleştiğiniz bir desene kodlamaya benzer. Sadece bir tasarım deseni seçip onunla yuvarlanmanın aksine (yani Scrum'ı ve tüm süreçlerini bir set olarak körü körüne seçmek), bu da bazen kodu başka türlü olabileceğinden daha karmaşık ve zorlaştırır.

Anlaşmanın anahtarı, çevikliğin bir şeyler yapmak için yeni bir süreç bulmakla ilgili olmadığıdır; sürekli değişim ve mevcut süreçlere / uygulamalara sürekli ayarlama ile ilgilidir.


1
vekil: özenle mi ilgileniyorsun? Scrum'ı körü körüne benimsemediğimi mi söyledim, yoksa başka bir şey miydi?
DXM

2
evet aptalca. Ayrıntılı bilgi için + 1'leyeceğim.
Michael Durrant

1
+1 için " Anlaşmanın anahtarı, çevikliğin bir şeyler yapmak için yeni bir süreç bulmakla ilgili olmadığı; sürekli değişim ve mevcut süreçlere / uygulamalara sürekli uyum sağlamakla ilgili olmasıdır. "
David 'kel zencefil'

-2

eğer ekip (ve yönetimi) gerçekten "çevik olmak" istiyorsa, Agile Manifesto ve prensiplerini bir ekip olarak okuyarak ve tartışarak başlamalıdırlar . Ardından, oluşturulan çevik yöntemlerden birini seçin ( örneğin Scrum ), biraz eğitim alın ve bunu takip ederek başlayın. Değiştirmeden önce bir süre daha yakından takip etmenizi tavsiye ederim, ama bu sadece benim.

Ayrıca, seçilen belirli çevik proje metodolojisini desteklemek için kullanılan Mühendislik Uygulamalarına derinlemesine bakmalıdırlar .


2
İndirdim çünkü bunun asıl soruyu cevapladığını düşünmüyorum.
Bryan Oakley

1
sanırım yeterince adil. OP'nin ilk öncülüne değiniyordum: "Herkesin çevik bir şekilde yapacağımızı söyleyen bir projemiz var, ama çevikliğin ne olduğunu açıkça anladığımızdan şüpheliyim." Birçok insan, Agile Felsefesinin veya onu destekleyen Metodolojilerin gerçekte ne olduğunu anlamadan, "çevik" veya "çevik" olduklarını söyler.
StevenV

3
Belirli bir metodolojiyi körü körüne takip etmeye tamamen katılmıyorum. Olmak "gerçekten" sizin şirket ve ekibi uyuyor sürece Çevik, araçlar, herhangi bir belirli eğilim veya metodolojiye kendinizi kilitlenmesini engellemek için. Bir metodolojiyi başlangıç ​​noktası olarak kullanmak daha iyidir ve daha sonra biraz eğitim ve daha da iyi bir deneyiminiz olduğunda, kendi özel ihtiyaçlarınıza uyacak şekilde ayarlayın. Daha da önemlisi, bir sonraki proje ve müşteri biraz farklı bir şeye ihtiyaç duyuyorsa, metodolojiyi süite göre ayarlayın. BU gerçekten Çevik değil.
S.Robins

1
cevabımı tekrar ziyaret ederek, yukarıdaki S.Robins'e katılıyorum ve cevabımı bunu yansıtacak şekilde değiştirdim.
StevenV
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.