Daha yeni Scrum'la işe başladım ve bir şey eksik görünüyor. Scrum'da yeniyim


23

Kod, klasik ASP / ASP.NET kombinasyonunun eksiksiz bir karmaşasıdır. Bu aldatmaca, büyük karışıklığı düzeltmemize ya da ona eklemeler yapmamıza bağlı. Bunu tekrar yazmak için çok meşgulüz, bu yüzden merak ediyorum ..

Scrum'da, geliştiricilerin yeterli olduğunu söyleme gücüne sahip olabileceği ve büyük yeniden yazmaya başlaması için zaman vermelerini talep eden kısım nerede? Eski hikayeleri 'Hikayeler' ile yapıştırmanın sonsuz bir döngüsünde gibiyiz.

Bu yüzden, yeniden yazmak için zorlama arzusu olmayan teknik olmayan insanlar tarafından işler yürütülür, çünkü kod tabanının ne kadar kötüye gittiğini anlamazlar ..

Peki bu büyük yeniden yazma değişikliğinin gerçekleşmesinden kim sorumludur? Geliştiriciler? Scrum Ustası?

Geçerli bir strateji sadece zaman bulmak ve onlar .. içindedir güncel karmaşa için suçlu çoğunlukla çünkü kendimizi dahil Üstlerime olmadan bunu yapmak olduğu <-burada ne teknik insanlara anlatmaya teknik olmayan insanlar hakkında insert rant ->.


20
Sham Çevik yeniden çirkin kafasını kaldırıyor ... Birçok şirket "çevik" olduklarını söylüyorlar ve aslında ne de yapmadıklarını "scrum" kullanıyorlar.
Oded

4
Scrum yapmıyorsunuz

20
Bunun büyük bir posterini basmayı ve onu teknik olmayan kişilerin açıkça görebileceği bir duvara yerleştirmeyi düşünün : Half-Arsed Agile Software Development için Manifesto … bir girişimci şirket ve sağdaki maddeleri
bırakmamıza


8
"<rant burada-ne yapacağını teknoloji insanlara anlatmaya olmayan teknoloji insanlar hakkında -takın>" , yönetim% 100 oranında teknoloji insanların söylüyorum gerektiğini ne onlar yönetim ve sorumludur yüzden, yapılacak yani, ne En iyi yapmak. Ne% 100 olmalıdır değil yapıyor olması onları anlatıyor nasıl teknoloji insanlar üzerinde karar vermelidir, bunu yapmak için nasıl için teknik olarak ulaşmak neyi yapmaları istendi. Başka bir şey bitti !

Yanıtlar:


7

Bunun insanlar için neden bu kadar zor olduğundan emin değilim. İş vakası tam burada:

We seem in an endless loop of just patching old code with 'Stories'.

Geliştirici zamanı paradır. Bir sürü para. Bir yıl önce UI'lerini yenilemeyi planlayan bir şirketten ayrıldım ve scrum'u kabul etmenin tekerleklerini döndürmeyi bırakmalarına yardımcı olacağını umdum. Ne oldu? Aynı ol aynı. Yazdıkları kodun yarısı modası geçmiş bir karışıklık olması nedeniyle her yinelemede anlamsız hale gelmesine rağmen, yeni özellikleri cüret etmeye devam ettiler ve “teknik borç” un bir iş vakası yoktu. Ayrıldığımdan beri ön taraflarında hiç bir şey değişmedi ve tamamen yenilemek amacıyla getirildim. İki ay boyunca orada bulundum aslında bir CSS ya da JavaScript yalamak değildim. 1990'ların sonlarından beri sadece HTML ve bazı eski Java şablonlama sistemleri ile uğraşıyordum.

Cevabım? Elinizden geleni yapın, ancak diğer geliştiriciler vazgeçti ve daha pratik son tarihler koymak yerine sprint hedeflerine ulaşmak için geç çalışıyorsa ve teknik borcun aslında engelleyici bir konu olduğu konusunda ısrar ediyorlarsa, en kötüsünü kabul edin ve yeni bir iş aramaya başlayın şimdi. Geliştiricileriniz kaygılarını iletemez veya endişelerini iletemezler veya işlerini de kaçırırlar!

Bu sorunları gözardı etmek Her zaman uzun vadede daha pahalıya mal olur. Ve biraz daha değil, çok daha fazlası. Sadece gelişim zamanının söz konusu olduğu bir göğüs yarası değil, aynı zamanda kaçınılmaz olarak yetenek seviyenizi düşürecek ve daha iyi bilen ve başka seçeneklere sahip olan firmanız veba gibi şirketinizden kaçınacaktır. Mevcut patronum bir geliştirici ve şirketin sahibi. Diğer önceliklere odaklanmak yerine yeniden yazmayacağımız şeyler var, ancak bir şey tutarlı bir zamanaşımı nedeniyle gerçekten bir refaktöre ihtiyaç duyduğunda, uygun bir refaktör alır. Ve sonuçlar açık. Yeni öğeleri değiştirmek ve eklemek birden çok faktörle daha kolay ve daha hızlı hale gelir. Bir zamanlar saatlerce süren şey, uygun mimariyle dakikalar alabilir. İş duymaktan hoşlanmıyor, ama bunun için bir şeyleri beklemeye almaya değer.

Scrum, geliştiricilerin çok fazla uğraşmadığı ortamlarda bir başarısızlıktır, IMO, çünkü işletme türlerinin bakımları ve güncellemeleri gözardı etmek istememeleri çok kolay, çünkü "başarılı girişimler" listelerine koyabilecekleri mermi noktaları lehine değerlendirme zamanı geliyor. Bu konuları görmezden gelmek için sürekli olarak kıçından ısırsalar bile, uzun vadeli lehte terfi ve terfi potansiyeli her zaman lehine olacaktır.

