Bunlar kötü bir geliştiricinin işareti midir? [kapalı]


36

Değişen özellikleri kod çürüklüğü istemcilerinden suçluyordum, iş modellerinin değişeceğini fark etmiyordum ve uyarlanabilir bir şekilde geliştirmek benim işim. Bunu şimdi kötü bir geliştiricinin işareti olarak görüyorum (değiştim!).

Ama şimdi kendimde başka 'sivri uçlar' görüyorum. Son zamanlarda birkaç kez kendimi 'yuvarlak bir çukura bir kare çiviye sığdırmaya çalışmak gibi' diyerek buldum ve kendimi ilerlemeyen bir projeye karşı kararsızlıkla suçluyorum.

Tutumumu nerede değiştirmem gerektiğine dikkat etmem gereken işaretler var mı? Müşteri her zaman haklı mı, yoksa bazen sinirlenmem konusunda haklı mıyım?


20
Başlamak için iyi bir yer tam olarak yaptığınız şey olan öz değerlendirmedir.
Chris

2
İSTEMCİ her zaman haklıdır. İSTEMCİ gökyüzünün yeşil olduğunu iddia etse bile , o zaman doğa yasalarını tek elle (ya da daha deneyimli olanlar için tek parmakla) bükmek sizin işinizdir. MÜŞTERİ’yi tatmin etmeden değil, varlığınızı nasıl haklı göstereceksiniz ?
ThomasX

26
Bir keresinde CEO'su zaman zaman sorunlu müşterilere gidecek ve onlara "Müşteri her zaman haklıdır ve yanılıyorsunuz, bu nedenle kesinlikle bizim müşterimiz değilsiniz" diyen bir şirket için çalıştım. (Ve evet, paralarını da iade etti.)
Dave Sherohman

4
@ThomasX: Müşteri her zaman haklı mı? Müşterinin istediği ile müşterinin ihtiyaç duyduğu şey arasında genellikle bir boşluk olduğunu gördüm. Müşteri daha iyi, daha uygun çözümlerin farkında olmayabilir.
Skizz

3
Aynı argümanlar içeriğe bağlı olarak hem geçerli hem de geçersiz olabilir. Örneğin, gereksinimler değişir - ama bazen tamamen kontrolden çıkarlar. Değişim ile baş etmek, yalnızca makul sınırlar dahilinde işinizin bir parçasıdır. Olası değişiklikleri tahmin etmelisin, ama psişik güçlerin olması beklenemez ...
Steve314

Yanıtlar:


55

Kötü bir geliştirici olduğunu söyleyemem. Sorunların farkında olmak zaten sizi bu tanımlamanın ötesine taşıyor.

Gereksinimler değişir. Bu bir verilen. İyi bir geliştiricinin bunu hesaba katması gerekir. Birçok modern programlama tekniği bununla başa çıkmak için yardımcı olur.

Orijinal özelliklere sadık kalmak gerçekçi değildir. Ayrıca gerçekçi olmayan gereksinimler her zaman değişiyor.

Müşteri kesinlikle her zaman doğru değildir. Olsa da, istediğimizden daha sık 'doğru'. (Tamamen kapalıysa onu içeri almaya çalışın). Ancak, projeyi yanlış yöne sürdüğünü gördüğünüzde, doğru olduğunu düşündüğünüz şeyleri savunmaya çalışın.

Bu konularda katı kurallar yoktur ve iyi ve deneyimli geliştiriciler bile mükemmel 'Zen'i başaramamışlardır. Tek yanlış yaklaşım bunları geliştirmeye çalışmak değildir.


16
+1, "Sorunların farkında olmak zaten sizi bu tanımlamanın ötesine taşır."
maple_shaft

38

İstemci olduğu durumlar vardır. Ama bu senin de problemin.

Geliştiricinin olduğu durumlar ve müşterinin olduğu durumlar vardır. Ancak, genellikle ikisi de sizin probleminizdir, bu yüzden kendini suçlama tutumu daha başarılı olma eğilimindedir, çünkü çaresiz parmakla işaret etmek yerine problem çözme tarafındadır. Bu nedenle, genellikle daha deneyimli geliştiricilerde bulacaksınız.

Daha iyi bir tavır IMHO’ya suçlamadan bakmaktır: “müşterinin hatalı kodu olması benim hatamdır, çünkü her zaman gereksinimleri değiştirir” sonra “olur” bu müşteri ne istediğini çözüyor, bu nedenle geri bildirim, hızlı prototipleme ve esneklik daha fazlası. tamamlık, sağlamlık ve hızdan önemli ".

Bir tür Zen-mind: yargılama, sadece olduğu gibi görün.


