Kalite / standartları göz ardı eden yazılım geliştiricileri şirket için daha mı iyi? [kapalı]


10

Kod optimizasyonunu, standartları ve en iyi uygulamaları öncelikli olarak belirlememeyi seçen yazılım geliştiricileri, optimizasyon, kodlama standartlarının uygulanması ve görevleri zamanında tamamlamanın üstündeki uygulamalardan endişe etmek isteyen geliştiricilerden daha yararlı kodlar oluşturuyor mu?

Bireysel performans incelemeleri söz konusu olduğunda bu farklı yöntemler nasıl karşılaştırılır?

Bu stiller akran değerlendirmelerinde nasıl karşılaştırılır?

SDLC sırasında daha iyi uygulamalar uygulamak için ekibinizi etkilemenin en iyi yolu nedir?


2
@Haylem - Yaptığım orijinal düzenlemenin daha iyi olduğunu düşünüyorum. Başlık ilk cümle ile aynıysa, başlığın anlamı nedir?
BlackJack

1
@BlackJack Başlığınızı geri getirdim ve soruyu biraz daha geliştirdim. Sanırım üçümüz, düzenleme tarihinde aynı gönderi üzerinde durduktan sonra yakalandık. Şimdi iyi olmalı.
Thomas Owens

4
SE patronunuzla ilgili rantlar için bir yer değil. Hepimizin patronları var ve çoğumuz komuta zincirinde oraya ait olmadığını düşündükleri birileri var (Ben değilim bence onlar büyük / suckup). Burada onlar hakkında koşmak iyi değil.
SoylentGray

1
@Chad: Söylediğin her şeye katılıyorum, ancak OP'nin patronu hakkında orospu yapmak istediğinden tam olarak emin değilim (doğrudan).
haylem

2
@Chad: Bunu okumak ettik ve Tepkinizi anlayabilir ederken, Jitendra söylemiyor tüm yaptığı insanların kodunu tamir ediyordum. Ama önce işlevsellikleri sunmanın mükemmel kalitede bitmemiş bir üründen daha büyük önem taşıyabileceğine dair argümanlarınıza ve diğer bazı cevaplarınıza katılıyorum. Hiç kimse ışığı asla görmeyecek bir ürünü muhafaza etmek zorunda kalmayacak çünkü erken öldü ya da hala doğmadı.
haylem

Yanıtlar:


32

Hayır, sadece projenin anının sahibinden saygı görecekler.

Onlar alırsınız çöpe atılan tarafından yıllardır:

  • gelecekteki koruyucular,
  • gelecekteki testçiler,
  • gelecekteki proje sahipleri,
  • gelecekteki yöneticiler,
  • ve gelecekte kod tabanıyla ilgilenen hemen hemen herkes.

Aynı muameleyi bile alabilirler:

  • mevcut test kullanıcıları,
  • mevcut teknik dokümantasyon yazarları.

@Ivan: Teşekkürler. Uzun vadeli düşünme her zaman kazanır.
haylem

@haylem - Size katılıyorum çünkü insanlar işleri hızla değiştiriyor. bu yüzden daha iyi kod yeni katılımcılar kodu hızlı bir şekilde alt etmek için yararlı olacaktır
Jitendra Vyas

Hepsi doğru, ama performansları nedeniyle uzun süre kalan acıyı yaşayan piyonlardan uzak kalacaklar. Acı ama gerçek!
anon

6

Yanlış ikilik: nitelikler diktir.

                Yüksek Kalite Düşük Kalite

Kârlı HARİKA Sketchy

Karsız Iffy İLK YANGIN

5
Iffy Sketchy'den daha mı iyi yoksa daha mı kötü?
HLGEM

1
@HLGEM: Kârlı her zaman kârsızdan daha iyidir.
Donal Fellows

kalitesinin yarattığı gelecekteki maliyetleri göz ardı eden
hesaplar

1
Kârlılığı yalnızca geliştiricinin arkasına atamak aşırı basitleştirmedir. Ürün yönetimi, dağıtım altyapısı nasıl olur? Kârlılıkta oynayacakları bir rolleri de yok mu?
DavidS

5

