Programlamada zararlı ayarlamalar


97

Merak ediyorum, programlamada ne tür bir cazibe projenizde gerçekten zararlı olduğu ortaya çıktı?

Mesela bir şeyi yapma dürtüsünü hissettiğinizde ve bunun projeye fayda sağlayacağına inanıyorsanız ya da başka bir şey olduğuna inandırmak için kendinizi kandırıyorsunuz ve bir hafta sonra gerçek sorunları çözmediğinizi, bunun yerine yenilerini yarattığınızı veya En iyi durumda, iç canavarınızı gözle görülür bir etkisi olmadan memnun etti.

Şahsen ben kötü kod kırıcı değil çok zor buluyorum. Birçok kötü eski kodla çalışıyorum ve yeniden yapılandırmamın hiçbir şeyi bozmadığına dair hiçbir test yapmadığımda dokunmamaya çalışmak için derin nefesler alıyor.

Kullanıcı arayüzünde benim için bir başka şeytan, tam anlamıyla, UI düzenini değiştirmek için saatler harcayabilirim çünkü yapmaktan zevk alıyorum. Bazen kendime kullanılabilirlik üzerinde çalıştığımı söylüyorum, ama gerçek şu ki sadece etrafta hareket etmeyi seviyorum.

Programcılığın şeytanları neler ve onlardan nasıl kaçınıyorsunuz?


19
Sorunuzun ikinci kısmına kimsenin cevap veremediği için mizahi buluyorum - "[ve] onlardan nasıl kaçınıyorsunuz?".
Craige

3
Kimse bütün gün SE'de bunun en önemli soru olduğunu fark etti mi?
msarchet

"... UI düzenini değiştirerek saat harcayın ..." için +1, bu tuzağa çok sık düştüm.
07:

Yanıtlar:


67

Erken genelleme benim büyük böcekimdir; Sorunu ilk önce ele almak ve genel dava için çözülmesi gereken bir gerçek var olana kadar beklemek yerine, her zaman genel davanın önüne çıkarım ve olması gerekenden daha karmaşık bir ton kod yazarım.

Güncelleme:

Ayrıntılı bir açıklama için " Sin # 1 - Erken Genelleme " bölümüne bakınız.


6
Mimari astronotlar bunu yaptığında nefret ediyorum!
ozz

13
Ah, meta

+1 "Harika tasarımcıların yaptığı bir araştırma, değişiklik beklemede hepsinin iyi olduğunu buldu" (Code Complete 2). Ne tür değişikliklerin muhtemel olduğunu söyleyebilmek iyidir. O zaman daha genel bir vakayı daha erken çözerek kazanılacak bir şey olup olmadığına karar verebilirsiniz - daha sonra zaman kazanıp kazanmayacağına. Bazen buna değmez, daha sonra kodu değiştirmek kadar kolay olur.
MarkJ


1
Bu. Güzel, genelleştirilmiş ve yeniden kullanılabilir bir kod yaratmanın çok tatmin edici olduğu gerçeğini, özellikle de sorunun kendisi çok zor olmasa ve / veya daha önce yaptığınız şeylerin tekrarı olması durumunda suçluyorum. Örnek olarak, genel CRUD veritabanı işlemleri (UI, kullanıcı eylemine cevap, DB ile bir şeyler yap, thar).
Cthulhu

197

“Buna geri dönüp daha sonra düzelteceğiz. Şimdi çalışmasına ihtiyacımız var!”


16
Bu mutlak şeytan.
alesplin

6
Yapabilseydim sana bunun için +100 verirdim. "Sonra" ASLA OLMAYIN. İlk seferinde işleri doğru yapın ya da hiç yapın.
Çabuk_şimdi

12
Bu, kötü kodu tekrar gözden geçirerek geçirme saatlerinin tamamlayıcısı değil mi? Dünyayı "daha sonra düzeltecek" ancak yapmayan programcılara ve ilk kez doğru şekilde almaya çalışan programcılara bölüştürebiliriz, sonra "kötü kodu yeniden kodlayarak" saatler harcayabiliriz.

6
"Geri gelecek ve bu sonraki yinelemeyi düzelteceğiz" olarak tekrar ifade ediyor ve çok daha yapılandırılmış geliyor
Chris S