Eskiden "Müşteri her zaman haklıdır", +1 için hala savunuculuk olduğunu duymaktan heyecan duyuyorum.
Wayne Koorts

1
Aslında daha çok "siz müşteri değilseniz, müşteri her zaman haklıdır."
Luke Van

@WayneKoorts - ödemek istedikleri sürece müşteriye çağrılabilirler.
JeffO,

2
Aslında, TCIAR'ın 'herkes yanlış olduğu' durumundan daha başarılı olduğunu düşünüyorum, ancak 'kimin kimin haklı olduğunu, sadece sorunu tanımladığının' kadar iyi olmadığını düşünüyorum, bu nedenle +1 hak edilmemiş olabilir.
keppla

1
TCIAR kısmen oradaki reddedilmesi için panzehir olan bir sorun.
Steve314

13

Birincisi, bir müşteri görene kadar ne istediğini bilmez. Bu, Çevik Paradigmanın ağır müşteri katılımlı küçük yinelemelerinin çekiciliğinin bir parçası. İkinci olarak, kod tamamlandıktan sonra bir ürünün "tamamlanmış" olmasını beklemeyin.

Microsoft, sorunları doğrudan istemciye izlemek için 'Watson' adlı bir ürün kullanıyor (pencereler patladığında alacağınız geri bildirim iletisini gönderiyor). İzlenebilirlik, sorunları yaşayan kullanıcıları tekrar izlemenin iyi bir yoludur. Sorarak izlenebilirlik elde edebilirsiniz. Ya da kaynaklarınız varsa, işlevselliği ürün (ler) ile bütünleştirin. Anahtar, sorunları / gelişmeleri izlemektir, böylece ele alınabilir.

Sonunda, emin müşterinin kararsız olabilir. Bu gibi durumlarda, buzdağının sırrına odaklanmaya çalışıyorum .


Buzdağı sırrı için +1.
Daniel Pryden

5

Değişen gereksinimler hayatın zorlu bir gerçeğidir; ancak kod çürüklüğü bundan kaynaklanmaz.

Kod çürümesi, kodunuzun sık kullanmadığınız bazı bölümleri olduğunda gerçekleşir; bu nedenle, “başka hiçbir şeyi etkilememesi gereken” bazı değişiklikler yaptığınızda, hatalara neden olabilirsiniz. Başka bir deyişle, gün ışığını görmeyen kod yavaşça ayrışır ve ne zaman durduğunu söyleyemezsiniz.

Evet, bu senin hatan, kullanıcının değil.

Gerçek çözüm? tüm kodunuzu sık sık test edin. Tabii ki, en iyi yol iyi kapsama sahip otomatik testler yapmaktır.


Otomatik testler için +1! TDD - Test Odaklı Gelişim - testleri ilk olarak çoğu veya neredeyse tüm kodların test edildiği gereksinimlere göre yazmak, sürekli hedef sonrası kayma olsa bile kodun çürümesini önlemenin bir yoludur. Kapsama araçları, testlerin hiçbir şeye dokunmadığı alanları, çürümesi muhtemel olan alanları seçmek için de kullanılabilir.
Danny Staple,

4

Müşteri kararsızlığı büyük bir sorun olabilir ve müşteri ilişkisini yönetmekten sorumlu olan siz değilseniz, başa çıkmak çok zor olabilir. Müşteriyle ilgilenen kişiyle konuşabilir ve sakince, müşterinin bir karar verinceye kadar ilerlemenin gerçekleşmeyeceğini açıklayabilirsiniz. Eğer varsa vardır müşteri ilişkileri sorumlusu, onlar proje devam etmeden önce bir karar vermek gerektiğini istemci söylemeliyiz. Tutumunuzun bir revizyona ihtiyacı olmayabilir, sakinleşmek için sadece bir dakikalık meditasyon gerekir. ;)


4

Javier , değişen gereksinimlerin hayatın zorlu bir gerçeği olduğuna dikkat çekiyor. Kendimi geliştiricinin karar vermesi gereken bir ürün üzerinde çalışırken çok sık sık bu durumlar yüzünden hayal kırıklığına uğruyorum. Benim düşüncem, "Neden yönetim bunu müşteriyle anlayamıyor?" Ya da "Müşteri ne istediğini bilmiyorsa neden bu projeye başladık?", "Değişince çok baş ağrısı olur. gelişimde geç ".

Basit gerçek: Bu sadece programlama / yazılım geliştirmede değil, yaşamın her aşamasında da her zaman olacaktır . Eğer insanlar fikrini asla değiştirmediyse, asla adapte olmadıysa, asla değişime değmediyse, dünya çok sıkıcı ve çok farklı bir yer olurdu. İnsanların ne verildiğine bakma ve onu geliştirme eğilimi vardır. Aynı şeyi kodunuzla da yapmıyor musunuz? Mutlu olmadığım bir kod bloğum varsa (verimsiz, dağınık), onu geliştiririm. (İşletim sistemi bana şikayet ediyor mu? ... bazen belirli bir isimsiz işletim sistemi kullanıyorsam, ancak genellikle değil)