Scrum ayrıca kar amaçlı bir endüstridir ve daha sonra bazılarıdır. Şirketler scrum eğitimi için çok para ödüyorlar. Evlat edinmek isteyen insanlar, pazarlandıkları kime ve gerçekten kendi kültürlerinde ne kadar gerçekçi olacaklarına dikkat etmelidir.

Her şeye rağmen, gelişme hakkında gerçekten umursuyorsanız, berbat bir kod temeli, kulaklarında balmumu ve dikensiz geliştiricilerle idare etmek, mutsuzluğun bir reçetesidir ve beceri setinizi yararlı bir şekilde geliştirmek için çok az şey yapacak bir ortamdır. Sorunu çözme çabalarınızın gerçekten işe yarayıp yaramadığını gerçekten keşfetmeden önce GTFO'ya harekete geçmek için tereddüt etmeyin .


Yeniden yapılanma ile ilgili olarak, insanların yeniden yapılanmanın tüm gelişmelerin sabit bir parçası olduğunu 'içselleştirememesi' garip buluyorum, problemin o kadar kötü olduğu durumlarda yapabileceğiniz çok fazla şey yoktur.
nicodemus13

1
Veya birim testiniz yok. :) Birim testinin temel faydalarından biri, güvenle refactor yapmanıza olanak sağlamasıdır. İyi uygulamadaki en büyük sorun her şeyle aynıdır - disiplini gerektirir ve genellikle insanlar tembel olmayı tercih eder.
nicodemus13

2
Bu ya da onlar, aşırı yanlış kodlama kalabalığından, yanlış ellerde kötü davranışları mümkün kılan bir araca kolayca dönüştürülebilen başka bir hediye. Otomatik testler kilit noktalarda kullanışlıdır, ancak ses mimarisini ve bir test yerine bir arayüze yazmayı tercih ederim.
Erik Reppen

1
Bunun her şey için aynı olduğunu söyleyebilirim, şahsen arayüzü tanımlamaya yardımcı olacak testleri yazdım.
nicodemus13

1
Sonra ilk analizde kolayca yakalanamayacak küçük istisnalar olduğu için geri getirilecek tüm çamurların acıları geliyor.
JB King,

33

Eğer şüphelendiğim Scrum'u gerçekten yapacak olursanız, Ürün Sahibi, yeniden yazma hakkında karar vermekten sorumlu olacaktır. Çoğu zaman bir yeniden yazma iyi bir fikir değildir, btw, çünkü yeni bir işlevsellik üretmez, sadece yeni hatalar ortaya çıkarır.

http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html

"Yeniden yazma iyi bir fikir değil" ifadesini genişletmek için:

Kademeli bir iyileşmeyi denemek neredeyse her zaman daha iyidir. Jarrod Robertson'ın da bir yorumunda yazdığı gibi, iyileştirilmesi gereken bir modül bulup o modül için uzman olması ve bir sonraki sprint için o belirli modülü geliştirmek için bir hikaye yazması gibi. Bu modülün neden çalışması gerektiğini ürün sahibine açıklayın.


8
Eğer iddia ettiğiniz kadar tecrübe ve bilgeliğiniz varsa, adım atın ve bu arızalı modülü anlayan adam olun, üzerinde uzman olun ve düzeltin ve sonra yeniden yazmak için bir iş davası hazırlayın, çünkü o zaman bu modülde uzman olacak .

3
Bazı mesajların temizlenmesi gerekiyor. Joel'in makalelerini alıntılamak ve yeniden yazmanın nadiren tamamen şüpheli olacak herhangi bir istatistik olmadan göz ardı ettiğini iddia etmek (çünkü başarılı yeniden yazma konusunda kim övünüyor?) Bunu değiştirmez.
Erik,

3
@ErikReppen Yani oturma odanız dağınık olduğunda evi yıkıp yenisini mi inşa edersiniz?
EricSchaefer

4
Yorumlarını okursanız, oturma odası hakkında konuşmuyor. Bir odanın nerede başlayacağını ve diğerinin nerede biteceğini söylemek zor olabilir. Ve bütün ev yanıyor.
Erik,

5
Whoa, kovboy. "Yeniden yazma iyi bir fikir değil" hakkında bir battaniye ifadesi yapmadan önce, yeni teknolojilere geçmenin ve zamana adapte olmanın işinizin BT'nin hayatta kalması için şart olduğunu doğrulamalıyız. Daha yeni (umarım daha iyi) teknolojiler ve verdikleri avantajları benimsememeniz durumunda, rakipleriniz kullanacaktır. Bu genel olarak teknoloji için geçerlidir. Model-T mükemmel bir araçtu, ancak rekabet ve yeni teknolojinin benimsenmesi sayesinde, otomobiller birçok kez bugün kullandığımız daha iyi araçlara yeniden yazılmıştır.
blesh

18

Ben gerçekten kör olacağım ...

  • Bu işteki geliştiricilerin sorumlusu siz misiniz?
  • Proje lideri siz misiniz?
  • Geliştiriciler projede ne kadar "risk" barındırıyor?
  • Bir yeniden yazma için işinizin gerekçesi nedir?
  • Tamamen işe yaramaz ve kurtarılamaz kılan kod tabanı ile ilgili nedir?

Bir işe yeni başladığınızı söylediniz ve henüz orada durumun ustası gibi göründünüz. Belki de sorunuzun amacını yanlış anladım, ancak bir takım problemler gördüğünüz bir işe girdiğiniz izlenimini edindim ve kodun kırıldığı en kolay sonuca atladınız ve ileriye dönük tek yol Bir yeniden yazma, ama gerçekten bunu işvereninize yapmanın maliyetini düşündünüz mü?