4
Bunu yapmalısın . Tüm zamanınızı mükemmel hale getirmek için harcarsanız asla gemi olmaz. Projeyi bitirin , sonra parlatın.
Zan Lynx

105

Son başvuru tarihi çok uzak, yapmak için fazlasıyla zamanım var, neden internette gezinmek için biraz zaman harcamıyorsunuz?


72
"web" yerine "programmers.stackexchange.com" :) ile değiştir
davidhaskins

1
İnternette okumaya değer başka bir şey var mı? Başka bir şey olduğunu unutmuştum!
James McLeod

3
aka 'Kahretsin, Minecraft'
johnc

1
@david, bu web üzerinde sadece başlangıç ​​noktasıdır - soru ne kadar

Diyorum ki, bu artık çevik olmaktan dolayı geçerli değil.
vartec

103

“Bu sadece çöpe atılmış kavram kanıtı kodu. Bundan hoşlandıklarında, gerçekten iyi olacağım.”


13
Buna Hızlı Uygulama Geliştirme denir; ve asla bir iş ortamında çalışmaz. :)
John Kraft

12
Bunun benim için başka bir yolu olması komik - tam olarak gerekli olan şey olsa bile kendimi fırlatma kodu yazamıyorum.
Dan

6
Finans alanında çalışıyorum ve RAD hala güçleniyor, özellikle VBA / Excel gibi. Yine de bir püf noktası var, RAD özensiz demek zorunda değil.
Ian

5
Ve bazen iki yıl geçirdiğiniz uygulama, rüzgârları fırlatan kod olma rüzgârı olarak alıyor çünkü merdiveni daha yükseğe çıkaran biri "ah, bunu yapamayız" ya da "boşver" gibi bir başka versiyona karar verdi.
PSU

12
Bu. Ben: "Bu sadece benim kavram ispatım. Eğer hoşuna giderse, üretim versiyonunu yazacağız." Yönetici: "Sürümün çalışıyor, gönderelim!" Ben: "Eh, tüm kullanım ca'larını kapsamıyor ... zaten yolladın, değil mi?"

74
  1. Üstlenmeden yayınlanmadan önce birkaç gün kodunun bir kısmını.
  2. İnternet: En büyük dikkat dağıtıcı şey.
  3. Yeni teknoloji : Ellerimi yeni teknolojiden uzak tutamıyorum.
  4. Optimize et: Optimize et, Optimize et. .. ve daha fazlası Optimize Et
  5. Mükemmellik : Koddan asla tatmin olmadım.
  6. TODO: Asla yapılmayacak zaman todos.
  7. Zaman tahmini: Pek çok Başbakan bunu "tahmin" olarak kabul etmiyor. Gerçek olarak kabul ediyorlar.
  8. Sözler: Çok fazla söz vermek.

1
Bir zamanlar büyük bir odada 100 kişilik bir projede çalıştı ve sadece 2 paylaşılan bilgisayarda internet vardı. Verimlilik çok yüksekti. Yönetim herkese internet verdi ve iş çıktısının neden yarıya indirildiğini merak etti.
hızla_ben

2
İlgili Zaman Tahmini ... çok yöneticilerin yanı götürün müzakere başlangıç noktası (bir fiyata pazarlık gibi). Bunu yanlış yönlendiren, ama aslında ortalamanın üstünde olanlar ...
dbkk

@quickly_now Ağı kesmek, muhtemelen veri girişi veya rutin düzeltmeler gibi sıradan işler için çalışır, burada hiçbir şey aramanıza gerek kalmaz. Sıra dışı şeyler için (örneğin, API belgelerini / örnek kodları aramak), Google arkadaşınızdır - kendi başına çözmeniz 5 kat daha fazla zaman alır. Ayrıca, eğer insanlar motive olmazlarsa ve dikkati dağılmayı istiyorsa, yollarını bulurlar.
dbkk

@ dbkk - evet bir noktaya kadar. Hepsi Ada’daydı, aranacak API yoktu, özel donanım ve ulusal güvenlik sınıfına girdi. Sınıflandırılmamış internete bağlı makineleri o ortama sokmak da bir güvenlik kabusuydu.
çabucak_ben

55

Mevcut çerçeveler ve kütüphaneler olduğunda, her şeyi şirket içinde inşa etmeye çalışmak için düşen av.