Hayır. En iyi uygulamalar en iyisidir çünkü tanım gereği , projelerin daha hızlı bir şekilde yolda daha hızlı bir şekilde değiştirilmesiyle daha doğru bir şekilde yapılmasına yardımcı olurlar, bu nedenle onları göz ardı etmenin karı azaltması garanti edilir. Tabii ki, sizin yöneticileri bu uygulamaları reçete olabilir düşünüyorum iyi, ama aslında değildir, ya da müşteriler için ödeyecek ve ne neyi yanlış değerlendirmek olabilir - tüm bahisler kapalıdır.

Kodlama standartları daha zordur; kodlayıcılarınıza çok fazla ayrıntı reçete etmek mümkündür, bu da verimliliği düşürür. Ancak deneyimle, anal-kalıcı mikro-yönetimden faydalı yönergeler söylemek oldukça kolaylaşır, bu yüzden aynı şey geçerlidir: gerçek en iyi uygulamalar her zaman faydalıdır, genellikle en iyi uygulamalar değildir.

Eğer sürece Kod optimizasyonu genellikle yapıyor değmez ölçülen senin darboğazları, ne doğruladı bir optimizasyon yapıyor gerekli olduğunu ve ölçülen senin zeki hüner aslında preformance rquirement uyduğunu. Aksi takdirde (çoğunlukla) yapmaya değmez ve bu nedenle optimal değildir.


6
En iyi uygulamalar, tüm projelerin daha kısa sürede doğru şekilde yapılmasına yardımcı olmaz. Bunlar çoğu zaman çoğu projede iyi çalıştığı gözlemlenen şeylerdir.
Thomas Owens

2
"En iyi uygulamalar" a ya da bir başkasının bir şeyler yapmanın en iyi yoluna körü körüne bağlı kalmak, geliştirme sürecine kargo kült kodlamasının kodlama sürecine ne olduğu. Bir uygulamanın ne anlama geldiğini, gerçekte durumunuzdaki en iyi şey olup olmadığını ve eğer değilse, neyin yerini alması gerektiğini anlayabilmelisiniz.
Blrfl

5

Kod optimizasyonu ve uygulamaları ile ilgilenmeyen geliştiricilerle anlaşıyor muyum? Hayır.

Yapmaları gereken işi yapıyorlar mı? Evet.

Bir işletme para kazanmakla ilgilidir ve para kazanmanın tek yolu ürünleri serbest bırakmaktır. Bu genellikle projelerin katı programlara sahip olduğu anlamına gelir, yani bir şeyi yapmanın en iyi yolu bir şeyi yapmanın en hızlı yolu olmayabilir.

Bu tarz bir gelişmeye katılmama rağmen, ürünler piyasaya sürülürse şirket tarafından saygın olarak görülebilir.


Son işimde kod optimizasyonu hakkında çok önemsiyordum ama geliştiricilerim umursamadı ama benden daha fazla proje yaptılar ve proje yöneticisiyle konuştuğumda Müşteri projeyi zamanında istediğini ve kodun nasıl yazıldığını asla görmediğini söyledi
Jitendra Vyas

1
@Jitendra - Zaten yazılmış olan şeyleri optimize etmek ve yeni bir işlevsellik elde etmek için bütün gün geçirirseniz, ben de mutlu olmazdım. Optimizasyon, kaynak kodunda daha az sayıda satır ve karakter olmanın yanı sıra size bir şey getirmedikçe hiçbir şey başaramazsınız.
SoylentGray

3
@Jitendra - Bunu yapmadığını söylemedim. Kodunuzu okunabilir bir şekilde yazmak harika. Kendinize ait görevleriniz olduğunda diğer insanların kodlarının görünümünü 'düzeltmek' etrafında dolaşmak değildir.
SoylentGray

1
@Chad -Kendi kodumu yeniden yazmak veya diğer insanların kodunu düzeltmekle ilgili değil, iyi okunabilirlik, gelecekteki geliştirici için uygun yorumlar ve kodu yeniden kullanılabilir hale getiren en iyi uygulamaları kullanmak için kodu ilk kez yazmak üzere. ve sadece orijinal geliştiricinin anlayabileceği karışıklık kodunu yazmak zaman alır. İyi kod her zaman zaman alır.
Jitendra Vyas