Var olan herhangi bir kod temeliyle - içinde bulunduğu durum ne kadar zayıf olursa olsun - mal sahibi genellikle kodun temsil ettiği ürün (ler) e büyük miktarda yatırım yapacak. Kod tabanına ilişkin hem doğrudan hem de dolaylı maliyetler vardır ve yeniden yazma, kod varlıklarınızı değer kaybetme riskiyle karşı karşıya kaldığınızda ve böylece önceki durumunuzun tümünden daha düşük getiri elde ettiğiniz için, bir yazılım geliştiricisi olarak yapmak istediğiniz en son şeydir. çabalar.

Pencerenin işletim sistemini örnek olarak alın. Oluşturulan her yeni sürümde, önceki sürümden ileri sürülen büyük bir kod bölümü vardı. Bazen, tüm kütüphaneler ve API'ler birçok OS neslinde ileri sürüklenir. Niye ya? Geliştiriciler bu öğelerin çalıştığını, güvenlik ve bellek sorunlarının önlenmesi için test edildiğini, yamalandığını ve sabitlendiklerini ve bu duruma girmeleri için çok fazla paraya sahip olduklarını bildiklerinden. Kimse para kazanırken çalışma kodunu atmak istemez, bakım maliyetleri nispeten yüksek olsa bile, sıfırdan başlama maliyeti her zaman daha yüksek olur ve Microsoft'un örneğinde olduğu gibi bankada milyarlarca dolar bulunur. isterlerse baştan başlamalarına izin ver, ama yapmazlar Çünkü yatırımlarından elde ettikleri getirileri en üst düzeye çıkarmak istiyorlar. İşvereniniz Microsoft'tan farklı değildir, bir projeye milyarlarca nakit para yatırmak dışında.

Kod bir karışıklık ve şirketin çeşitli alanları arasında iletişim ve sınır sorunları var gibi görünüyor. Siz veya meslektaşlarınız bu konuda ne yapabilir?

Seçeneklerden biri takım olduğu gibi devam etmek ve gelecekte bir mucize olmasını ummaktır. Muhtemelen iyi bir fikir değil ve sadece hayal kırıklığınızı ve stresinizi artıracak gibi görünüyor.

Daha iyi bir seçenek basitçe yorulmak ve işlerinizi yapmaktır, ancak bunun bir parçası olarak en kırılgan görünen kod alanlarını desteklemek için testler ekleme fırsatlarını araştırın, daha kararlı hale gelinceye kadar bunları yeniden düzenleyin. Her şeyi bir kenara atmak yerine, şirketin yatırımını geliştirmek için zorlayıcı bir tartışma yaparak daha kolay bir zamana sahip olacaksınız.

Daha iyi bir seçenek ekip olarak organize olmak ve takımın kod tabanını geliştirmek için zaman planlaması konusunda daha fazla esneklik sağlamak için iyi bir dava açabilecek kadar yeterli kıdemle birini yakalamanızı sağlamaktır. Bir şirketin ne kadar meşgul olduğu ya da programın ne kadar sert olduğu umurumda değil, bir ya da iki kez bir iyileşme sıkmak için kullanılabilecek faaliyetlerde ara sıra "boşluklar" vardır. Ancak, diğer görevleri tamamlarken iyileştirmeler yapılabilirse daha da iyidir. Ben olsaydım, bir yöneticiye gider ve yazılım geliştiricilerin okudukları kanonik kitapların bazılarındaki kavramları tanıtırdım. Kodu temizleMuhtemelen takımınızın en çok ihtiyaç duyduğu şey. Kodun nasıl geliştirileceğine dair birkaç tohum ekin ve ne demek istediğinizi birkaç örnekle verin. İyi bir yönetici, özellikle Teknik Borç kavramını tanımlayabiliyorsanız, koda artan iyileştirmeler eklemenin değerini görecektir . Ekip liderinize veya yöneticinize, kodu iyileştirmek için iyi bir iş davası oluşturması için yardım edin; bu konuda daha iyi bir motivasyonları olacaktır.

"Kod düzensiz" demek de yeterli değil. Meslektaşlarınızı her zaman temiz kodlama uygulaması için teşvik etmelisiniz ve ilerledikçe biraz toparlanmayı teşvik etmek için temiz kodlama tekniğini kullanmalısınız. Her yeni işimde her defasında yazdırdığım ve ofis duvarımdan asdığım küçük bir posterim var. "Her zaman kodu, bulduğundan biraz daha güzel bırakmak için gayret göster" diyor. Hemen yanında "Lilyumların yaldızlı olmasına gerek yok" yazan bir tane daha ekliyorum. İkisi de bana her zaman bulduğum şeyi geliştirmeye çalışmam gerektiğini hatırlatmaya hizmet ediyor, ancak bir problemi diğeriyle bulmaktan kaçınıyorlar. Büyük yeniden yazmalar genellikle en kötü "altın kaplama" türlerindendir, çünkü sıklıkla yanlış nedenlerle yapılırlar. Tamamen yeni bir ürün sürümünün bir noktada haklı olabileceğinden emin olun,


Hayır. Yetkili değilim. Profesyonel olarak 12 yıl ve 7 yıl .NET kodlayan bir geliştiriciyim. Birçok sözleşmede bulundum ve bir süre sonra hızlı bir şekilde kodun kalitesi hakkında bir fikir edinebilirsiniz. Ne kadar 'Bahis'? Ne demek istediğini anlamadım. Şimdi son derece kırılgan olan eski CLASSIC ASP'yi sabitlemeye devam etmeye devam edebiliriz ve bu değişiklikler iyi bir modern mimarinin bir parçası olsaydı 10 kat daha uzun sürebilir. İşin gerekçesi, sitenin şu anda yüksek ciro nedeniyle kimsenin anlayamadığı bir modül nedeniyle üretime
düştüğü

