Bir projeyi yapmak için tasarımın “düzgünlüğünü” feda etmek ne zaman uygun olur?


15

Yakında yapılması ve iyi çalışması gereken bir ürün üzerinde çalışırken, işi hızlı bir şekilde halletmek ve kapıdan çıkmak için tasarımın sürdürülebilirliğini ve "düzgünlüğünü" feda etmek ne zaman uygun olur? Peki, özellikle "düzgün" hale getirmek için kullanılan teknikler benim için yeni olduğunda ne derece uygundur?


3
Sadece kesinlikle gerekli olduğunda.
Sinirli

1
Oldukça çalıştığım norm. "Şimdi ödeme yapabilirsiniz ya da daha sonra bana ödeme yapabilirsiniz" hiç bu kadar doğru olmamıştı.
MetalMikester


1
Zıt görüşe bakacağım ve her zaman söyleyeceğim . Bir proje yapılmazsa, kimse düzgün olup olmadığını umursamaz.
drxzcl

1
@MrJ, aslında kullanıcıları düşünüyordum.
drxzcl

Yanıtlar:


18

Bir işletmeyi desteklemek için çalıştığınızı unutmayın. Bir şekilde, yazılımınız işin alt satırını etkiliyor. Teknik açıdan mükemmel bir çözüm ile ürününüzün pazara sunma süresi ve işletmenin bundan ne kadar fayda sağlayacağı arasında bir denge kurmanız gerekir.

Deneyimlerime göre, geliştiriciler genellikle teknik mükemmellik hakkında endişelenmeye kapılıyor. Ancak, bir ürünü kapıdan daha hızlı çıkarmak için sürdürülebilirlik veya performans gibi kalite özelliklerinden ödün vermek için çok geçerli nedenler vardır. İşe ve ürüne bağlıdır. Ancak "her zaman mükemmel bir tasarım için gayret edin" çok basit bir yaklaşımdır.

Günün sonunda, önemli olan tek şey işletmeye değerdir. Kısa ve uzun vadede nasıl en üst düzeye çıkaracağınızı öğrenin ve bu hedefi hedefleyin.


3
Cevabınızın ruhuna katılıyorum, ancak bazı detayları kaçırıyorsunuz. You need to strike a balance between a technically perfect solution, and the time to market of your productKabul etmem, bu bir geliştiricinin sorumluluğunun ötesindedir. Onlar kesinlikle bunun farkında kalmalıdır, fakat bir iş karar vermek için sorumlu birine bilgi vermelidir.
StuperUser

2
Örneğin Blizzard'a bakın. Oyunlarında büyük başarılar elde ederler ve üstün kalitenin sonunda ödeyeceğini düşündükleri için piyasaya sürmeyi gerçekten umursamazlar. Ve muhtemelen her türlü yazılım için olmasa da.
Falcon

1
@StuperUser ve @Peter Rowell ile kesinlikle anlaştım. Teknik riskleri, köşeleri kesmeyle ilgili sorunları, vb. Karar veren gıda zincirinde daha üst düzey insanlara iletmek çoğu zaman geliştiricinin sorumluluğundadır . Eğer bu sizin rolünüzse, bunu mümkün olduğunca doğru bir şekilde iletmeye odaklanmalısınız. Ancak, işin değer zincirini neyin yönlendirdiğini ne kadar anlarsanız, bu iletişimde o kadar iyi olursunuz.
RationalGeek

1
@Falcon Blizzard, sağlam, istikrarlı, eğlenceli bir oyunda uzun süreli oyun için erken sürümde kısa vadeli kazancı feda edebilir. Belki de onlar için uygun denge budur. Ancak, her durumda uygun denge değildir.
RationalGeek

4
Gerçek şu ki, çoğu yeni yazılım ürünü kalite sorunları nedeniyle değil, müşteriler sadece onları istemediği için piyasada başarısız olacak. Dolayısıyla, ürünün 1. sürümünde sağlam bir bölünebilir mimari oluşturmak için çok fazla zaman / çaba harcanması, kaynakların en iyi kullanımı olmayabilir. Kapıdan bir şey çıkarmaya çalışan işadamları, birçoğunuzun olduklarını düşündüğü aptallar değildir; canlılığı belirlemek için bir ürünü müşterilerin ellerine almak çok akıllıca bir şeydir.
Kristopher Johnson

