Şimdi basit olsun, ya da geleceği düşünerek programlayın.


21

Şu anda şirketim için oldukça ilgili olan yeni bir uygulamayı kodluyorum. Son tarihi karşılamak için, işlevsellik biraz azaldı, böylece piyasaya sürülmeye hazır bir şeyler hazırlayabileceğiz.

Bana sürüm 1'i çalıştırıp ay sonuna kadar çalıştırma görevi verildi. Gelişimin yarısındayım ve görüşte bir son olduğu noktaya geldim.

Dün, ihtiyaçlarımdan biri için çok güzel ve kolay bir çözüm bulmak için biraz zaman harcadım ve ortaya çıktığı şeyden gurur duyuyorum. Bu sabah sürüm 2 belgesi gönderildi ve dün yazdığım kodun ya gutted ya da ciddi bir şekilde değiştirilmesini gerektiren bir zorunluluk var. Gelecekte, olduğu gibi bırakırsam, çok fazla çalışma gerektirir. Mevcut çözümümü daha sağlam hale getirmek için fazladan bir gün alabilirim, böylece v2 özelliği çok daha az çaba harcayarak eklenebilsin, ama bu da gerektirdiği ekstra kodlama için biraz geride kaldı.

V2 yapıp yapmayacağımı bilmiyorum. Benim olabilir veya bir meslektaş, hatta bir stajyer olabilir.

Ayakkabılarımın içinde olsaydınız, gelecekte daha kolay hale getirmek için şimdi zaman harcar mıydınız, yoksa çözümünüzü bırakıp zamanı geldiğinde onunla ilgilenir miydiniz?



Aşağıdaki link benim için faydalıydı: elegantcode.com/2012/01/16/marines-vs-boy-scouts
QuanhD

Yanıtlar:


18

Eğer son tarih Taş Oyma ise, onunla buluşman gerekenleri bitir. Yeni gereksinim için yapılan kod değişikliklerini karşılamak üzere v2'ye ilişkin tahminleri şişirdiğinizden emin olun. Ayrıca, yeni v2 özellikleri için nelerin değişmesi gerektiğini düşündüğünüzün kısaca belgelendiğinden emin olun, böylece bir iş arkadaşınız başka bir şeye atanırsa onu alabilir.

Son teslim tarihlerinde yeterli esneklik varsa (1 gün, sesiyle, yani 2,5 gün uzatmayı hedefleyin), o zaman emin olun, devam edin ve bilinen geleceği kodlayın!


1
Daha sağlam çözümü belgelemek için öneri için +1. Bu özellik tam olarak planladığınız gibi uygulanabilir veya uygulanmayabilir, ancak gelecekteki uygulamacıya değişikliklerle ilgili düşüncelerinizi bildirmek kesinlikle iyi bir fikirdir.
Mike Partridge,

2
Aslında belgeyi okuduktan sonra bu sabah v2 beklentisine yönelik yöntem taslaklarını yazmaya başladım. Sanırım bunu bırakıp bunların gelecekte nasıl oynayacaklarını söyleyecek bazı yorumlar bırakacağım. Thanks :)
Tyanna

1
Gözünüzü topun üzerinde tutun .... benim deneyimim, V1 ile ilgili herhangi bir şeyle ilginizi çekmesi kötü bir şey, V1'in son gözleriniz varken, gözlerinizin arasına çarpması son derece esnek. Bir gelişme bir Son Tarihi kaçırırsa, geliştirici hatasıdır.
mattnz

13

İkinci Sistem Etkisi'ne avı (erken) düşmekten kaçının . İşte uygulanacak bazı iyi teknikler:

  1. Sadece sürüm 2’de geldiklerini gördüğünüz için kesinlikle sürüm 1’in rayından ayrılmasından kaçının. Önceden planlama yapmak gayet iyi, ancak v2 özelliklerinin yaratıcısı v2’nin değil, v1’in başarısızlığından sorumlu olmalıdır.
  2. (Mümkünse), yaratıcının sürüm 2 için şimdi daha büyük değişiklikler gerektirmeyen gereksinimleri yeniden çalışmasını sağlayıp sağlayamayacağınızı görün - ve daha sonra, belki v3 için planlayın.
  3. Keep YAGNI akılda ancak akılda genişletilebilirlik için kod deneyin - vs. önlemek sihirli sayılar, sabit kodlanmış değerleri, yazma iyi birim testleri veya kod sözleşmeleri, üstlenmeden ve kod yol boyunca daha az ağrılı değiştirir yapacak erkenden iyi teknikleri uygulamak.

Şehirler gibi büyüyen çoğu yazılım projesi uzun vadede başarılı. Yalnızca sınırlı geleceğe yönelik evrimsel planlama, yazılımınızın zamanında ve sürümde gerekli olan işlevsellikle serbest bırakılmasını sağlar - ve daha fazlasını yapmaz. Carl Sagan'dan bu alıntıya bakın:

Tüm sivil sistemler paralel olarak inşa edilip periyodik olarak değiştirilirse (bir şehrin) düzenlemesi daha verimli olabilir (bu nedenle feci yangınların - örneğin Londra ve Şikago’nun büyük çatışmaları bazen şehir planlamasında yardımcıdır). Ancak, yeni işlevlerin yavaş bir şekilde toplanması, şehrin yüzyıllar boyunca sürekli olarak çalışmasına izin vermektedir.


Bu özelliğe evli olup olmadıklarını görmek için tasarımcı ve yönetim ile konuşma fikrini seviyorum. Değeri olduğundan daha fazla işe neden olacak işe yaramaz bir zil olarak görüyorum ... ama sonra stresli bir dev atm. :)
Tyanna

2
+1: Geleceği tahmin etmeye çalışmaktan kaçının. O geldiğinde şaşırtıcı olacak.
S.Lott

7

Gelecek ayın ihtiyacı için bugün kod eklemeyin. Bugün sahip olduğunuz gereksinimler için en temiz kodu yazmalısınız. Bir günlük çalışmanın şimdi birkaç gün sonra tasarruf edeceği konusunda şüpheliyim. Böyle iddialar duydum ve doğru olduğu tek bir davayı hatırlayamıyorum. Beni bir kod göstererek ikna edebilirsin, ama deneyimlerim bana bunun olası olmadığını söylüyor.


Bu doğru, ancak bunu çok ayrıntılı bir şekilde önceden planlamak için vaktiniz varsa ve çeşitli değişikliklerin doğasını öngörmek için gerekli iş bilgisine sahipseniz geçerlidir. İş durumlarının çoğuna rağmen (şimdi daha ucuz, daha küçük) İfadelerine tamamen katılıyorum. Yine de bazı örnekler var, eğer gerçek bir inançlı değilseniz :)
Joel Etherton

@JoelEtherton: İş bilginiz olsa bile, değişiklikleri beklemek çok zor, çoğu zaman denemeye değmez bir noktaya kadar ... sadece benim deneyimim.
Ocak'ta 12:12

@sleske: Bazen muhtemelen, ama deneyimim her iki yönde de olmuştur. Şu andaki işimde, iyi planlama ve öngörme beni bir ton fazladan baş ağrısına bıraktı.
Joel Etherton

6

Olduğu gibi bırakın.

Geliştiriciler aslında yapması gerekeni yapan ve daha fazla yapılmayan eski bir projeyi HEDEFLEDİR.

Bugün, “gelecekteki” bir gereksinimi karşılamak için kod tabanının “aşamalandırılması” için iyi bir fikir gibi görünebilir, gelecekte kodun anlaşılmasının önündeki engeller olabilir. Hiç kimse, kısmen uygulanmış işlevsellik ve unutulmuş hayali gereklilikler ile ilgilenmeyi sevmiyor. Bunun böyle olacağını söylemiyorum, ancak en iyi niyetlere rağmen işler genellikle bu şekilde ortaya çıkıyor.


"Yarım uygulanmış işlevsellik yok" için +1. Keşke daha fazlasını oylayabilseydim.
Ocak'ta 12:12

1

İyi cevaplar. Sadece eklerdim - böyle bir durumda ne yaparsam iyi bir fark alır, böylece yaptığım şeyi yakalayabilir ve güvenli bir yerde susturabilirim. O zaman bir sonraki sürümde fırsat tekrar yapmak için gelirse, kolay olacaktır.

Genel olarak, iyi bir geliştirici gelecekteki gereksinimleri öngörmektedir, ancak bir son teslim tarihi geldiğinde, sahip olduğunuz hatalara cevap vermenin zamanı geldi ve “tekneyi sallayın”.


Değişiklikleri ayrı tutma konusunda iyi fikir. Bir fark yerine dal, muhtemelen daha iyi bir fikirdir (görünür, birleştirilmesi daha kolay vs.). Daha sonra her zaman silebilirsiniz.
Ocak'ta 12:12

1

Değişir. Eski moda bir kural var: Kendini tedavi etmek istediğiniz gibi diğer insanlara davran. Kendi projen olsaydın ve tüm öncelikleri bilseydin ne yapardın?

Eğer v2 kesinlikle gerekliyse ve son tarih, zorunluluktan ziyade sadece bir dilek ise, o zaman teknik borç yaratmayın ve hava güzel olduğunda yelkenlerinizi onarmayın. Başkası v2 yapsa bile, öngörmeyi takdir edecektir.

V2'nin gerekliliği hakkında herhangi bir şüpheniz varsa, YAGNI'ye bağlı kalın. Ayrıca, spektrumun diğer tarafındaysanız ve sizi daha önce oluşturdukları fikirleriyle sürekli spam yapan müşterilerden birine sahipseniz, e-postalarınızı günde sadece 2-3 kez kontrol edin ve bu harekete acele etmeyin. kaç tane "sorun" ve istek onları okumadan önce önemsiz hale gelir.

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.