6
Bazen mevcut çerçeveler ve kütüphaneler, IT yasal tarafından büyük kırmızı harflerle Verboten işaretlenir.
Christopher Mahan

22
Ve elbette, bunun tersi bir cazibe: yabancı bir çerçeve veya kütüphane kullanmak ve ihtiyacınız olanı yapacağını ve her şeyin yolunda gideceğini varsaymak.
Carson63000

"ancak yalnızca yazmak için haftada alacağım ve bizim çerçeve istediğimiz tam olarak ne yapacağız, ücretsiz bir çevrimiçi bir böcek muhtemelen dolu"

2
@Christopher: Öyleyse bu, yeniden yerleştirmek (veya kabul edilebilir lisansa sahip farklı bir kütüphane bulmak) için iyi bir neden olurdu. Ancak çok sık tekrar takma nedeni sadece NIH…
Donal Fellows

@Carson: +1 :-)
Macke

48

Tekrarlayan şeytanlarım: Erken optimizasyon ve mühendislik.

Ve hala onlardan% 100 kaçınamıyorum ...


10
Mühendislik için +1. Bir keresinde .ini dosyaları, XML dosyaları, veritabanı tabloları ve ağ soketleri için "config parametresi bağdaştırıcıları" içeren bir "yapılandırma çerçevesi" yazdım (çünkü herkes bir yapılandırma web servisine ev sahipliği yapmak istiyor, değil mi?)
TMN

8
Erken aşırı mühendislik?
Christopher Mahan

@ Chris “erken mühendislik” de olsa geçerlidir. Diğer cevaplarda da belirtilmiştir . Biliyorum bu benim yasaklarım.
Matthew Scharley

Prematüre aşırı optimize edilmiş mega-mühendisliğe ne dersiniz ...
Newtopian

4
Bu benim. Suçu yönetimde bana serbest saltanat / uzak gelecekteki süreler vererek ve belirli bileşenler için kendime son teslim tarihleri ​​vermeyeceğim.
Cthulhu

46

Aşırı iyimser tahminler

Yöneticiniz size bakarken ve yanma hissinin bağırsaklarınızın söylediğinden daha düşük bir tahminde bulunmadığını hissettiğinizde ... yapmayın!

Sonuçta, bağırsaklarınız muhtemelen çok düşük!


13
Gerçekten o kadar uzun sürecek mi diye sorduklarında , sadece evet deyin ve daha sonra garipliklerini hissedene kadar sessizce oturun ...
PeterAllenWebb

4
Üniversite profesörüm bir keresinde bana "En iyi tahmininizi yapın, sonra ikiye katlayın" dedi. Şimdiye kadar benim için çalıştı.
zzzzBov

2
Alternatif olarak, SMBC yaklaşımını deneyin .
detly

4
Eski patronlarımdan biri geliştirici tahminlerini üçe katladı, ardından müşterilerle ikiye katladı. Müşteriler bir anlaşma yaptıklarını düşünüyorlardı, geliştiriciler bilmeseler bile ihtiyaç duydukları zamanı buldular. Kazan-kazan!
DaveE

2
Kanıta dayalı zamanlama bu soruna yardımcı olabilir: joelonsoftware.com/items/2007/10/26.html
Rei Miyasaka

33

Projenizde bir teknoloji / araç / dil kullanmak, tamamen yeni öğrendiğiniz için.

Ne kadar iyi bir geliştirici olduğunuzu kanıtlamaya çalışmak için.

Yazdığınız kodu kendiniz olarak kabul etmek için.


Sadece her seferinde oy kullanabilseydim. Neyse ki, çözümlerin yarısı oldukça iyi olduğu ortaya çıktı. Yarısı yoktu.
Dan

Ya da henüz hiç öğrenmediğiniz bir şey. Sadece mahmuzlarına takmayı unutma, çünkü uzun bir yolculuk olacak.
Evan Plaice


31

En kötü günaha:

Ah, peki .. Sanırım küçük bir kirli numara / kesmek / düzeltmek zarar vermez.

Tahmin et ne oldu, acıtıyor. :)

git


11
"Ağ Geçidi düzeltmeleri"
Mark C

4
Bir gotoifade kullanmak raptor saldırısı ile sonuçlanacaktır.
Saat