12

"Teknik borç" terimi, bu tür ticari kararları bildirmek için çok kullanışlıdır. Şimdi yapmadığınız işler daha sonra bir miktar çalışmaya neden olacaktır. Finanslarda olduğu gibi, borç almak risklidir, ancak borcu daha sonra geri ödeyecekseniz kaldıraç etmeye değer olabilir.

Bunu söyledikten sonra, teknik borç geri ödeme anında 1: 1 oranı değildir. Hataların serbest bırakılmasından sonra düzeltilmesi daha pahalıdır ve dağınık eski bir sistemden gelişirken gelecekteki üretkenlik üzerindeki etki aşırı olabilir. Hatalarınızı düzeltmek için iki kat daha fazla zaman harcamayı veya belki de çalışma saatleri ve kaynakların 1000 katını inceliyor olabilirsiniz.

Bu karardaki işiniz, düşündüğünüz belirli köşe kesme parçalarının sonuçlarını anlamak ve daha sonra bu sonuçları iş kararını veren insanlara iletmektir. Bu özel tahmin becerisi, şu anda iyi gelişmek için çok fazla araştırma ve çalışma gerektirebilir, ancak kariyeriniz boyunca çok değerli olacaktır.


1
+1. Teknik borç, bunu tanımlamanın en net yoludur.
crazy2be

8

Kabul edildiğinde ve sonuçları sahibi / müşteri / kullanıcı tarafından anlaşıldığında.

Bir tesisatçı onarım için çöp imhası almak zorundadır. Lavabosu bu arada kullanmak istiyorum, ama o zaman ve malzeme kırmak için bant kullanarak geçici boru koymak için bana fatura gerekirdi. Bu aynı zamanda imha işlemini tamir atölyesine götürmeyi de geciktirecektir. Ek faturalandırmayı kabul edersem, tıkanma riski taşıyorum. Bertarafın onarılması bir gün daha uzun sürecek ve geri koymadan önce daha da uzun bir gecikme olacak, bu kabul edilebilir.

Şimdi zamanında ve bütçede olabilirsiniz, ancak uzun vadede daha da yüksek bir ücretten ödün / risk alın. Bu, teknik olmayan kişilerin anlamasını sağlamak zor olabilir, ancak satış personeli bunun içindir.


5

Birçok insan yeni bir şey öğrenirken çabucak vazgeçir ve bunu her zaman yaptıkları gibi yapar. Eğer bu bir kalıp ise sadece kodunuz zarar görmeyecek, aynı zamanda programcı olarak kendi becerileriniz sınırlı kalacaktır.

Yine de, günün sonunda tek başarılı yazılım, gönderen yazılımdır.


"Yine de, günün sonunda tek başarılı yazılım gönderen yazılımdır." Düzgün bir şekilde tasarlanmadığı için çöküp birkaç yıl yanana kadar. Eylemde kısa görüşlülük.
Wayne Molina

1
Eğer hiç gemi yapmazsan, asla birkaç yıl yapamazsın ...
Jeremy

Kısa görüşlü yönetim nedeniyle sizi uzun vadede yormayacak bir şey gönderemiyorsanız, ilk etapta işte olmayı hak etmiyorsunuz!
Wayne Molina

3

Yumuşak süre bittikten sonra. Ve o zaman bile çok düşük bir "Tamam" derecesi. Zor bir süre geçtikten sonra elbette tartışmalıdır. Çünkü bu zor teslim tarihlerinin doğasıdır.

Ayrıca, bu teknik borç gerektirir. Git-er-done zihniyetinde köşeleri keserek harcadığınız her saat / gün için, bir sonraki bu projeye dokunmanız gerektiğinde yaklaşık iki kat daha fazla zamana mal olacaktır. Gerekirse acele etmek, göndermek ve hemen tüm ördek kasetinizi düzeltmeye başlamak en iyisidir. Yıllar sonra saldırıya uğramış bir projeye geri dönmek bir kabus. Eğer bir daha asla dokunmazsan, öyle olsun, kimse umursamaz. Ama sonsuza dek bir proje yalanından ayrıldığım zaman iş değiştirdiğim zamandır.