Bu kod tabanının ne kadar kötü olduğunu anladığını sanmıyorum. Bunun üzerine, bu roket bilimi değildir. Bu CRUD 101'dir. Bu, bir kullanıcının doldurmasına izin verir, onaylar ve ardından verilerden bazı raporlar ve PDF'ler oluşturur. Bu temelde öyle .. Ama 10 yıldan fazla bir süredir kod çok sayıda parçaya bölünmüş durumda. Geçtiğimiz 12 yılda yaklaşık 20 projenin parçası oldum ve bu, üretimde kullanılan en kötü kod koleksiyonu olmalı. Hepinize gösterebilmeyi isterdim
serseri

Yeni başlayanlar için yaptığım şey, takımda bulunan ve kodlama tutkusu olan ve sonunda bu hakkı almanın bir parçası olmakla ilgilenen insanları bulmak. Bu insanları bulmak kolay değil çünkü ... brucefwebster.com/2008/04/11/…
punkouter

16
@punkouter: Burada yapılan noktayı anladığını sanmıyorum; Kod temeli "kötü" olmak, yeniden yazmak için yapılan bir iş değildir. Kodlama tutkusunu almak ve işleri doğru yapmak istemek, yeniden yazmak için bir iş değildir. Pahalı üretim hataları ve kesintileri ve önemsiz fakat önemli yeni özelliklerin uygulanması aylar alıyor - THOSE, yeniden yazma için bir iş vakası sunuyor.
Michael Borgwardt

1
@punkouter "Ölü Deniz" fenomeninin bir tanımına bağlantınız da özellikle uygun. Yıpratma yoluyla bilgisini kaybetmek, yapabileceklerini geri almak için büyük bir değere sahip olmak iş için hiçbir değeri yoktur. Potansiyel olarak pahalı ve gereksiz bir yeniden yazmaktan kaçınmak için zamanınızın yatırılması, bilgi ve uzmanlık kaybetmekten daha büyük bir iş değerine sahiptir. Daha iyi işe alım uygulamalarını teşvik etmek ve problemi çözme ve sistemi iyileştirme zorluğuna yükselmek, biraz övgüler kazanmak ve işvereniniz için değerli bir varlık haline gelmek için bir fırsattır.
S.Robins

13

İşte Scrum Geliştirme Ekibi'nin resmi Scrum Kılavuzundan resmi tanımı . Seni doğrudan ilgilendiren kısımlara vurgu yapıyorum:

Geliştirme Ekibi, her Sprint'in sonunda potansiyel olarak serbest bırakılabilir bir “Bitti” ürünü Arttırma teslimi sağlama işini yapan profesyonellerden oluşur. Sadece Geliştirme Ekibi üyeleri Artışı yaratır. Geliştirme Takımları, kendi çalışmalarını düzenlemek ve yönetmek için organizasyon tarafından yapılandırılır ve yetkilendirilir . Ortaya çıkan sinerji, Geliştirme Takımının genel verimliliğini ve etkinliğini optimize eder. Geliştirme Takımları aşağıdaki özelliklere sahiptir:

  • Kendi kendini organize ediyorlar. Hiç kimse (Scrum Master bile değil) Geliştirme Ekibine Ürün Bekletme Listesini potansiyel olarak serbest bırakılabilir işlevselliğin artışlarına nasıl dönüştürebileceğini söylemez;

  • Geliştirme Ekipleri, bir ürün Artışı oluşturmak için gerekli bir ekip olarak tüm becerilerle birlikte çapraz işlevlidir;

  • Scrum, kişi tarafından gerçekleştirilen çalışmadan bağımsız olarak, Geliştirici dışındaki Geliştirme Ekibi üyeleri için hiçbir başlık tanımaz; bu kuralın istisnası yoktur;

  • Bireysel Gelişim Ekibi üyeleri özel becerilere ve odaklanma alanlarına sahip olabilir, ancak hesap verebilirlik bir bütün olarak Gelişim Ekibine aittir; ve,

  • Geliştirme Ekipleri, test etme veya iş analizi gibi belirli alanlara ayrılmış alt ekipler içermez.

Bu nedenle, Geliştirme Ekibi kendi karmaşasından sorumludur ve ekibin dışından kimseye sormak zorunda kalmadan kendi kendine hitap etmelidir.

Gelecekteki tahmininizin her birine bir teknik borç sabitleme süresi ekleyin ve sunduğunuz yazılımın kalitesinin birinci sınıf olduğundan emin olun.

Eğer gerçekten tam bir yeniden yazma yapmanız gerekiyorsa, sorunu Scrum Restrospective'de ele almalısınız. Ürün Sahibi sonunda projeyi iptal edebilir ve yenisini başlatabilir. Ürün Sahibi ayrıca bir sprint iptal edebilecek tek kişidir.


8
Ekip kendi karışıklıklarından sorumludur, ancak yeni özelliklere karşı teknik borcun önceliğini seçemezler. Buna karar veren ürün sahibi. Sadece, PO biriktirme listesinin önceliğine karar verdiğinde, ekip bunu nasıl vereceğine karar verebilir. "X'i ilk defa değiştirmeden X özelliğini sunamıyoruz" diyebilirler ancak "hayır, üzgünüm, sıfırdan yeniden yazana kadar yeni bir özellik ekleyemeyiz" diyemezler.
Bryan Oakley

6
@BryanOakley: Sıfırdan yeniden yazma önerdiğim şey değil. Geliştirme ekibinin ilgili alanlarda çalışmasından dolayı teknik borcu aşamalı olarak azaltmanızı öneriyorum. Ayrıca buna göre tahmin etmelerini öneririm.

1
Bu çok güzel ama peki ya biz yeniden yazmamız için gereken tüm araçlara sahip olmamız için yeni sunuculara, yeni veritabanlarına, yeni yazılımlara ihtiyacımız olursa? Ve tek “Hikayeler” mevcut problemleri çözmek ve yeniden yazmaya izin vermek kavramıyla ilgili olmadığında yeniden yazma nasıl başlar?
punkouter