1
@ Maxpm: İyi düşünme! Dahil.
Goran Joviç

1
@Mark C, ağ geçidi düzeltmesi nedir? Gøøgle-fu'm yeterince iyi değil.

1
@ Thorbjørn Ravn Andersen: en.wikipedia.org/wiki/Gateway_drug_theory
Jimmy,


23

Özellik Sürünme

Bir plan yapın, ona bağlı kalın ve dağıtın. Ve sonra geri dönüp insanlar için soruyorsunuz şeyler ekleyin.

Bunu tekrar ve tekrar gördüm. Otur, tasarımını yap ve kodlamaya başla. Kullanıcılar, favori özelliklerinin "eksik" olduğu konusunda kafamın karıştığını saçma duyuyorlar ve bunun için lobicilik yapmaya başlıyorlar. Patronunuz onu 11. saatte eklemenizi talep ediyor, konuşlandırmayı kirletiyor, her yere böcek sokuyor ve 3 ay sonra, herkes yerleştikten sonra, sizden kaldırmanız isteniyor, çünkü kimse neden koyduğunuzu çözemiyor ilk etapta o boktan retro özelliği! Tasarımın geri kalanının anlamsız yaptığını söyleyemez miydin?


Özelliğin donmamış ve imtiyaz olarak açık bırakılması, çünkü ilk PM (şimdi kovuldu) yazılım geliştirme hakkında hiçbir şey bilmiyordu ve tamamen gerçekçi olmayan bir sürüm tasarladı. Şimdiye kadar en kötü fikir.
Evan Plaice

20
  1. Daha fazla özellik ekle

  2. Rekabet bu özelliğe sahiptir. Dolayısıyla bu bir zorunluluktur, dolayısıyla strateji, konumlandırma, vb. Analiz etmekten daha fazla programlama özelliği olmalıdır.

  3. Yarışma bu özelliğe sahip DEĞİLDİR. Yani bu farklılaşan bir özelliktir, dolayısıyla strateji, konumlandırma, vb. Analiz etmekten daha fazla programlamadır.

  4. Bir iş problemini daha fazla programlama ile çözme. örneğin, web sitenizin barındırıldığı linux sunucusunu yönetme konusunda daha fazla uzmanlık, daha fazla özellik programlama yoluyla elde edilemez. Bazen her şeyi C # .Net'e yeniden kodlamak yerine, sorunu nasıl çözeceğinizi öğrenmek zorundasınız.

  5. Pazarlama problemini daha fazla programlama ile çözme. örneğin, Seth Godin’in mor inek kavramını kötüye kullanmak, dolaylı olarak bir “mor inek” yapmak için ürününüze daha fazla özellik programlayarak bir pazarlama problemini çözüyorsunuz. Bazen, sadece mutant bir canavar.

  6. Bu senaryoyu yazarken harcadığınız zamanın gerçekten önemli şeyleri programlamak yerine gelecekte saatlerce geri kazanılacağını savunarak kendinize daha fazla programlama yaparak verimlilik sorununu çözme

  7. Kodlamayı planlıyor ancak henüz kodlamıyorsunuz çünkü “doğru yapmak” istiyorsunuz

  8. Kirli bir sürümü kodlamak ve "daha sonra daha iyi hale getirecek" ancak bir daha "daha iyi yapmak için" geri dönmeyeceğine söz vermek

  9. Bir mockup veya site haritası yapmamak, çünkü "çok zahmetli". Sadece rakiplerin makbuz sayfalarını ve "sonradan" serbest çizim site haritasını çizerim. Ve sonra doğrudan aklımda gördüğüm ilk sayfayı programlamaya gir.

İtiraf: Kişisel olarak 1, 3, 7, 8 hatalar yaptım. Ayrıca 2, 4, 5, 6 da yaptım ama çoğu zaman yapmadığım için kendimi kandırdım.

Şu anda 9 remedyim.

EDIT Sorunun çözüm getirmemizi gerektirdiğini anlamadı.

1) Daha fazla özellik ekleyin Sadece yapma. İşletmeniz, pazarlamanız, kurucularınız, danışmanlarınız vb. İle çalışın ve başvurunuzu sadece 1 şeye soyun.