Bununla birlikte, bu şeyleri zamanlamak proje yöneticisinin görevidir. Eğer bir son teslim tarihine uymak için acele ederseniz, bu PM'nin hatasıdır. Doğru yapın, bir kez yapın ve sakin ve doğru bir şekilde yapın. Hayat başka bir şey için çok kısa.


2

Burada yayınlanan diğer tüm cevaplar iyidir. Yine de, projenin bir geliştiricisi olarak, tasarımın sorumlusu (koruyucusu) olduğunuzu eklemek istiyorum.

Eğer doğru teknik çözüm için ayağa kalkmazsanız, size kimseye söz vermeyeceğim. Her zaman patronunuza doğru olanı yapmak için tartışmalısınız ve Başbakan her zaman son tarih lehine tartışmalıdır.

Umarım makul bir organizasyondaysanız, son teslim tarihlerini karşılamaya yardımcı olan ve aynı zamanda tasarımdan çok uzak olmayan bir uzlaşma sağlanacaktır.

Bununla birlikte, Başbakanın son teslim tarihine ulaşılmazsa dünyanın sona ereceğini ve projenin başarısız olacağını varsaymayın. Genellikle siyah ve beyaz değildir ve çoğu zaman Başbakanın son teslim tarihi yumuşaktır ve ayarlama için yer vardır.

Bir PM programında geçirdiğim neredeyse her son teslim tarihi çoğunlukla yapaydı. Onlar diş ve çivi savunmak ve aksi takdirde taklit edecek, çünkü PM son tarihi iterse PM PM KÖTÜ görünüyor!

Başbakanın kötü görünmesi projenin başarısız olduğu anlamına gelmez. Bunu anlarsanız, bir PM'yi ne kadar bükebileceğinize şaşıracaksınız.


1

Düzgün tasarım için müşteri teklif. Bu teklif onlar için kabul edilemezse, her bileşenin maliyetinin dökümüne gidin (genellikle maliyet == geliştirme süresi). Eğer seçerlerse "alakart" öğelerini alsınlar. Birçoğu, test ve tasarım gibi "işe yaramaz" şeyler için tıraş zamanına atlayacak. Bu yaklaşımın risklerini açıklayın, ancak riski kabul ederse yönlendirildiği şekilde devam edin. Eğer bir clunker araba için yeterli param varsa, muhtemelen 8 ay içinde bozulacağını bilsem bile, bir clunker araba satın alacağım. Müşterinizin bu riskleri tartma ve sonuçlarını kabul etme sorumluluğu vardır.

Yapmak istemediğiniz tek şey, müşteriye sadece test edilmemiş bir önemsiz parça için ödeme yaptığında (ve aldığında) güzel tasarlanmış bir yazılım parçasına sahip olduklarını düşünmesine izin vermektir. Bir şeyler ters giderse (ki muhtemelen böyle olur), ilk senaryoda kötü görünürler, ancak ikinci senaryoda kötü görünürsünüz.


1

Bu var asla tamam ama bazen bir projeyi bitirme uğruna uzlaşma gerekiyor. Üzücü gerçek şu ki, çoğu iş adamı tamamen cahil ve şu anda bir şey için daha sonra sürdürülebilirliği feda etmeye istekli değiller. İşin püf noktası nasıl bir denge kurulacağını bilmek; belki proje olabildiğince temiz olmayacaktır, ancak bir pigpen olmadığı sürece değerli bir uzlaşmadır.


0

Bu tamamen "Siz veya başka biri bunu daha sonra değiştirmek isteyecek misiniz?" Evetse, "düzgün" bir tasarıma sahip olmalısınız, aksi takdirde her şeyi atmanız ve 6 ay sonra tekrar başlamanız gerekir.

Tabii ki, düzgünlüğü çok ileriye götürebilirsiniz, ancak genellikle biraz düzgünlük daha sonra çalışmanızı kurtaracaktır.


4
Müşteri ne derse desin, bakım gerektirmeyen bir ürün diye bir şey yoktur.
Edward Strange

@ crazy-eddie Neredeyse hayır. Yüklü bir soru olarak kastedildi; Bu soruya "hayır" cevabını verebileceğiniz pek çok vakayı gerçekten düşünemiyorum. Sadece bir şey anlamına gelen ve bir daha asla kullanılmayacak bir quick'n'dirty senaryosu bile daha sonra düzenlenebilir ve yenilenebilir.
Jo-Herman Haugholt
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.