1
@punkouter: Eğer yeniden yazmak zorundaysanız, sorunu scrum retrospektifinde ele alınız. Ardından, Ürün Sahibi mevcut projeyi iptal etme ve yeni bir proje başlatma sorumluluğunu üstlenir.

5
Yeniden yazma kararının 'doğru' olduğunu varsaymayın, çünkü sadece devlere hitap ediyor. Bazen teknik borcu artıracak olsa da, şimdi özellikleri sunmanın iyi bir ticari nedeni olabilir.
DJClayworth

8

Gibi Eğer bu tarif, ben Scrum ile ilgisi veya ürün geliştirme ekibi bir sorun olmaktan şey görmüyorum söylemek zorunda anda .

Bu normal

Tanımladığınız şey bir kod tabanının normal entropisidir. Sizin durumunuzda, takım muhtemelen idealden daha uzakta başladı, ancak yine de her kod üssü sonunda Büyük Çamur Topu oldu .

Tamamen mükemmel bir yeşil alan senaryosunda, yapabileceğiniz tek şey mutlak entropiden daha uzağa başlamak ve daha yavaş ilerlemek.

Diğerleriyle aynı fikirdeyim, kod temelindeki karışıklık geliştiricilerden kaynaklanıyor. SCRUM'un benimsenmesini yıllarca kabul ettiğinden eminim.

Bu yeniden yazmak için bir teknik ya da geliştirici kararı değil, bir iş kararıdır.

Ürün sahiplerinin neden yeniden yazmak istemediklerini bilmezsiniz. Bir geliştirici olarak bunun gerekli olduğunu düşünüyorsunuz, ancak bunun için gerçekten herhangi bir iş vakası var mı?

Gerçek bir iş vakası varsa , sadece el sallayarak değil; "Kod yeşil alan başlatmak istediğim eski bir karışıklıktır, çünkü istediğim bu" , sonra yönetim bu yatırımın geri dönüşünü göz önünde bulundurarak yeniden yazma masrafını azaltıyor.

Yeniden yazmak için sağlam bir iş davası vermediniz , sadece herkesin bu karışıklığa neden olduğu konusundaki görüşünüz hakkında bir öfke aldınız ve bununla ilgilenmek istemiyorsunuz.

Prova - Profit, işletme kararlarını temiz bir kod tabanına ihtiyaç duymayan bir miktar OKB'ye değil, çalışan yazılımı atmaya zorlar

Eğer gerçekten gösterirsen kanıt değil, sadece teori ama sert kanıt harcama olduğunu Xbir yeşil alan yeniden yazmış üzerindeki dolar olacak MARKA garantili X * N iş için dolar Y(zaman çerçevesi Nyüksek ve Ykısa), sen yönetimden bazı çekiş alabilirsiniz . Bu, sunabileceğiniz ve kanıtlayabileceğiniz olası bir durum değildir.

Aksi takdirde, onunla başa çıkmanız gerekir, bu gerçek. Bu kesin kusursuz yeniden yazma olmadan kesinlikle ileriye dönük bir yol bulunmadığına dair kesin iddiaların aksine, şikayet ettiğiniz 5 + yıldan daha fazla bir süre sonra şikayetçi olduğunuz kod üssünün hala çalışmaya devam edeceği ve bir süre sonra işlevsellik ve değer sağlayan bir yerde çalışacağına para koyacağım Şirketi terk ettin.


1
Bu, geliştiricilerin bazı sürüm kontrol sistemlerini dahili olarak kullanmalarının sorumluluğu olmadığı anlamına gelmez, ne olursa olsun kendilerine ve çıkarlarına bakma konusunda geliştiricilerin sorumluluğu olduğunu söyleyebilirim. Hasır erkekte, bu 200 dev, yapmaları gerekeni yapmadı, yönetim, kafalarına silah koymadı ve versiyon kontrol sistemini kurmalarını yasakladı.

3
Dağınık Kod tabanları hiçbir zaman doğrudan bir yönetim sonucu değildir, çünkü yönetim hiçbir zaman doğrudan kod yazmaktan sorumlu değildir. Bu kadar basit. Manangement, geliştiriciler için ideal bir çalışma ortamından daha azına sahip olmaktan ve bunları geliştirmekten sorumludur, ancak sürüm kontrolü eksikliği gibi sorunların üstesinden gelme sorumluluğu her zaman gerçek işi yapanlara düşer.
Peter Lange

1
Dış kaynaklı devs bir yönetim problemidir. İçerideki insanlar daha iyi biliyordu. Yönetim, aslında 20 yetkin kişiyle büyük işler yapmış olsalar bile, 200 dev kiralayarak buttloads para biriktiriyormuş gibi davranmaktan hoşlanıyordu. Gördüğüm pek çok Scrum uygulaması gibi, benimsemiş olan strateji, beceriksizliğin ürünü ve aslında şirket çalışanlarının geliştirdiği hiçbir şeyin kontrolünde olmadığı bir şeydi.
Erik,

2
@Erik, yöneticilerin kötü bir kod tabanının (veya kendi bölümlerinde yapılan diğer herhangi bir kötü kararın) sorumluluğunu üstlenmesi gerekmediğini ve yöneticilerin, tanımladığınız senaryo gibi geliştiricinin çalıştığı ortamı sağlamaktan doğrudan sorumlu olmadığını söylemediğini söyleyerek. Ancak, kod tabanından doğrudan sorumlu olabilecek tek kişi, kodu kendisi yazan kişidir.
Peter Lange

3
Ayrıca, dev'lerinizi iş hedeflerine mahrem etmenin aptalca olmadığını da eklemek isterim. İnsanların neden bu tür şeyleri, aslında ürünlerinin davranışlarını belirleyen insanlardan gizlemeye niyeti olduğunu anlamadım. Bir şirketin uzun vadeli hedeflerini bilmek aslında bir uygulamayı nasıl tasarladığınızı bildirebilir. Ayrıca, devs, iyi olanlar en azından problemleri çözerler. Sürekli olarak sorunları çözerler. Bazılarımız onları başımızda önceden görüyor ve çözüyoruz ya da en azından doğru kapıları kodumuzda açık bırakıyoruz.
Erik,