Twitter, Groupon , vb. Şeyleri nasıl sıyrtıklarını , başarılarını sağlayan tek bir şeyi nasıl okuduklarını okuyun .

Eğer sadece büyük şirketler kurmak istiyorsanız işe yarayacağını düşünüyorsanız, tekrar düşünün. Bu hat için Ctrl + F "Ben yazılım eklemek daha fazla özellik, daha kötü satar. (Bu çoğu yazılım geliştiricilere, söylemek, son derece unintuitive gereksiz olduğunu.)" Bölümünde bu bağlantı

2) Yarışma bu özelliğe sahiptir. Yani bu bir zorunluluk olmalı

1. çözüme bakın

3) Yarışma bu özelliğe sahip DEĞİLDİR. Yani bu farklı bir özellik

1. çözüme bakın

4) Bir iş problemini daha fazla programlama ile çözme.

Size öğretmek, danışmanlık yapmak veya sizin için yapmak için birini işe almanız gerekiyorsa ve nasıl yaptığını belgeleyin, böylece bir dahaki sefere kendiniz yapabilirsiniz. SADECE YAP!! Kodu yeniden yazmayın, GO'yu geçmeyin, $ 200 biriktirmeyin.

5) Bir pazarlama problemini daha fazla programlama ile çözme.

İnsanlar ne sattığınızı anlamıyorsa, bu bir pazarlama sorunudur. Solüsyon 1'e dönün ve dönün.

6) Verimlilik problemini daha fazla programlama ile çözme

Bekle.

Verimliliğinizin, 2 haftadan daha uzun bir süre boyunca belirli bir üretkenlik probleminden muzdarip olduğunu ve bunun 2 hafta daha makul bir şekilde gerçekleşeceğini hissedene kadar bekleyin.

Şimdi, bu sorunu çözmek için bir komut dosyasını programlamak için harcanan zamanı değerlendirin. En kötü tahmininizi almayı ve 2 ile çarpmayı unutmayın.

Tahmininizi saat başı ücretinizle çarpın.

Şimdi alternatif çözümleri inceleyin: dış kaynak kullanımı, kullanıma hazır bir çözüm satın alın, bu konuda hiçbir şey yapmayın, vb.

En uygun maliyetli çözümü seçin.

Bağlı kal.

7) Kodlamayı planlıyor ancak henüz kodlamıyor çünkü "doğru yapmak" istiyorsun

Git egzersiz yap. Kıçınızı motive edecek ve hareket etmeyi planlamanızı sağlayacak endorfinlerin acelesini hissedeceksiniz. Bunu biliyorum çünkü sadece 5x5 tezgah baskısı ve 5x5 ağız kavgası yaptım.

8) Kirli bir sürümü kodlamak ve "daha sonra daha iyi hale getirecek" ancak hiçbir zaman "daha iyi yapmak" için geri dönmeyeceğine söz vermek

GTD’de bir gıdıklama dosya sistemi kurun. ve agresif takip. Kendinize ve başkalarına verilen tüm sözleri takip edin.

9) " Mockup" ya da site haritası yapmamak "zahmetli" olduğu için.

Bir balsamiq maket masaüstü sürümü için USD75 harcayın. Bunu biliyorum çünkü 3 hafta önce aldım. Gerçek dünyadaki çizimim berbat olsa da, maketlerimi yeniden yapmamı sağladı çünkü hepsi 1'de bir sanatçı, mimar ve vizyoner gibi hissediyorum. Balsamiq'te kullanılan yazı tipi bilinçsizce RAD'de size yardımcı olacak taşa ayarlanmamış, sadece bir mockup olduğunu hatırlatır.

EDIT işlemini sonlandır


Bu cevabı + 1'ledim, ancak okumayı biraz zor buldum. İlk 9 puanın içeriğini gerçekten anlamıyorum. Açıklamaya bakar mısın? Yine de güzel iş.

@MattFenwick Merhaba, + 1'iniz için teşekkürler. Genellikle satılacak bir ürün oluşturma senaryosunda uygulanan 1-5. Noktalar, ayrıca en iyi cevabı bulma eğiliminizin önceki teknikte yoğun bir şekilde araştırma yapmaya yönlendirdiği senaryolara da uygulanabilir. Örneğin, araştırmada.
Kim,

