“Bu sadece küçük bir uygulama olacak” ol'a nasıl yaklaşılır? Evet, değil mi?


11

Tamam ben birçok kez karşılaştım, ama burada biraz daha abartılı kötü durum senaryosu.

Bir müşteri "hey bize bu küçük görevi yapmak için bu küçük modülü yapabilir misin?"
Ben: "Elbette sorun yok".

Yani bütçeler ve kısıtlamalar vb. Dayanarak, bazı mimarlık atlamak ve içine dalış ve ter yok.

Sonra başka bir modül istiyorlar. Ve başka. Ve bazı geliştirmeler. Ve tüm bunlar çok yavaş olur, yıllar boyunca aklınıza gelir. Ve bilmeden önce, korkunç bir şekilde tasarlanmış bu canavar uygulamasına sahipsiniz.

Küçük bir şey yapmanız istendiğinde ne yaparsınız? Büyümeye devam edip etmeyeceğini bilmiyorsunuz ... müşteri ekleme yapmaya devam edip etmeyeceğini (ve onlar da yapmayacak).

Her şeyin üzerinde küçük bir mimarlık yapamazsınız, çünkü sonuçta sadece küçük bir uygulama ve "tüm sesi biliyorum ki" derseniz başka bir yere gidecekler. -o-the-line güvenlik ve endişelerin ayrılması Aslında bu fantastik falan filan falan filan yapacak bir bağımlılık enjeksiyon aracı ile gidelim ".

"Evet doğru" derler ve bir başkasına giderler.

Bütçe, zaman ve algı, uygulamanın kendisini tasarlamak kadar önemlidir.

Buna nasıl yaklaşılmalı?

Sanırım soru gerçekten "Küçük bir uygulama gibi görünen şeyin nihai sonucuna ilişkin tüm bilgilere sahip olmadığınızda, mimari ve tasarım kararlarını erken vermekten nasıl kaçınmanız (veya azaltmanız) tamamen sonra uygun değil mi?

Yanıtlar:


17

Bunlardan birkaç tanesiyle karşılaştım ve normalde yaptığım şey tam olarak yaptığınız şey, tam dalın ve halledin.

Daha fazlası için geri döndüklerinde, iş modellerinin çalıştığı ve biraz daha fazla yatırım yapmaya istekli oldukları anlamına gelir. İşte o zaman onları oturuyorum (genellikle karmaşıklığa bağlı olarak 3. modül) ve kötü haberleri söylüyorum.

Her şeyi masaya koyacağım, en son modül de dahil olmak üzere her şeyi yeniden yapmayı ve ona ne kadar tutacağını söyleyeceğim. Başlangıçta genellikle bazı çıkartma şokları olacaktır, ancak iyi bir çalışma ilişkiniz varsa ve eşyalarınız işe yarıyorsa, büyük bir sorun olmamalıdır.

Yine de üç şeyi anladıklarından emin olun:

  1. Tam bir yeniden yazma ile uğraşmak istemiyorlarsa, yine de 3. modülü yapacaksınız. Birkaç saat daha sürebilir ve bunun için faturalandırırsınız. Onlara gelecekte yeniden yazma yapmayı gerçekten düşünmeleri gerektiğini hatırlatın, çünkü ne kadar uzun süre beklerse, o kadar pahalı olacak.

  2. Bir başkasının bunu yapmasını sağlamak onlara daha pahalıya mal olacak. Yeni kişi, her şeyi ihtiyaçlarını ve tuhaflıklarını en az anlayarak yeniden tasarlamalıdır, bu da ekstra yeniden yazma süresi ve iyi bir iş yapamayacağı riski anlamına gelir.

  3. Hızlı bir para kazanmaya çalışmıyorsun. Yeniden tasarlanması gereken şey.

BTW, faturalandırma alışkanlığınız şimdi yarısı gibi bir şeyse, yarısı bittiğinde, onlara genişletilmiş ödeme koşulları sunmayı düşünebilirsiniz. Şimdi yarısına değiştirin ve üzerinde çalışacağınız süre boyunca bakiyeyi bölün. Bütçe sorunları varsa tutam azaltabilir.


Bu, bunun için mükemmel bir yol gibi görünüyor.
sevenseacat

1
Evet, bu iyi bir yaklaşım. En başta (1. modül) bunun bir olasılık olduğunu bilmelerini ve bu ilk hızlı ve kirli modülle ne olduklarını (ve alamadıklarını) bilmelerinin yararlı olacağını düşünüyor musunuz?
richard

1
@Richard DesLonde. Dürüst olmam. İlk modül küçükse, anlaşmayı yapmaya odaklanın. İlk modülü yaparak ilişkiyi gerçekten kuruncaya kadar, onları gerçekten dinlemelerini sağlamak zor olabilir. İlk modül içeri girdiğinde ve kullanıcılar onu sevdiğinde, ikinci bir modül planlarken önemli bir kaldıraç bulmalısınız. İlişkinin yeterince güçlü olduğunu hissettiğinizde, o zaman devam edersiniz.
Permas

10

Sadece küçük bir uygulama yapın ve bunun için ödeme alın.

Deneyimlerime göre, müşterinin daha fazlasını istemesi durumunda, başlangıçta gerçekten ihtiyaç duyduğundan daha fazla zaman harcamak zorlayıcıdır. Ancak, tüm bu ek değişikliklerin gerçekten gerçekleşme olasılığı ile bunu gerçekleştirme çabalarını (bunun için ödeme alıyor musunuz) ağırlıklandırmalısınız. Tüm uygulama bir yıl sonra tamamen değiştirilebilir.