7

Genelde insanlar "büyük yeniden yazma" için zorlandıklarında şüphelenirim. Kesinlikle mantıklı olduğu bazı durumlar vardır, ancak çoğu zaman, eski kodun değeri vardır (zaten yapım aşamasındadır ve yaratıcılığına ilham veren amaçlar için kullanılmaktadır). Büyük bir yeniden yazma gerçekleştirmek, çoğu durumda çevikliğin tersidir. Uygulamanın yeni sürümünü mevcut uygulamanın yerine geçebileceği bir noktaya getirmek ne kadar sürer.

Tercih ettiğim yaklaşım Martin Fowler'ın boğucu asma olarak adlandırdığı şey . Yeni yaklaşımı kullanarak yeni işlevsellik (mevcut işlevsellik değişiklikleri de dahil olmak üzere) uygulayın, ancak mevcut uygulamayı yeni işlevsellik üzerine yetişebilecek bir kafes olarak kullanın. Bu, size her iki dünyanın da en iyisini verir, büyük yeniden yazma işleminin başlaması için her şeyi durdurmanız gerekmez, ancak güncellenmiş çerçevelerden yararlanan yeni kodlar yazmanın avantajını yaşarsınız. Kesinlikle temizliğe başlamaktan daha zor bir yaklaşım ve o kadar da seksi olmayabilir, ancak iş için oradaki her şeyi terk etmekten daha değerli, çünkü modası geçmiş.


Mevcut taban bir karmaşa için yeterliyse bu zor olabilir. Aynı lanet site için sıkı sıkıya bağlı olan tamamen farklı yazarların birçok eski asp.net sisteminden bahsediyor. Web formları tek başına bir canavar ve ben karışımı olduğunu eminim.
Erik,

Asla en kolay yol olacağını söylemedim ... ama paydaşlara daha lezzetli. Ayrıca, bir kez geçtikten sonra, umarım bugünün en son ve en büyüğü yarının modası geçtiğinde, bunu ortadan kaldırmak daha kolay olacaktır.
Michael Brown

Katılıyorum. Ancak, Ive'nin dediği gibi (ve herkesin bulduğu kesin değil). Şimdi ne var ki, yaklaşık 9 ayrı web uygulaması yarısı Klasik ASP ve diğer yarısı ASP.NEt'in farklı biçimleridir. Hepsi veri erişimini vb. İşlemek için tamamen farklı yollar kullanıyorlar. Yani konuşulanları yapmanın tek yolu UI'yi yeni kod gibi görünmek için eski kodun bir parçası olarak kullanmaktır .. yani evet belki .. ama sonra veritabanı .. Bir tablonun 400 alanı var!
punkouter,

Merak ediyorum. Bu masa neyi temsil ediyor? İ ++ 'ı gördüğümden beri duyduğum en kötü şey bu; Islem (i) bozuk bir JSP etiketinden dökülen bazı kodlarda bir düzine kez tekrarlandı.
Erik,

5

Neredeyim ve nasıl çalışırız? Yapmamız gereken şey: Yeni bir hikaye yazın ve onu nasıl öncelik sırasına koyacağına karar verecek olan ürün sahibine verin. Bir örnek şöyle olabilir: "Ürün X'in bir Geliştiricisi olarak, gelecekteki geliştirmelerin daha verimli olması için bu alandaki kodu tekrar yazmak istiyorum" Kabul kriterleri daha sonra şu satırlarda olmalıdır: Yeniden yazma / yeniden düzenleme x Böylece bu şekilde daha iyi olur.

Nerede olduğunuzu bilmiyorum ama burada sıfırdan yeniden başlamak istiyorsak, ürün sahibiyle birlikte oturmak, nedenini ikna etmek ve daha sonra var olanı yeniden oluşturmak için bir yığın öykü yazmak gerekebilir. işlevsellik.

Kötü ve / veya eski kodlarla uğraşmak ve uğraşmak için yaptığımız diğer şeyler, kullanıcı hikayelerini çıkarırken elden geçirme görevlerini içermekti.


Yani devler 'hikayeler' yazıp gönderebiliyor mu? Sorun yeniden yazma nedenlerini açıklamak için çok teknik bir şey olduğunu açıklıyor ... Söyleyebileceğim tek şey .. 'Şu anki kodu yönetmek zor ve zor' '
punkouter

6
punkouter: Yeniden yazmak isteme nedenleri tamamen teknik ise (yani işletme parasına mal olmuyorsa), yeniden yazma için yeterli bir nedeniniz YOKTUR.
Michael Borgwardt

@ MichaelBorgwardt: Herhangi bir teknik nedenin bir şeyi yeniden yazmak için asla yeterli olmadığını mı söylüyorsunuz? Seni doğru anlarsam, temelde kırılmış bir yaklaşım. Sürekli sinirlerime giren bir şey, 'iş' in 'BT'nin veya herhangi bir departmanın yaptığı her şeyi belirlediği normal usta / köle yaklaşımıdır. Bu sadece bir dereceye kadar geçerlidir. BT kendi içindedir ve şirket tarafından kararlaştırılmayan kendi gereksinimlerine sahiptir - bu genellikle eksik olan ve tasarlanmayan, amaca uygun olmayan yazılımlara yol açan bir şeydir.
nicodemus13

1
@ user12355 Gördüğüm gibi, Michaels, para kaybetmiyorsa, para kazanmayacağını, o zaman hiç bir durumda olmadığını gösteriyor. Eğer para kaybetmiyorlarsa, tekrar yazma onlara para kazandırır. Kurtarılamayan para. Bir geliştirici, "bu kodun berbat olması" durumunu ortaya koyabilir, ancak işverenlerine finansal bir fayda sağlayamadıkça, kendi başlarına yapmadıkça, yeniden yazma konusunda hiçbir zaman yeşil ışığa ulaşamayacaklardır.
Rig