6-9 arasındaki puanlar, bir programcının nevrotik eğilimleri ile ilgilidir. Bir tasarımcının bir tasarım çözümüyle ilgili herhangi bir soruna her zaman yaklaşacağını bir yerde okurum (bulamıyorum); pazarlama çözümü olan bir pazarlamacı; ve kod çözümü olan bir programcı. Evet, korkak "Altın bir çekiç varken, tüm gördüğünüz tırnak sendromudur". Bu, özellikle 6. maddede belirgindir) Daha fazla programlama ile bir verimlilik problemini çözme
Kim Stacks,

@MattFenwick eğer adıma karıştıysa üzgünüm. Bu cevabı yazdıktan sonra takma adımı değiştirdim. Arkaplanınızın daha çok araştırmada olduğunu görüyorum. Cevabım, büyük ölçüde, satmak için çözümler geliştirme deneyimimden kaynaklanıyor. Ancak eminim ki, ikimiz de programlama yaptığımızdan beri, çalışma alanımla seninki arasında belirli benzerlikler var.
Kim Yığınlar

17

Birkaç bira daha iyi ve daha uzun süre çalışmama yardımcı olacak.


11
Bekle ... demek istemiyorsun? ( xkcd.com/323 )
Craige

4
@Craige: Profesyonel bir yazılım mühendisi olarak 21 yıllık içme ve 20 yıllık deneyimden sonra hala kalibrasyon bölümünde çalışıyorum.
Adam Crossland

4
@adam, mühendis olman bir yılını aldı mı?

17
Bira içerken kod yazmak, birkaç yıl içinde milyarlarca değer verecek çılgınca popüler sosyal ağlar oluşturmanıza yardımcı olur. Doğru, bunu bir filmde gördüm.
janosrusiczki

1
@Kitsched: Evet! Özellikle de sökülecek başka birinin hazır tasarımına sahipseniz.
Mason Wheeler

16

“Evet, 2000 hatlı spagetti devasa karmaşasını bir günde yeniden canlandırabilirim…”


13
Alternatif olarak: "yazılım veya kodunun yapısı hakkında hiçbir şey bilmeyen yeni adam hiçbir şey yapmıyor, düzeltebilir". Adam, kodun yazıldığı dili hiç kullanmadığında bonus kazanıyor.
wildpeaks

16

“Bunun için test yapmadan geçebilirim. Test etmek çok zor.”

ve bu kötü bir kardeş.

“Testin yazmak veya anlamak ne kadar zor olursa olsun, bunun için bir test yapmalıyım.”


2
Eğer bir test yazmak zorsa, onu doğru programlamayabilirsin :)
Merlyn Morgan-Graham

2
@Merylyn Morgan-Graham, oldukça doğru. Ancak, eşzamanlılık gibi, sınanması zor olan bazı alanlar var.
Wayne Conrad

1
@ Merlyn: Kendinizi bir talimat simülatörü yazarken bulursunuz, böylece bir bağlam anahtarını doğru yerlerde zorlayabilirsiniz, o zaman muhtemelen eşzamanlılık testinizde çok ileri gittiniz. :)
Zan Lynx,

1
@Zan: Katılıyorum - gereken noktada, devs komutunu geri çeker ve kodlarını yeniden yazmalarını sağlamaya çalışır ve beni alay etmelerine izin veririm. Big-O'ya baktığımız, darboğazları optimize ettiğimiz, ham hızdan ziyade verilerin bütünlüğü için eşzamanlılık hakkında düşünmem gerek ve gemi (ve çoğu zaman bunlardan hiçbiri için yeterince hızlı olmadığı için) Kutu).
Merlyn Morgan-Graham

15

Erteleme ve iyimser görev tahmini benim en büyük günahlarım.

Birincisine germe, şınav veya çekmeli (veya herhangi bir diğer fiziksel egzersiz), ikincisini tahmin etmeden önce karamsar bir ruh hali.


Açıklama: "İyimser görev kestirimi" derken, "bokun kolay sendromu" mu demek istiyorsun? :)
Evan Plaice

@Evan Plaice - tam olarak. "Ah, çok önemsiz" gibi ve sonra gerçek kodlamaya başladıktan sonra kodunuzun her harfini googling.
Nikita Barsukov