Ve ilk mimariye zaman ayırarak, kendinize bir iyilik yaptığınızı hissedebilirsiniz. Ama gerçekten, diğer modülleri onun için daha ucuz hale getirerek müşteriyi bir iyilik yaparsınız.

Her başarılı modül için müşterinizi biraz daha faturalandırın ve ilk projeyi adım adım yeniden düzenleyin, ancak her zaman sadece müşteri ihtiyaçlarını karşılamak için.


İyi bir yaklaşım ... sadece müşterinin ihtiyacı olan şey için yeniden düzenleme ve faturalandırma, ancak uygulamayı büyümesine uygun tutmak için ... teşekkürler.
richard

1
Katılıyorum. Ayrıca gerektiğinde uygulamayı hızlı bir şekilde yeniden modelleyebilmeniz için uygun yeniden düzenleme araçlarını öğrenin.

@ Thorbjørn Ravn Andersen: Aletler için öneriniz var mı?
richard

@Richard, ne ile çalıştığınıza bağlı. Visual Studio için "yeniden birleştirici" çok yararlı bir araç olmalıdır.

Bence Resharper'ı düşünüyorsun ... Tabii bunun gibi başka araçlar da var. Visual Studio ayrıca temel yeniden düzenleme araçlarını da destekler.
Ramhound

8

Önceki cevaplar iyi ve dürüst olursam, muhtemelen ne yapardım. Bununla birlikte, bu yaklaşıma biraz huzursuzumdur, çünkü istediklerinin (ve işi karaya çıkarma arzusunun) varsayımına dayanarak müşteriye uygun kararlar verdiğinizden

Ben yardım duygu bir can gerektiğini yapmak müşteri ile dürüst olmak ve vermek edilecek olan onlara 1. Ben hemen gerçekleşeceğini ve (görece) ucuza şimdi yapabilirsiniz: seçim. Harika olacak - işe yarayacak - ancak gelecekteki geliştirmeler biraz daha pahalıya mal olacak. yeni özellikler eklemeniz gerekirse uzun vadede size para kazandıracaktır.

İdeal olarak, onlara zaman / maliyetlerin bazı ball-park rakamlarını verebileceksiniz - aksi takdirde konuşma çok akademik olabilir - ancak bu rakamlara ulaşmanın da çaba gösterebileceğini takdir ediyorum. En azından, tartışmayı önceki projeler açısından çerçevelendirmek müşteri için hayatı kolaylaştıracaktır (ve müşterinin hayatını kolaylaştırmak en öncelikli konu olmalıdır :-))

Başkalarının iyi bir iş ilişkisine sahip olmaları hakkında yaptığı yorumlar yerinde - ancak bu sürece kendinize dürüst davranarak başlayabilirsiniz. Müşteri, bu konuşmayı bile yapamayacağınız türdeyse, şimdi kendinize bu işe ne kadar ihtiyacınız olduğunu sormanın zamanı geldi ...


Evet, belki seçeneklerin önünde bir tartışma veya en azından yaklaşım (şimdi hızlı ve kirli, daha sonra yeniden yaz) yararlı olabilir.
richard

1

Bu "iterasyonların" her birine ayrı bir proje gibi davranırdım. Her küçük modül veya ekleme yapıldığında bu projeleri kapatmalısınız. Sonra başka bir şey istediklerinde, evrak taslağını hazırlayın. Ve zaman geçtikçe, yazılım daha pahalı hale geliyor ... yani her küçük proje için daha fazla ücret alıyorsunuz.

Ona bakmak için bir yol var, bir tane ... LONGGGGGG projesi.


1

daha sonra tamamen uygun olmayan mimari ve tasarım kararlarını erkenden vermekten nasıl kaçınabilirsiniz (veya hafifletebilirsiniz)?

Yapamazsın . Programcılar medyum değildir. Basit şeyleri tahmin edebilir veya kullanıcı arayüzü geliştirmelerini görebiliriz, ancak müşterinin daha sonra isteyebileceğini bilmediğimiz şeyin ötesinde kod yazamayız (orada deliliği görüyor musunuz?).

Sorunuz bunun iş süreçleri olduğunu belirtti ancak bunların iyi süreçler olup olmadığından emin değilim. İşte bazı işaretçiler:

  • Tüm değişikliklerin ve eklemelerin yazılı olarak ve bir bütçeyle imzalanmasını gerektirir .
    • Çünkü ödeyecek faturaların var
    • Yazma ve imzalı kısım, gerçekten istediklerinden emin olur ve müşterilerin proje sırasında fikirlerini yarı yolda değiştirdiği özel şeylerin% 90'ını keser

Fazla Büyümüş Ürününüz

Bu hepimize olur. Sıfırdan yeniden inşa etmek genellikle korkunç bir fikirdir, özellikle de gelecekte tekrar yapılacağı düşünüldüğünde.

Bunun yerine, kullanıcının istediği değişiklikleri kabul ediyorum. Her özellik için ekstra zaman ekleyin, özellik üzerinde çalışmak için orijinal zamanı ve genel mimariyi geliştirmek için ekstra zamanı ekleyin, her seferinde küçük bir iyileştirme. Amaç, mimariyi bir sözleşmede tamamen "düzeltmek" değil, bunun yerine zaman içinde yavaş yavaş parçalamaktır.

Gerçekten önemli kısımlara odaklanarak, yineleme ile kod yinelemesini yavaşça geliştirin.

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.