4
@Ivan: Bu anlayışla doğrudan deneyimim vardı. Bu böyle devam ediyor. Şirket bir yeşil alan projesi başlattı. Hotshot Developer X, bol miktarda ctrl + cve kullanarak işleri mümkün olduğunca çabuk bir şekilde atar ctrl + v. Ürün çok kısa sürede piyasaya sürülüyor. Şirket Geliştirici X ile seviniyor. Hata raporları ve özellik talepleri geliyor. Geliştirici X devam edemiyor ve işten çıkarılıyor / bir sonraki işe geçiyor. Sonraki 3 yıllık gelişme, ilerleme kaydedemeyen yeni mühendis ekiplerinin döner bir kapısıdır ve X Şirketi, bir zamanlar sahip olduğu tüm piyasa avantajlarını kaybeder.
Greg Burghardt

4

Hayır ve en hızlı rotayı bulur uzakta olanlar kötü alışkanlıklardan takdir ettiğini belirtti şirketten.


2
Kısa, doğru ve doğru olduğu için +1. Kalite standartlarını umursamayan bir şirket ya aptal, cahil ya da aldatmaca.
Wayne Molina

3

Evet ve hayır, bu biraz arzulu bir yıkayıcı ama mükemmel bir uygulama değil, en iyi uygulamadır. İdeal olarak onları sürekli takip etmelisiniz, ancak her zaman işletmenin ürünlerinizi ihtiyaç duymadan ihtiyaçlarını karşılamak istediği bir durum olacaktır.

Koruculardan nefret edersiniz, ancak patronunuz tarafından sevilirsiniz.


3

En İyi Uygulamalar bir şekilde sağduyu gibidir, herkes herhangi bir iki kişi ayrıntılı olarak tartışmaya başlayana kadar herkesin bilmesi gerektiğini kabul eder. Hiçbir insan tanım üzerinde tam olarak hemfikir değildir ve tüm durumlar için geçerli olan mantıklı bir gerçek kaynağı yoktur.

Bir uzay uydusu için rehberlik sistemi mi yazıyorsunuz (muhtemelen değilsiniz)? Sonra Cehennem Bu tür çalışmalarda hiçbir kötü kalite / performans kodu asla kabul edilemez.

Bir kereye mahsus bir pazarlama baskısı için bir web sitesi yazıyorsunuz (muhtemelen bunu yapmıyorsunuz ya da soruyu sormazsınız, ancak uydudan daha olasıdır)? Sonra cehennem evet, bu kabartmayı son teslim tarihini karşılamak için gerekli herhangi bir yoldan dışarı çıkarın, bir sonraki pazarlama müdürü muhtemelen farklı bir şirketle başka bir şey yapacak. NE YAPIYORSUNUZ SANAT VE BİLİM - ÖDEME YAPIN.

Arasındaki diğer her şey: pazarlık, özellikle geliştirici ilk destek için kancada olduğu sürece.

İstediğiniz kutsal varlığın ikinci gelişi gerçekleşinceye ve geliştirme uygulamalarını mucizevi bir şekilde tanımlayana kadar, doğrudan yaşam ve ölüm kararlarından sorumlu olmayan herhangi bir projede tartışmaya önemli bir alan olacaktır. tek kullanımlık olması önemsizdir.

Yaşam açısından kritik etiketli en iyi uygulamaların dışındaki her şey genellikle şirket politikası, müşteri spesifikasyonu veya kişisel görüş gibidir. Birçoğu şu anda birçok insanın hemfikir olduğu kişisel görüştür, ancak bu onu tüm durumlar için değişmez bir rehber yapmaz.


2

Şirket için ne kadar para kazandıkları tartışmalıdır. Söz konusu kodu tekrar gözden geçirme seviyesi varsa, bakım maliyetleri artacaktır ve birisi mutlu olmayacaktır. Yüksek uzun süreli bakım maliyetleri, bunu düzgün bir şekilde yapmaktan daha pahalıdır.

Ne kadar saygı gördükleri muhtemelen duruma özeldir. Ancak bir noktada birisi fark edecektir.


2

Bunları önemsememek, şirkete kısa vadede daha fazla para kazandırabilir, ancak şirkete uzun vadede daha fazla hata düzeltmesi ve bakım kodlamasıyla daha fazla paraya mal olabilir .

Bazen rakip firmalarla aynı ürünleri pazara aynı anda almak için acele edilirse hızlı ve kirli bir iş gerekebilir, ancak bu tür eylemlerin gelecekteki maliyetleri dikkatle düşünülmelidir.


2

Her şey müşteriye bağlıdır.

Hızlı ve kirli (ve genellikle daha ucuz) seven bir müşteri, gelecekte sorunlara yol açacağını umursamıyor.

Kabin yapısını düşünün.