13

"Çok daha 'dir kolay için' sıfırdan işlevselliği reimplement mevcut kodu anlamak daha iyidir."


2
Evet, c2.com/cgi/wiki?RewriteCodeFromScratch , bunun "Asla Yapmamamız Gerekenler " den biri olduğunu iddia ediyor.
David Cary

Açık kaynak üzerinde çalışmak bu eğilime yardımcı olur. Ben şahsen çapraz gözlerden önce yamalara baktım, sonra devam ettim ve kendi uygulamamı yazdım ancak sadece yama ile aynı olduğunu fark ettim (kodumu geliştirdikten / yeniden düzelttikten sonra bile). İşe yaraması çok komik.
Evan Plaice

10

İçinde bulunduğum projenin çektiği büyük zararlı günaha, 'İç Platform Etkisi'. Bu, artık çoktan gitmiş olan Mimarların, yılda yaklaşık 20 milyon dolar üreten bir projeyi yaratan, ancak güncelleme ve bakımını yapmak için 60 milyona mal olan, sonsuz bilgeliklerine dayandıkları bir yaklaşımdır (açıkça kaba rakamlar ancak bu problemin).


10

NIH - Burada İcat Edilmedi

Üçüncü taraf çözümlere adil bir şans vermek konusunda gerçekten çok zorlanıyorum. Herkes doğal olarak kendileri için tasarlanmayan üçüncü taraf çözümlerine kuşkuyla yaklaşmalıdır, ancak bu konuda% 100 objektif olmakta zorlanıyorum.

Zaman tasarrufu o kadar büyük olabilir ki, 10'un 9'undan 9'unun üçüncü taraf çözümünden kaçınılması durumunda bile çalışacak olanı gerçekleştirecek kadar objektif olmam gerekiyor .


1
Amacını anlıyorum ve sürekli onunla yaşamak zorundayım. Ben, tam tersi bir görüşe sahip olduğum zaman kimi zaman sizin yanınıza bir cevabı hak edeceği bir noktaya geliyorum. Bununla birlikte, bir haftada, yıllardır üzerinde durduğu konuda uzman bir gruptan daha iyi yapabileceğime inanmakta zorlanıyorum. Elbette, söz konusu üçüncü tarafın arkasındaki kişilerin gerçekten de uzman olduğundan emin olmalısınız. Bileşenin çevresindeki çevre hakkında iyi bir araştırma yapılması, benimseme veya kodlama arasında doğru seçim yapılmasına büyük ölçüde yardımcı oldu.
Newtopian

1
@ Newtopian "doğru" bir şekilde kesinlikle ortada bir yerde. Üçüncü parti kütüphaneleri ile Sorunum Yapabileceğim olup olmadığı değil daha iyi zamanın aylar veya haftalar ile uzman bir ekip daha, ama o nadiren , belki hiç ihtiyacımız tam olarak ne olduğunu bir kütüphane. Orada her zaman yapmak adapte ve sonra sık sık kendimi ve diğerleri bir çözüm yazmak kadar bununla kadar zaman güreş harcama bulacak olan tam ihtiyacımız olan şey.
Nicole

Spektrumun diğer ucundan gelen kendim, bu “sadece orta” yı nasıl denemeyi ve elde etmeyi başardığınızı merak ediyordu. Ayrıca, her ikisini de üretkenliğe eşit derecede zararlı olduğundan emin olduğumdan, beni aşırı kullanmama neden olanı anlamaya çalışırken, üçüncü şahısları kullanmak istemediğinizi merak ediyordu.
Newtopian

@Newtopian yukarıdaki açıklamalarımın neden olduğu konusunda mantıklı geliyor mu? Orta noktaya ulaşmaya çalışmam, üçüncü taraf çözümlerini değerlendirirken ve ararken daha objektif olmak için basittir.
Nicole,

9

Müşterilerin fiili veritabanının bir kopyasını analiz etmek yerine, tedarik edilen "örnek verilere" karşı tasarım, kodlama ve veya birim testi. Son tarih kısaydı ve geldiğini söyleyip duruyorlardı ama olmadı. Konuş verildiğinde patlama harikaydı. Gerçekten, bir müşteriden 3 ana müşteriye sahip olmasını beklerdi.