1
@ user12355: Bir kullanıcı hikayesi için teknik nedenler kesinlikle yeterli. Bu hikayeyi listenin başına yükseltip bir sprint içine koymak için mutlaka yeterli değiller.
Adam V

4

Büyük yeniden yazmalara karar vermek bir iş kararıdır. İş kararlarını, işlerin iş bölümünden sorumlu kişilere bakış açınıza göre satış yaparak etkilemeyi deneyebilirsiniz.

Ancak; Kod kalitesinde bir yinelemeden diğerine değişiklik, bir geliştirici kararıdır. Kod kalitesinin düşmesine izin verirseniz, şimdi ürün sahibinin beklentilerini karşılamak için teknik borç ekliyorsunuzdur. Yapabileceğiniz şey, yazdığınız kodun sorumluluğunu üstlenmeye başlamak ve bunun yerine başka bir yere değil kod tabanını iyileştirdiğinden emin olmaktır. Şimdi bu, teknik borcun miktarını sürekli olarak düşürdüğünüzden ve ürün sahibinizin kesinlikle dissapointed olacağı için hız kaybedeceğiniz anlamına gelir. Lütfen istekli olduğunuzda, kod kalitesinin düşmesine izin verdiğinizi ve şimdi bu sorunu düzeltmek için adımlar attığınızı açıklamaya çalışabilirsiniz.

Şimdi, atmanın çok korkutucu bir adım olduğunun farkındayım ve önemli bir süreden önce X özelliğini çıkarabilmek için sadece bir sprint daha geciktirmek cazip gelebilir. Ne yazık ki, ne kadar beklersen o kadar zorlaşacak.

Bu arada, bu kesinlikle bir Scrum meselesi değil, ne de Scrum'a özgü bir çözüm öneriyorum. Bu, kodun sahibi olan geliştiricilerle ilgilidir.


1
Doğru ve net bir şekilde kodlayamayan veya modern mimariyi anlayamayan devs'lerin 10 yıllık sürekli ciro ve bir defalık geçmişine sahip olduğunuzda o zaman .. şimdi sahip olduğum şeye sahipsin İşe yeni geldim ve bu kadar düşük kalitede bir kod görmek için kullanmıyorum. Yeniden yazmak istiyorum sadece bencilce yeni iyi kod yazmaktan zevk alma arzum için değil .. herkesin iyiliği için Durumu benim gibi anlamıyorlar.
punkouter

1
Sadece zaten söylenenleri yineleyebilirim; Resmen, şimdi büyük yeniden yazma zamanı olduğuna karar veremezsin. Sanırım, paydaşlarınıza kod tabanınızı aşamalı olarak biraz daha az acı verici bir duruma dönüştürmek için ne kadar çaba gösterdiğini gösterebilir ve tam bir yeniden yazma için harcadığı çaba ile karşılaştırabilirsiniz.
Buhb

3

Geliştiriciler, dünyayı kod tabanının mevcut durumu hakkında uyarmaktan sorumludur. Bu, günlük bir scrum, retrospektif veya sadece gayri resmi olarak gerçekleşebilir. Belli gözükebilir ancak ne kadar karışıklık olduğunu ve bunun yüzünden ne kadar zaman harcadığınızı açıkça belirtmezseniz, kimse farketmeyecektir. Scrum Ustası tipik olarak bilgileri PO'ya ve projeden sorumlu kişilere iletmek ve bir şeyler yapılması gerektiğine ikna etmekten ve daha sonra ekip tarafından bir çözümün uygulanmasını kolaylaştırmaktan sorumlu olacaktır.

Bir yan not olarak, bir büyük patlama yeniden yazma IMO mutlaka bu tür bir sorunun doğru cevap değil. Bununla birlikte, geliştiriciler mevcut kod tabanı ile beslenir, daha temiz bir mimariye doğru ölçülebilir küçük adımlar atmak genellikle daha iyi bir fikirdir; Sonsuz, kaynak tekelci bir makeover içinde kaybolmaya karşı paralel olarak hikayeler.


Bahsettiğim gibi .. Hepsi bir arada bir araya getirilen 6 Klasik ASP sitesi + 4 .net 1.1 sitesinin bir koleksiyonu ile ileri giden bir yol yok. Hepsi farklı insanlar tarafından farklı şekillerde kodlandı.
punkouter

Kod üssünün, yıllarca Jurrasic Park’tan Dr. Ian Malcom’un ifadesini kullanmak üzere ilerleyeceğinden eminim “Ben sadece yönetimin bir yolunu buluyorum” diyorum .

Gelecek yıllarda olabilir, ancak birbirine sıkı sıkı bir şekilde bağlı eski .net alanlarının çeşitli lezzetleri bu yıllarda çok fazla hareket etme olasılığı yoktur.
Erik,

Elbette, ancak tüm bu .net siteleri çalışmaya devam ederse ve işlevleri de şirket için doğrudan veya dolaylı olarak gelir elde etmeye devam ederse, ileriye dönük momentum neden bu kadar önemlidir? Gelir, kod tabanının kalitesinden doğrudan etkilendiğinde, yöneticilerin, tıpkı geliştiricilerin yaptığı gibi ödeyebilecekleri ipotekleri olduğu için, yeniden tasarlama konusunda zaman kaybetmeyeceğine inanabilirsiniz.
Peter Lange