Programcılar olarak, olayları iyileştirmek için fırsatlar yakalamamız, bunlardan sıkılmamak ya da sinirlenmememiz gerekir. İnsanlarla konuşma, tarzınızı geliştirme, iş etiğinizi geliştirme, açık fikirli şeylere yaklaşma, kendinizi dün olduğunuzdan daha iyi olmaya itme fırsatını kullanın. Kariyerinizde ilerleyin ve çok kolay kararlaştırmayın.

Herkesin bu cevaba katılmayacağını anlıyorum ama bu sorunun cevabının daha geniş bir perspektifi içermesinin önemli olduğunu düşünüyorum.


2

Bir müşteriyle etkileşime girdiğinde, programlama yapmazsın; öğreniyorsun ve öğretiyorsun.

Müşterileri bilgilendirin ve süreçle ilgili onları eğitin. Değişim olacak. Onları uygulamaya çalışacağınızı, ancak daha pahalıya mal edeceğini bildirin. Karar vermelerine izin verin.

İstedikleri soru doğada teknik olsa bile teknik ayrıntıya girmeyin. Teşvik edersin, çünkü kendini biraz savunmacı hissedeceksin ve zorlukları atmak / geeklerini giymek isteyeceksin. Yapma; ayrıntıları önemsemiyorlar ve 45 saniye sonra dinlemeyi bırakacaklar.

Onlara vaktinden önce söylemediyseniz, endüstri standartlarını ve en iyi uygulamaları ya da yaptıklarınızı yapmak için başka bir mazeret hakkında bilgi sahibi olmalarını beklemeyin. Sadece satış görevlisinin endüstride standart olduğunu söylemesini sağlamak için en sonuna kadar ücret görmediğimde nefret ediyorum. Bunu bilmem beklenmiyor. Cevabım, "Beni de kendimi standart bir aptal gibi hissettiriyor mu?"

Müşteriniz varken, herkesten veya odadaki herhangi bir şeyden daha fazla onlara dikkat edin. Evcil köpekler bu konuda dahidir; özellikle yemek yiyorsan.


1

Kötü ihtiyaç yönetimi ya da kötü analiz. İş analistiniz (eğer varsa) veya gereksinimleri kim alırsa müşteriyle görüşmek ve müşterinin düşünemeyeceği şeyleri bile tüm gereklilikleri yerine getirmeye çalışır. Müşteriler genellikle istedikleri her şeyi bilmezler, harika bir iş analisti her şeyi çözmelerine yardımcı olur.


1

Bu nedenle, her zaman bir uygulama prototip / araştırma aşamasının ötesine geçmeden önce bir İş Gereksinimi Belgesi kurulumu almalı ve imzalamalısınız.

Şimdi, bu belgenin nihai olduğu fikri hatalı, ancak bu müşterinin gerçekte ne istediği hakkında daha iyi bir fikir edinmenize yardımcı olacaktır. Kodunuzu akılda tutulacak şekilde yazdığınız sürece, sorunlarınızı minimumda tutabilirsiniz.

Ve geriye düşmek için bir bahaneye ihtiyacınız olursa, BRD'deki, müşterinin üzerinde ve böyle bir özellik de dahil olmak üzere imzaladığı gecikmeleri suçlayabilirsiniz.

(Tabii ki, bu ihtiyaç duymanız durumunda sadece bir bahane. Bir şeyi değiştirmeyi her zaman planlamanız gerekir )


1

Emerson'un "Aptalca bir tutarlılık, küçük zihinlerin hobgobinidir ..." sözünde en sık görmezden gelinen kelime aptaldır . Tutarlılık, belli ortamlarda pazarlık konusu değildir, ancak hepsi eleştirel düşünme ve analiz yerine geçer.

Bir yandan, birçok geliştirme modeli tarif ettiğiniz ortamda yardımcı olmak için özel olarak tasarlanmıştır; bu yüzden, kendinizi modelinizi ihlal etmek zorunda bulursanız, o zaman ya onu en baştan uygulayamazsınız ya da yanlış modeli görürsünüz.

Fakat diğer yandan, kurallarınızı ihlal etmek için iyi niyetli ve desteklenebilir bir gerekçeniz varsa ve hileli yönteminizin daha temiz ve daha temiz bir kod ürettiğini gösterebilirseniz, o zaman mantıklı bir rota kullanmaktan korkmamalısınız.

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.