Gerçek verilerin bir kopyasını alıncaya kadar bir daha asla projeye başlayamam .


Henüz bir ürün yoksa, kopyalanacak veri olacak mı?
Svish

Veri yoksa, daima kağıt vardır. Şirket kayıtları da burada yardımcı olacaktır.
burnt_hand

9

Bir yerde bunu yapan bir kütüphane olmalı .

Yakından ilişkili

Eklenti Fetiş


2
Her zaman "yapar" kütüphanesini bulabilirim. :(
Ben L

Kütüphane bulmak kolay
Yerinde

8

Mükemmeliyetçilik öldürür; Muhtemelen en büyük sebep projeler başarılı olamaz.


Bunun doğru olması muhtemeldir, ancak bu nedenle başarısızlığa uğramış ya da geç kalmış bir projede bulunmadım.
PeterAllenWebb

Mükemmelliği nasıl tanımladığınıza ve hedeflediğiniz seviyeye göre değişir.
Svish


7

Yeniden düzenleme yerine yeniden yazma.


Anlaşmak. Yeniden yazmak için gereken çabayı göstermeye istekliysen, yeniden düzenlemek neredeyse her zaman daha iyidir. Hala düşündüğünüzden daha uzun sürecek, ancak yeniden yapılanmayı aşamalı olarak yapıyorsunuz, doğru mu? "Mükemmel" olmadan durabilirsin.
PeterAllenWebb

1
sonuç olarak .... yeniden faktoring yapmak yerine başka bir yere tekrar yazmak. Bizim kod tabanımız aynı şeylerin birçok farklı uygulamasına sahip, herhangi bir tutarlılık elde etmek imkansız.
Newtopian

6

Bunu yapmanın daha iyi bir yolu olması gerektiğini düşünüyorum. "Yeterince iyi" olabilecek bir şeye razı olmayacağım. Mükemmeliyetten daha azını alamıyorum! Genellikle bu, bir problem üzerinde farklı bir perspektife sahip olabilecek başkalarıyla konuşarak veya çözümü farklı bir açıdan görerek önlenir.


5

Her şeyi o noktaya otomatik hale getirmek, aletleri fiili çalışmadan ziyade sürdürmeye harcanır.

Çözüm: tıpkı kod optimizasyonunda olduğu gibi, önce verimlilik darboğazlarını bulun ve yalnızca keşfedildikten sonra onları iyi bir otomasyonla iyileştirin .


Buna prensipte katılıyorum ama pratikte aşırı otomasyon görmedim. Yine de, bu benim deneyimim olabilir.
PeterAllenWebb

4

Programcılığın şeytanları neler?

Bazılarının söylediklerinin dışında.

Önceliklendirme : Projeye ilişkin yüksek öncelikli çalışmayı göz ardı etmek ve ilk önce projedeki diğer şeyler üzerinde çalışmak, çünkü daha ilginçtirler!

Onlardan nasıl kaçınıyorsunuz?

Biraz daha kendine disiplin ile. Cidden, öz disiplin ve doğru olanı yapmak için öz motivasyon bu "şeytanların" çoğundan kaçınmaya yardımcı olur.


3

Henüz müşteriden onay alamadık, ancak son başvuru tarihi yaklaşıyor, işte başlayabilmeniz için işte bazı ön şartlar.

Daha sonra, projeyi comps ile eşleştirmek için projeyi oluşturduktan sonra ...

İşte müşterinin revizyonları, sadece birkaç küçük şeyi değiştirmek istiyorlar *

(* ana işlevsellik tamamen farklıdır)

Daha sonra, sıfırdan başlamak yerine orijinal kusurlu modele dayalı olarak orijinal kodunuzu yeniden düzenlemeye devam edersiniz, çünkü kısa bir son tarih baskısı altındasınız ve bunların son revizyonlar olduğunu varsayalım.

Her zaman bununla biraz ısırdım. Bir web geliştiricisi olarak kaçınılması zor. En iyi tavsiyem, değişiklikleri doğru şekilde yapabilmeniz için daha fazla süre zorlamak.


2
Bir müşterinin imzasını alana kadar gelişmeye başlamadığınız bir politika benimseyin.
Ben L,

1
@Ben: Keşke bu bizim kontrolümüz altındaysa!
sevenseacat
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.