Kesintisiz ileri momentum genellikle benim deneyimimde ilk etapta problemin köküdür. Acı, geri dönüş beklentileri azalarak başlarken, mimarlıktaki sorunlara hala sağır bir kulak verir ve Scrum'ın sorunu daha da fazla alevlendirmeden her iki haftada bir sihirli yeni özellikler geliştireceğini düşünüyor. Karşılaştığımız zaman alıcılarını çözecek alternatifler bulamazsak, şeyleri sökme dürtüsüne karşı temkinli olmamamız gerektiğini söylemiyorum, ama ana dallar için en az iki çok iyi durum gördüm kariyerimde revizyon.
Erik,

2

Sen sordun:

Scrum'da, geliştiricilerin yeterli olduğunu söyleme gücüne sahip olabileceği ve büyük yeniden yazmaya başlaması için zaman vermelerini talep eden kısım nerede? Eski hikayeleri 'Hikayeler' ile yapıştırmanın sonsuz döngüsünde gibiyiz. Bu yüzden işler yeniden yazma isteği duymayan teknik olmayan insanlar tarafından yönetiliyor çünkü kod tabanının ne kadar kötü olduğunu anlamıyorlar.

Hem yönetici hem de geliştirici olan biri olarak, sorunuzun en basit cevabı, Scrum'da, başka bir metodolojide veya geliştiricinin yeterince söyleme yetkisine sahip ve yeterli olduğunu söyleyebilecek herhangi bir iş senaryosunda yer olmamasıdır. yeniden yazmak. Buradaki birçok insan, neden yeniden yazmanın neden sıklıkla kötü fikir olduğunu açıklamak ve değişimin artan ve çevik bir şekilde nasıl gerçekleştirilebileceğini açıklamak için iyi, geçerli, tartışmalar yapmıştır. Ve hepsine katılıyorum.

Ancak sonuçta daha da basit. HİÇ bu kararı veremezsin. Siz çalışansınız ve gerçekten vereceğiniz tek karar "bu saçmalıklar için çalışmaya devam edecek miyim yoksa çılgın becerimden korkan yeni bir iş bulacak mıyım?". Yeni işiniz de bu kararı vermenize izin vermez, ama en azından işten işe zıplarken kaderinizin kontrolünü ele geçirdiğinizi hissedeceksiniz.


1
Buradaki satırların arasında doğru okuyorsam, yeni işe alınma konusundaki kabiliyetiniz konusunda biraz acı gibisiniz. Yanılmıyorsam, yeteneklerini aslında şirkette çalışmaktan hoşlanmadıkları zamanlarda yürümeleri için yeterli talepte bulunan yeni işe alımların denklemde sabit olmayan tek kişiler olduğunu düşündünüz mü?
Erik,

1
Yakınında bile değil. Aslında bölümümdeki çalışanlar birkaç yıldır benimle birlikte. Neredeyse hiç dönüşüm yok. Yapmaya çalıştığım nokta, sonuçta, herhangi bir şirkette, herhangi bir sektörde, çalışanın yaptığı işin, çalışanı değil maaşlarını imzalayan kişiye tamamen kalmış olmasıdır. Patronum bir talepte bulunduğunda, kendimin de dahil olduğu, çalışanın vermesi gereken tek karar, çalışan ilişkisine devam etmek ya da devam etmemek. Orijinal poster, bir çalışan olarak ne zaman kalkınmayı dikte edeceğini sordu. Cevap asla değil.
Peter Lange

Öyleyse "deli becerimden korktum" karakterizasyonu neydi? Bu adam deneyimli bir dev. Ve size benzer durumlarla olan deneyimimden bahsettiğim problemin sadece işleri yoluna koyma meselesi değil, aslında herkesi mutsuz eden ve işverenini boşa harcayarak işine harcayan bir felaket olduğunu söyleyebilirim. Muhtemelen fark ettiklerinden daha fazla zaman ve yetenek tutma.
Erik,

1
Çünkü ben egoda kök salmış olan temel argümanın yanlışlığını gösteriyordum (psikolojik anlamda). Bu onun ne kadar yetenekli olduğu meselesi değil. Kodun ne kadar karışık olduğu sorusu değil. Bu, geliştirme metodolojisinin onun için neler yapabileceği sorusu değildir. Bu güçle ilgili bir soru. Bir çalışan ilişkisinde karar verme yetkisi işveren iledir. Bir çalışanın sahip olduğu tek karar gücü, dayanamayacak kadar fazlası olduğunda ilişkiyi iptal etmektir.
Peter Lange

1
Kabul ediyorum, scrum teknoloji borcu ile başa çıkmak için kötü. Fakat asıl sorunun temeli hakkında aynı fikirde değilim. Aslında bir işveren / çalışan ilişkisi sorusu soruyordu, ancak soruda az önce bahsetti. "Hristiyan olarak, Enchillada yapmanın en iyi yolu nedir?" Bu gerçekten teolojik bir soru değil; dini tercihlerimin konuyla ilgili olduğunu düşündüğüm yanlışlığı yapsam da yemek pişirme ile ilgili bir soru.
Peter Lange

1

Acını hissediyorum, ama Scrum'la ne yapması gerektiğinden emin değilim. Kodu tekrar yazıp yazmama kararı, geliştirme sürecine bağlı değildir.


Her iki haftada bir işleri tamamlayacağına söz veren bir geliştirme süreci, yıllarca göz ardı edilen büyük çaplı yeniden düzenlemeye engel olmak için çok şey yapabilir. Scrum eğitiminde ilk dikkatimi çeken şey, teknoloji borcu konusu üzerinde bir çeşit sırlanma şeklidir. Uygulamanızın artık daha yalın ve daha kaba olduğunu ilan etmek heyecan verici değildir ve işleri daha hızlı yapabilirsiniz. İşletme türleri, arkadaşlara ve yatırımcılara gösterebilecekleri değer katmalarını istiyor.
Erik,

1

Bir dakika ne?

Sen ediyoruz yama ? Sen edilmelidir üstlenmeden . Çevik değerlere sadık kalın. TDD ve uygun uygulamaları kullanın; sonuçta durum daha iyi hale gelecektir.

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.