Bazıları kaliteli ve özel dolapları ödeyecek ve takdir edecektir. Ahşap çekmecelerin ve birinci sınıf donanımın ekstra masrafını umursamıyorlar. Bir şeyleri inşa etmenin ve kurmanın fazladan bir hafta hatta bir ay süreceğini umursamıyorlar.

Birçoğu olmayacak. Birçoğu büyük bir kutu dükkanından aldığınız ucuz yonga levha seri üretilen şeyleri tercih edecektir. 2 gün içinde kurulmasını istiyorlar. Burada küçük bir boşluk var ve mükemmel kabul edilebilir. 10 yıl içinde ayrılacaklarını umursamıyorlar.

Dolayısıyla, yöneticileriniz hızlı ve kirli hale getiren geliştiriciyi övüyorsa, müşterileriniz yüksek kalite istemez veya yöneticiler müşterilere yalan söyler.

Sadece zaman gösterecek. Yöneticilerin istediklerini yapın veya başka bir iş bulun.


1
Tabii ki yazılım destek ile gelebilir, bu yüzden her ikisini de yapmak bir seçenek olabilir. Ancak biz kazandığı paranın gelecekte düzeltme sorunları vb bize sağlayacak bu formu yani biz bilinen sorun rağmen v1 ile pazara ilk olacak
jk.

1

Hayır asla. IMO kod optimizasyonu, en iyi uygulamalar, gerçek işçilik vardır EN bir kod temeli olması gereken en önemli şey; onsuz her şey çamur haline gelir ve koli bandı ile birlikte tutulur. Sürdürülemez bir tasarım. Bir tümörü görmezden gelmek gibi çünkü küçük ve şimdi sağlıklısın; eminim şu anda sağlıklısınız ama yoldan birkaç yıl sonra terminal haline geliyor çünkü çok uzun süredir yok saydınız.

Sadece do not değil bunlar umurumda değil geliştiriciler katılıyorum ama ben sıfır saygı boot onlar için. Orada ne kadar kısa bir süre kalsam da bir organizasyondan ayrılmayı düşünmemin kesin bir yolu, umurunda olan tek kişi (tüm şirketteki tek kişi olmasa bile) benim olduğum bir ekiple çevrelenmektir. uygun yazılım mühendisliği kavramları hakkında.


1

İyi bir okuma: http://www.joelonsoftware.com/items/2009/09/23.html

Ama IMHO, en iyi uygulamalarından biri, başka bir adamın kabusu. Ve önemsiz olmayan her kod tabanı, bir yabancı için kabus olacaktır.

Ne düşünüyorsun, bunun için bir pislik olma.

EDIT: Ben herhangi bir tarafa yaslanabilirsiniz göreve bağlı olarak, pozisyonların hiçbirini savunmuyorum.


"En iyi uygulama" IMO'ya bağlıdır. Testlere sahip olmak (mutlaka TDD değil, genel olarak otomatik testler), SOLIDilkeleri takip etmek , tasarım desenlerini kullanmak, soyutlama / arayüz kullanmak gibi şeyler, herhangi bir yetkili geliştiricinin yapması gereken temeldir.
Wayne Molina

Testleri sevdiğim kadar ... bunlar temel değil.
CaffGeek

1

Şirket için daha mı iyi? Değişir.

Sınırlı fonları olan bir başlangıç ​​için, bunu halledin ve oraya götürün - dağınık olup olmadığı önemli değil, daha fazla kaynak olduğunda daha sonra düzeltilebilir.

Yazılımın kalitesine güvenen çok sayıda kullanıcının bulunduğu olgun bir ürün için, her şey "uygun şekilde" yapılmalıdır.

Bireysel geliştirici için daha mı iyi? Aslında alakasız. Sadece meslektaşlarınızın yaptığı ile aynı şeyi yapın ve yönetimin serpinti ile başa çıkmasına izin verin - bu sizin işiniz değil. Her zaman başkalarının saçmalıklarını düzeltirseniz, yavaş olarak görüleceksiniz ve diğerleri yukarıda yükseltilmişken hala orada olan siz olacaksınız. Programa geçin ya da bu kadar kötüyse dışarı çıkın.


"Dağınık olup olmadığı önemli değil, daha fazla kaynak olduğunda daha sonra düzeltilebilir." Teoride elbette. Pratikte bu asla gerçekleşmez, çünkü bir şeyleri ittikten sonra onu korumak ve yeni şeyler eklemek zorunda kalırsınız, böylece geri dönüp düzeltmek için hiçbir zaman kaynağınız olmaz.
Wayne Molina

Katılmıyorum. Kesinlikle katıldığım birçok küçük-orta ölçekli web projesinde oldu ve ayrıca şirketlerin geri dönüp kod tabanlarını büyük yollarla yeniden düzenleyen birçok ünlü örnek var - örneğin, Ruby'den Scala'ya geçiş, Facebook ve PHP dilini optimize vb. Aslında, eminim her gün kullandığımız başarılı olgun uygulamaların (web ve masaüstü) çoğu v1 ataları ile ortak çok fazla kod yok.
timh

Belki de, ancak altı yıllık kurumsal gelişimde, zaman içinde kodu yeniden düzenleyebilen bir şirket buldum; başka her yerde kod yönetilemez olsa bile "kırılmayan şeyleri düzeltmek" için hiçbir zaman kaynak yoktu.
Wayne Molina

0

Geliştiriciye ve projeye / duruma bağlıdır.

Olağanüstü zamanlar olağanüstü önlemler gerektirir.

Yani şimdi teslim edilen bir şeye ihtiyacım varsa ve birileri en son moda sözcük çerçevelerinden en az 14 tanesini kullanan aşırı mühendislik kurumsal sınıf java uygulamasıysa, basit bir python betiği işi yapacaksa köşeleri kesen ve düşünen geliştirici kadar kötüdür. buggy kodu normal zamanlarda yapacak.

Geliştirici olmanın bir kısmı esnek olmaktır. Aletlerinize köle olmamalı ve uygulamaları körü körüne takip etmemelisiniz - her zaman sizi başarısız kılacakları bir durum olacaktır. Kuralların ne zaman kırılacağını ve büküleceğini bilmek, çok fazla deneyime sahip ve değerli olan şeylerden biridir.

Sizin durumunuzda - hız kritik öneme sahip olduğundan, sizden daha fazla değer sunarsa, artan bakım maliyetini hesaba kattıktan sonra bile, daha iyi bir tazminatı hak eder. Diğer yandan - eğer onun karışıklık temizlik ile sıkışmış - yönetimi ile bir iletişim sorunu var.

Durum bazındadır. Kodlama stili hariç - orada mazeret yoktur.


0

Özür dilerim, ancak bu sorunun cevabının üst kısmı hariç çoğu ile aynı fikirde olmam gerekir.

Yazılımın birincil değeri esnek olmasıdır.

Ben sadece neden olmadan başkalarının kodunu yeniden yazmak gerektiğini sanmıyorum. Özelliğinizi uygulamak için herhangi bir nedenden ötürü bir modülü değiştirmeniz gerekiyorsa, şimdi, o modülün sahibisiniz. Değiştirin, bir kısmını yeniden yazın, hepsini yeniden yazın.

Esneklik açısından asla düşük kalite üretmeyin. Yazılımda hiçbir şeyi atmak diye bir şey yoktur. Müşteri geçici olduğunu söylüyorsa ve belirli bir tarihten sonra buna ihtiyaç duymayacaksa ve kaliteyi umursamıyorsa, ya "kötüye" deyin ya da kodun sizin veya başka bir programcı tarafından bir kez değiştirilmeyeceğini yazın. üretime konuşlandırılır ya da onları dava etme hakkına sahipsiniz.

Bu cevapların bazılarında gördüğüm en kötü varsayım, bazı temiz kodların bir şekilde geliştirme hızını azalttığıdır. Herhangi bir maddenin (6 saatten fazla çalışma) herhangi bir projesi için temiz kod, uzun vadede (bir haftadan fazla herhangi bir şey) gelişmeyi hızlandırır. Tekrar tekrar gördüm.

Düşük kalite kodu, mesleğe ve iş arkadaşlarınıza saygısızlık eder. Üzgünüm ama gerçek.

Yani esneklik açısından kalitesizliğe hiç hayır!


1
Asla asla Deme. Tüm uygulamalar çöp kutusuna atılır. Bir sistemden diğerine veri dönüşümleri bir kez kullanılır ve çürür.
JeffO

Kodu sık sık temiz tutmak kısa vadede geliştirme hızını biraz düşürür . Önemli olan, kirli kodun uzun vadede çok daha fazla azalmaya neden olmasıdır. Bundan bahseden birkaç cevap daha görüyorum.
Ixrec
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.