Yönetmeliğin kodun berbat olduğunu söylemenin doğru bir yolu var mı?


70

Kodumuz kötü. Her zaman kötü olarak kabul edilmemiş olabilir, ama kötüdür ve sadece yokuş aşağı gidiyor. Üniversiteden bir yıldan daha az bir süre önce yeni başladım ve kodumuzdaki birçok şey beni inancın ötesinde tutuyor. İlk başta, yeni adam olarak kod üssümüz hakkında biraz daha fazla şey öğrenene kadar ağzımı kapalı tutmam gerektiğini düşündüm, ancak bunun kötü olduğunu bildiğim için çok şey gördüm.

Önemli noktalardan bazıları:

  • Hala çerçeveler kullanıyoruz (querystring'den bir şeyler almaya çalışın, neredeyse imkansız).
  • VBScript
  • Kaynak Güvenli
  • .NET'i kullanıyoruz - demek istediğim, COM DLL'leri çağıran ve kolayca hata ayıklamayı neredeyse imkansız kılan .net sarmalayıcılarımız var.
  • Her şey temelde dev bir fonksiyondur
  • Kod bakımı yapılamıyor. Her sayfa, her yeni sayfa yapıldığında oluşturulan birden fazla dosyaya sahiptir. Ana sayfa, HTML'yi (runat = "server"? Mümkün değil) oluşturmak için temelde Response.Write () bir kaç kez çalışır. Bundan sonra, müşteri tarafında bir çok mantık olabilir (VBScript), ve nihayet, sayfa kendi kendine gönderir (çoğu zaman gizli alanlara birçok şeyi saklamakta zaman alır); Veritabanına veri.
  • Aldığımız özellikler gülünç. Çoğu zaman, Y alanını veya alan Z'yi ne zaman seçeceklerini belirtmeksizin "X alanını Y alanını otomatik olarak doldur veya X alanını otomatik doldur" gibi şeyleri ararlar.

Bunun bir yazılım şirketinde çalışılmamasının bir sonucu olduğuna eminim, ancak yazılım yazan kişilerin en azından kodlarının kalitesini dikkate alması gerektiğini düşünüyorum. Yakında bir şey yapılacağını düşünürsem, yakında büyük bir son teslim tarihi olduğu için yakında bir şeyler yapacağımı hayal edemiyorum, ancak kötü kod yazmaya ve kötü uygulamaları kullanmaya devam ediyoruz.

Ne yapabilirim? Bu sorunları nasıl gündeme getirebilirim? Ekibimin% 75'i benimle aynı fikirde ve geçmişte bu sorunları gündeme getirdi, ancak hiçbir şey değişmedi.


27
alışmak. Yazma kodunun% 90'ı kod okuyor.

7
Hiçbir şey, ilk etapta kötü kod olması nedeniyle aynı sebeple değişmez. Uzun zaman önce bir hoot vermek isteyenlere $$$$ için booku ödemeyi bıraktılar.

11
Bu konu dışı. Ancak kısa cevap şudur: ekonomi. Kod geliştiriciyi düzenlemenin maliyeti kaç geliştirici ayda olacak ve kod geliştiriciyi düzeltmek için kaç tane geliştirici ay kazanacaksınız?
Oliver Charlesworth

89
En iyi yol çıkış röportajında.
kylben

32
Renklerle ilgili körle nasıl konuştuğun önemli değil. Seni anlamayacaklar.
ThomasX

Yanıtlar:


68

Aşırı tepki vermediğinizden emin olun. Sen yenisin, muhtemelen çok fazla başka yerde çalışmadın, ve "gerçek yaşam kodu" dünyasına hazırlanmadın. Gerçek hayat kodu korkunç bir şey. Güzel okul kodunuz ve saplantılı olarak ayarlanmış kişisel proje kodunuz bir nükleer reaktörün bodrumunda seks yaptı ve bebek bir zehirli atık kanalizasyonunda büyüdü; Bu iğrenç bir mutant.

Ancak haklı olduğunuzu ve kodun söylediğiniz kadar kötü olduğunu varsayarsak (yani yalnızca hatalı koddan daha kötüsü), o zaman endişelenmekte haklısınız. Takımınızla konuşun ve başkalarının yanında olup olmadığını belirleyin. Durumu iyileştirmek için çalışacağız - ekibin geri kalanı sorunu tanırsa ama umursamıyorsanız, zamanınızı boşa harcıyorsunuz.

Küçük olmak, muhtemelen liderlik yapacak durumda değilsindir. Kendinizi yönetmeye giderseniz, aynı zamanda genç olan yeni bir işe alım olarak, fikriniz dikkate alınmayacaktır. Lider geliştiricinizi veya en kıdemli üyelerden birini edinin. Yine, eğer yaşlıların hiçbiri ilgilenmiyorsa, zamanınızı boşa harcıyorsunuz.

Bazı üst düzey teknik kişileri ilgilendirebileceğinizi varsayarsak, sorunlu alanları ve olası çözümleri belirlemeye çalışırım. Örneğin, eğer "her şey temelde bir dev işlevdir" ise, bir dahaki sefere bu “dev işlev” de çalışıyorsanız, belki biraz düzeltici olmalısınız. Yine, herkesi yoluna sokman gerekiyor. Eğer probleminizin küçük parçalarından koparsanız ve parça parça ilerletirseniz, bunlar daha az problem olur. Bir kod parçasına her dokunduğunuzda geliştirilip geliştirilemeyeceğini düşünün.

Yönetimle oturmayacak ve 'her şey kötü ve yeniden yazılmaya ihtiyaç duyacaksınız' demeyeceksiniz. Bu onlar için bir anlam ifade etmiyor - çok pahalı ve potansiyel olarak çok riskli. Bunun yerine, sorunların olduğunun ve değişiklik yapıldıkça yavaşça iyileştirilmesi gereken bir planın olduğunun farkında olmaları gerekir. Korunabilir kodun yararları konusunda eğitilmelidirler. Bu sizden değil, teknik ve profesyonel olarak güvendikleri kıdemli bir kişiden gelmelidir.

Yeniden yazma tamamlandı mı? Neredeyse her zaman kötü bir fikir.

Sonunda yapabileceğin fazla bir şey yok çünkü yenisin. Kimse bir şeyleri geliştirmek istemiyorsa, o zaman deneyiminizi toplar ve bir sonraki yere taşınırsınız.


10
Sadece son satır için +1. Yeni başlayanlar kendi deneyimlerini ve başkalarının göremeyeceği kadar kurum kültürüne maruz kaldıkları farklı bir bakış açısı sunsa bile, insanlar genellikle bir acemi dinlemek istememektedir. İnsanlar da gerçeği duymak için kördür (yani, "Her şey kötü, çünkü bunu yapan insanlar yaptıklarını WTF bilmeyen aptallardı") ve gemiye kötü şeyler yapmaktan daha fazla ihtiyaç duymak yerine aşağı inmeyi tercih ediyorlardı. düzeltilmek Bazen iş sahiplerinin kötü şeyleri düzeltmek için zaman ayırmak yerine her şeyi nasıl kaybetme riskini göze alacağı akıl almaz.
Wayne Molina

2
Bu son noktaya devam etmek için, ayakkabılı sistem kendi üzerine çökerse, işlerin düzelme riskini doğuracak kadar çok yer gördüm, bu sorunlar uzak dursa bile, sorunları çözme ve çözme yerine yeni özelliklerde.
Wayne Molina

5
Maalesef, yeniden faktoringe yönelik bir tür “gerilla savaşı” yaklaşımı kullanmak, bazen kendinizi ayağınızdan vurmanıza neden olabilir. Sistem, kendisine karşı yazılmış iyi bir ünite / entegrasyon testine sahip olmadığı sürece (ki bu kötü ise, muhtemelen mümkün olmayacaktır) kaçınılmaz bir biçimde, kaçınmak için QA'dan geçmek için bütün bir sistem testine ihtiyaç duyacak hataların ortaya çıkmasına yol açacaktır.
aceinthehole

1
@ aceinthehole: kesinlikle doğru. Eğer testler pahalı ise, yönetim herhangi bir 'gereksiz' değişikliği riske atmak istemeyecektir;
kevin cline

2
@WayneM ve WTF'yi projenin başında yaptıklarını bilmeyen budalalar artık üst düzey yöneticiler. Asla o kısmı unutma!
HLGEM

58

Oku Joel On Software - yapmanız asla şeyler. Sebepini anlayın, ardından kötü yazılım hakkında ve programcı tarafından değil, yöneticiler tarafından yazılmış nasıl düzeltileceği ile ilgili birkaç makale okuyun. Bu bilgilerle donanmış olarak, yöneticilerin anlayabileceği ve önemseyeceği bir şekilde onu düzeltmek için bir durum sunabileceksiniz. İpucu: İyi yöneticiler, zaman ve parayı yalnızca programcıların yapılması gerekenler hakkındaki görüş ve duygularına dayanarak harcamazlar.

"Bu kod saçma ve yeniden yazma ihtiyacı" teknik olarak doğru olsanız bile kesinlikle size geri atılacak.

"Mevcut proje programından aylarca sürebilir, daha ucuza mal olabilir ve daha güvenilir hale getirebiliriz." onların dikkatini çekecek (bu aşamada bunu yapmak istediğiniz HOW'dan bahsetmediğinize dikkat edin).

Ne dersen söyle, doğru olduğuna emin ol. Kötü olduğunu söylerseniz, yeniden yazma işleminizin kanlı iyi olması gerekir. Bir hafta alacağını söylerseniz, bir hafta olacağından emin olmalısınız ve iyi olmalısınız. Yeniden yapılandıran koddaki herhangi bir kusur size, ne olursa olsun, işi tekrarlamadıysanız, şahsen, çok pahalıya mal olacaktır. Eğer sizden önce biri orada bulunduysa ve mahvoldu ya da bir yeniden yazma sattıysa, pes ederseniz, yöneticiler aptallık yapmaktan hoşlanmazlar ve iki kez olmasına izin vermezler. Bu belirteçle, takip eden adamlar için batırma, sadece bir şansın olacak ...

Maliyeti belirli bir süre boyunca ya da proje sayısı boyunca yaymanın yollarını bulun. Yöneticiler riskten, spekülatif yatırımlardan ve negatif nakit akışından nefret ederler - yöneticileriniz dahilinde bunlara tolerans gösteriniz. Küçük, düşük riskli, düşük maliyetli bir öneri ile başlayın. Doğru olduktan sonra, daha büyük balıklara gidebilirsiniz.


2
komik ... Joel'in sitesini önerdiğim için oy kullandım :-)
Robert French

6
@Robert French: Menajeriniz mesajlarınızı okuyor ...
Dave Markle

8
Şaka yapmıyorum. "Her şeyi yeniden yazmak için 6 aylık geliştirici zamanım olabilir mi? Sonuç olarak bugün elde ettiğimiz tam olarak ne olacak, ama muhtemelen birkaç yeni hatayla tartışacağız." Aynı geliştiriciler, şu an daha iyi bildikleri için yeniden yazmak için şu anki buhar saçmalığını yarattılar. "
JohnFx

3
@ joshin4colours: <quote> Evet, biliyorum, bu sadece bir pencereyi görüntülemek için basit bir işlevdir, ancak üzerinde küçük kıllar ve bazı şeyler büyüdü ve kimse nedenini bilmiyor. Size nedenini söyleyeyim: bunlar hata düzeltmeleri . ... Bu böceklerin her biri, bulunmadan önce gerçek dünya kullanımına haftalar sürdü. ... Kodları atıp sıfırdan başladığınızda, tüm bu bilgiyi atarsınız. </quote>
Martin York

4
Üzgünüz, ancak bir yıllık deneyim, bu iddiaların hiçbirini yönetiminde yapmak için güvenilirlik sağlamaz.
Jeremy

14

Öncelikle, başlangıçta çalışmadığınız sürece ve programcı olarak çalıştığınız sürece orijinal goofy eski kodunu oluşturan siz olduğun sürece aptalca eski şeyleri bulacaksınız. Programlamada kariyer yapmayı planlıyorsanız, bu yumruklarla yuvarlanmanız gerekir.

İkincisi, eski sistemlerin iyileştirilmesi için genellikle maliyet üzerinde önemli noktalar vardır. Örneğin, 10 yaşında VB6 ve hala çalışan klasik ASP uygulamaları olan birden fazla şirket gördüm. Bazı durumlarda, bunun nedeni .NET'i taşımak için büyük bir projenin kötü bir şekilde başarısız olmasıydı. Diğerlerinde, nedeni "kırılmadıysa, tamir etmeyin" idi. Ancak, diğerlerinde, hareketin maliyeti makul olabilir çünkü eski sistemin neden olduğu sorunlar göz ardı edilebilecek kadar büyüktür.

Geçmişte büyük bir başarısızlığın olduğu durumlarda, bir değişiklik meydana getirmek neredeyse imkansızdır. Bu durumda özgeçmişinizi parlatın ve yeni bir iş aramaya başlayın. Bozulmamışsa, muhtemelen kodun kendisinden şikayet etmek için bir nedeniniz olmayacak ancak tatmin edici ve büyüyen bir kariyer yolunda bulunmadığınızdan emin olabilirsiniz. Kırılırsa ve sanki sizin durumunuzdaki gibi ses çıkarır, o zaman değişim şansınız olur.

Gördüğüm en iyi yaklaşım, çok fazla ısırmak değil, en olumlu etkiye sahip olacak artan değişikliklerle başlamak. Açıklamanıza göre, değişiklik isteklerini daha iyi yönetmek başlamak için bir yer olacaktır. Kontrol altına alındıktan sonra bir servis çerçevesi veya diğer artımlı tasarım / kod iyileştirmeleri oluşturmaya başlayabilirsiniz.

Gördüğüm en kötü yaklaşım, doğrudan eski bir sistemden en son ve en iyiye doğru büyük bir adım atmaya çalışmaktır; örneğin, çalışan ancak tıka basa bir VB6 / Klasik ASP / COM + sisteminden MVC / Entity Framework sistemine atlamak.


3
"Her şeyden önce, başlangıçta çalışmadığınız sürece ve programcı olarak çalıştığınız sürece orijinal goofy eski kodunu oluşturan siz olmadan aptal eski şeyleri bulacaksınız." İlk başladığımda ilk programcı oldum. Sekiz ikincisi sık sık kendimi 'bu aptalca kodu kim yazdı?' Diyerek buluyorum, yalnızca suçlu taraf olduğumu kontrol etmek ve keşfetmek.
Teksas'taki Jim

Yinelemenin hızı yinelemenin kalitesini atar. Başka bir deyişle, çoğu zaman küçük değişiklikler yapın ve sonunda olmak istediğiniz yere gideceksiniz.
jasonk

11

"Hey Boss, Büyük Proje'den sonra ben ve takım biraz zaman ister, ideal olarak X ay, kodumuzu düzenlemeyi istiyorlar. Dakikalar içinde yapılması gerekenler saatlerce sürüyor, çünkü hepsi çok dağınık. Büyük Projeden hemen sonra gerçekçi bir program planlamak istiyoruz. ”

(Azkar'ın soru hakkındaki yorumundan kısmen alıntı yapılmıştır)


10
Teorik olarak, bu harika olurdu. Uygulamada cevap, “Hayır, CEO Another Big ProjectX ayda yapmak istiyor” şeklinde bir cevap olurdu . veya "Hemen yapılması gereken yeni özelliklerimiz var, zaten neyin işe yaradığını düzeltmek için zamanımız yok"
Wayne Molina

2
Bu nadiren (hiç) çalışır. Özellikle bir süredir etrafta olan bir menajeriniz varsa, çünkü bu hattı daha önce sadece patladığını görmek için duyacaktır.
taylonr

1
Bu sadece beni kıkırdatır. Asla tam olarak tekrar programa giremezsiniz. Potansiyel olarak yapabilecekleriniz, her bir alt projede bazı alt sistemleri geliştirmek için daha küçük görevlere sahip olmaktır, böylece sonunda (birkaç yıl boyunca) teknik özelliklere getirilir.
Martin York

Tecrübelerime göre, bu yaklaşım sıklıkla reddedilir. Alternatif bir yaklaşım, birden fazla Büyük Proje tahminini 1.5'e çıkarmak ve kodu yol boyunca temizlemek için zamanın 1 / 3'ünü harcamaktır.
JBRWilkinson

2
Çok sık rastlanan bir cevap "Bunu yaparak maaşınızı kim finanse edecek?" Görevin doğrudan sponsorluğu yoksa, şirketin uzun vadeli yatırım yapmasını istemeniz gerekir. Yoksa bunu yaparken bedava mı çalışacaksın?

7

Joel in Software'i okumaya başla (Joel Spolsky / Stack Exchange Kurucusu) ...

Yapacağım ilk şey bir Joel Testi yapmak .

Bu, “Bir geliştirici olarak geliştirmenin yollarını ararken… Geliştirme ortamları hakkındaki bu 12 soru testine rastladım, eğlenmek için onlara çalıştığım yer hakkında cevap verdim.” Olarak sunmanıza izin verecek. ... Bu da kişisel olarak sizin kodunuzla neyin yanlış olduğunu ana hatlarıyla gösteren bir üçüncü taraf yapar.

Pragmatik Uygulamalar hakkında daha fazlasını okuduğunuzda, kendinizi geliştirecek ve kırmızı / yeşil / refactor gibi şeyleri uygulayacaksınız ve bu da sırayla kod tabanını temizleyebilmenizi sağlayarak bakımını sağlar. (mesai)

Umarım yardımcı olur! Programlamaya hoş geldiniz (yesterdays kodu genellikle berbat) ;-)


4
Bunun yönetime nasıl yaklaşması gerektiğini ele aldığını sanmıyorum.
Pubby

3
Görünüşe göre Azbar sorunu biliyor ve nasıl düzelteceğini biliyor, ancak topun nasıl döneceğini bilmiyor, böylece düzeltilebilir.
Pubby

1
Evet ... Sunarken üçüncü bir tarafın bakış açısını kullanmanızı öneriyorum. Özellikle patronuyla nasıl konuşacağını sorduğunu düşünmedim.
Robert French,

4
Bu cevap pek fazla aşağı oyu hak etmiyor. İlk cümle +10 hak ediyor. Yaklaşan yönetimle ilgili sorun, kendileri için neyin önemli olduğunu anlamak Joel ve bu cevap, iş perspektifinden kodun yeniden yazılmasının nedenleri ve neden olmadığına bakarak bu tür bir sorunu ele almaktadır.
mattnz

1
@Robert French +1 iyi bir cevap için. Azkar'ın teknolojinin yanı sıra bu işi de ayakta tutması önemlidir. Nitelikli bir 3. kişinin gözlemlerinden kendi görüşünü oluşturmasını önermek Azkar'ın geliştirici olarak gelişimine yardım edecektir, sadece bir kodlayıcıya değil. Ayrıca, PB&J hikayesi komik.
bakoyaro

7

Hızlı ipucu: nedenlerinin listesi ile yönetimini teklif yoksa neden daha farklı kod gereken bir argüman "Geliştirilmiş moral / programcılar için çalışma koşulları" olarak sayılabilir.

Teknik ekibin şu anki karmaşadan daha fazla içerik yazıp temiz kod tutacağını açıkça belirtin ve bu kesinlikle işe karşı tutumunuzu artırabilir. Yararlı bir argüman olabilir.


kesinlikle iyi bir fikir ve aynı zamanda çok doğru
sdm350

5
  • Yönetim aslında tasarımı dikte ediyor mu? Arkandaki takımın çoğuna sahipseniz, sizi durduran nedir? Proaktif olun ve grup olarak karar verin. Artımlı olarak uygulamak için bir plan ile gel . O zaman yap.
  • Yönetim, kullandığınız geliştirme araçlarını belirler mi? Bir takım yönetimini değiştirmek için bir zaman maliyeti olmadığı sürece, genellikle umursamıyor. Proaktif olun ve hangi geliştirme araçlarını kullanmak istediğinizi grup olarak belirleyin. Yönetimden satın almanız gerekiyorsa, onlara bir göç planı ve maliyet avantajı analizi gösterin . O zaman yap.
  • Yönetim, kullandığınız dilleri belirler mi? Proaktif olun ve VBScript yerine ne kullanılacağına grup olarak karar verin. Artımlı olarak uygulamak ve yapmak için bir plan yapın. Yönetime ihtiyacınız varsa satın alma planlarını gösterin. O zaman yap.
  • Teknik özellikler için hiçbir şeyim yok. Bu genellikle işinizdeki insanlara ve süreçlere bağlıdır. Neyin kırıldığını ve süreci düzeltmek için gereken asgari değişikliklerin belirlenmesi, şu anda işlerin nasıl yürüdüğünü ve nasıl çalışması gerektiğini analiz etmek ve anlamak zaman alır. Biliyorsanız bir plan ile gelip yönetimi ikna etmeye çalışabilirsiniz.

Çok fazla adanmış zaman içermeyen bir değişim yolu önerdiyseniz , bunun için gösterilecek (ya da yumuşak) ticari değeri olmayan daha fazla değişim ve saygı alırsınız .


Evet / Evet / Hayır. Dil ve araçların seçimi nadiren teknik nedenlerden dolayı yapılan bir seçimdir. (bakınız: parashift.com/c++-faq-lite/big-picture.html#faq-6.5 ) Şirketin başlangıçtan beri sahip olduğu araçlardır. Bir şirketin veya ekibin yeniden kalıplanması, üretkenlikteki düşüş nedeniyle gerçekleşmesi pek mümkün değildir.
Martin York

1
Artımlı olarak planlamak ve uygulamak için +1. her şeyi yeniden yazmak sadece başarısızlık istiyor. Zamanla küçük kazançlar güven yaratır. Özelliklere gelince ... bir programcı olarak aldığınız özelliklerin çoğu, onları hassaslaştırma görevimizden yoksun olacak. Arada bir, iyi özellikleri yazan biri tarafından şımartılıyorsunuz. Genellikle programlayıcıya gelince hızlı bir şekilde daha iyi bir iş bulmak / terfi ettirmek / bulmak.
SoylentGray

@Loki Astari: Bulunduğum firmaların çoğunda, revizyon kontrol sisteminden, çerçeveden, gelişim sürecinden diline kadar değişikliklerden geçtim. İhtiyacınız olan tek şey, değişimin maliyetinin ve faydalarının ne olacağını ortaya koymaktan daha makul bir plandır. Sadece nadiren yapıldığından, yapılamayacağı anlamına gelmez.
dietbuddha

4

Tecrübeden konuşma: Kolay değil. Bu neredeyse imkansız. Yönetim, kodun berbat olduğu ve büyük olasılıkla daha fazlasıyla tamamen cahil olduğu ve / veya karşı karşıya kaldığı sorunların ipucu olmadığını umursamıyor ya da uzun zaman önce düzeltmiş olacaklardı ve bugün onunla sıkışıp kalmayacaksınız. Yapabileceğiniz en iyi şey, kodun emdiği nedenlerin bir listesini yapmak ve ardından yeniden düzenleme / yeniden yazma işleminde gerçek işletme değerini göstermek için neden emrettiğinin nedenidir .

Bir örnek "Kod bakımı yapılamaz" olabilir:

Geçerli kod, X , Y ve Z nedeniyle sürdürülemez (neden elde edilemez olduğunu gösteren sebepleri listeler). Bu, değişiklik isteklerini ve yeni özelliklerin yapılmasını çok zorlaştırır, çünkü X , Y , Z (değişiklik yapmanın zor olmasının nedenleri). Değişiklikler zor olduğundan, geliştirme ekibi hata düzeltmelerine ve iyileştirmelere kolayca yanıt veremez.

Tek umudunuz, patronunuzun ve üst düzey yöneticinizin, kod için hangi sonuçları doğuracağını anlamak için çok aptalca olmadığı ve sorunları ele almak için yeni özellik istekleriyle ortaya çıkmayı bırakmaya istekli olduğudur, aksi halde çabalarınız boşuna gidecek. . Geçmiş deneyimlerden bahsetmişken, kodda yanlış bir şey görmeme ihtimalleri çok yüksektir ve / veya iş arkadaşlarınız endişelerini yönetime iletemeyecek kadar çaresizdir.

İyi şanslar. Buna ihtiyacın olacak.


2
Kabul ve "sürdürülemez" de bir dereceye kadar işe yarar. Birçok yönetici için (özellikle teknik altyapıya sahip olmayan) çalışma kodu, bakım koduna eşittir. Aksini iddia edersen, gözlerinde beceriksiz olarak bile görülebilir.
MaR

3

"Üniversiteden yeni çıktım" - sorunuza cevap vermeliyim.

Yönetim muhtemelen orada kod alt optimal olduğunu biliyor. Çoğu kod, Ray Gosling, Guido Van Rossum veya bir başkasının yazması için gerçekten iyi ve pahalı bir işe almadığınız sürece geçerlidir.

Yönetim ayrıca şirketiniz için geçerli olan "işler" tanımını kullanarak çalıştığını da bilir (Kaza yapmaz, satmaz, raporları ya da başka bir şey vermez).

En düşük maliyetle "çalışmakta" kodunu korumanızı istiyorlar. Pahalı bir projenin her şeyi yeniden yazma teklifini istemiyorlar.


İlk çizginiz gençlere karşı tamamen önyargılı. Birincisi, HIS deneyimini bilmiyorsunuz, bu nedenle sorusuna cevap bulamıyorsunuz. Ve bu şekilde genelleme, gençlere karşı son derece önyargılı olmak! Yaklaşık 20 yıldır bu işteyim ve 'kıdemli cahillerden' daha bilgili 'yeniler' gördüğümü garanti edebilirim.
Jeach

Gençlere karşı tam olarak önyargılı değil, ama belki de bir süredir çalışan meslektaşlarının tecrübelerini ve üstün bilgilerini kabul etmeli? Hepsi beceriksiz yaşlı Wallies olamazlar.
James Anderson

2

İş vakası yapmak neredeyse imkansızdır, çünkü teslim edilebilir durumunuz zarif bir kod değil çalışan bir yazılımdır (zaten sahip oldukları).

Yazılımda, ilk olarak özelliklerle pazara girmenin büyük bir fırsat maliyeti olduğunu da ekleyelim. Bunu gerçekten düşünüyorsanız, yatırımın uzun vadeli geri ödemesi garanti edilmez.

Bununla birlikte, yönetilebilir ısırıklar boyunca küçük şeyleri yeniden düzenlemek ve düzeltmek için hala iyi bir plandır (iyi bir VSS almak gibi). Sonuçta bu bir teknik değil, teknik bir konudur. Sadece verdiğin şeyi yerine getirirken yapman gerekenleri yap, iyi olacaksın. Yönetim, muhtemelen güçlü bir dava açsanız bile kod kalitesinin nitritli kumlu detaylarıyla ilgilenmeyecektir.


2

Sadece olabildiğince çabuk ayrıl (belki bir iş hunisi gibi görünmek istemediğin zaman çoktan ayrılma). Kodladıkları gerçeği bir karmaşa ve insanların orada kalması, muhtemelen zayıf geliştiricilerle çalışmakta olduğunuz anlamına gelir. İşlerini önemseyen herhangi bir iyi geliştirici, böyle bir saçmalık üzerinde uzun süre çalışmaya devam edemez.

Yeniden yazma şansı, çok net bir şekilde ortaya çıkmadıkça, oldukça düşük bir oranda meydana gelme şansı, yatırımın akıllıca yapılmaya değeceğini gösterir.


Bu, sonuçta, gerçek eylemin tek yolu. Daha önce de söyledim, tekrar söyleyeceğim: Akıllı geliştiriciler, neden her zaman iyi kod yazmanın ve iyi kod sağlamak için gereken zamanı ayırmanın önemli olduğunu anlayan akıllı şirketler için çalışıyor. Berbat geliştiriciler, herkesin yığına daha fazla çamur eklemeleri ve hatta şu anki görevinizle doğrudan ilişkili olmayan yeniden düzenleme kodunu boşa harcamalarını görmek için "görevlerini yerine getirmeye" odaklandığı berbat şirketler için çalışıyor zaman". Kendinizi akıllı bulursanız, bu yerler için çalışmaya değmez.
Wayne Molina

1

Yönetim kodu umursamıyor. Satmak için bir ürüne sahip olmayı önemsiyorlar.

Eski sistem gerçekten, gerçekten kötü ise ve ekibin çoğunluğu için saçma bir miktar ek yük ekliyorsa (çoğunluk diyorum çünkü her zaman büyük parçalara ya da hepsine kodlanmış bir adam var ve bunun arkası gibi biliyor). Elini) sonra onlara yaklaşmak ve geliştirme zamanında iş parasına mal olduğunu ve müşteri memnuniyeti ile etki yaratacağını söylüyor.

Ancak bir kez daha, kodları hala önemsemiyorlar, bir ürünü önemsiyorlar, bu yüzden cevap onları "Evet yapalım" diyebilse de, bir yöneticinin iznini almadan kodu düzeltebilirsiniz. Denize düşmeyin, önce takımla konuştuğunuzdan emin olun, hiç kimse gelmeyi sevmiyor ve 3 ay süren bu işlevi kullanmayı deniyor, şimdi çalışmaz görünüyor çünkü kullanım dışı kaldı.


Sizin de ima ettiğiniz gibi ... Kodu geliştirmek için yapabileceği bir şey olmalı. Hepsi tek bir dev işlevi ise, bunun hakkında yapabileceğiniz şeyler var. Source Safe'den bile şikayetçi olması komik. Source Safe ile ilgili yanlış olan bir şey yok, yıllarca kullanıldı, bugünün dünyasında bir anlam ifade etmeyen, ancak bu bir bakış açısı olabilir.
Ramhound

SourceSafe'in kendisinin mesele olmadığını düşünüyorum, daha iyi ücretsiz araçlar olduğunda sadece "Kutunun dışındaki her şeyi görmezden geliyoruz" ve "Sıradanlık bir kural olarak kalmaktadır." "üstün olanı öğrenmek yerine ürün". SourceSafe kullanıcılarının çoğunun sahip olduğu tutum budur.
Wayne Molina

"izinsiz kodları düzenle" - kırılmayan bir şeyi düzeltmek gibi geliyor.
James Anderson

1
Oturma odam sağlık için tehlike oluşturmuyor, ancak düzenli olarak temizlediğimden emin oluyorum. Çok kırılmayan bir şeyi düzeltmek için bir durum değil, gerekli bir işi yapmak.
Nicholas Smith

0

Yaklaşım yönetimine, kodda büyük değişiklikler yapmanın bütçe etkilerini ve değişiklikleri yapmamanın bütçe etkilerini anladığınızı gösterecek şekilde yaklaşın. Emilio'nun sözlerini sevdim.

"Eski" kodun her zaman korkunç olacağı halde akılda tutulması önemlidir. Bununla, hepimiz sürekli olarak geliştiriciler olarak büyüyoruz. İyi kod yazarız, daha sonra daha iyi kod yazmayı öğreniriz ve önceki "iyi" kod korkunç görünür. Çok sayıda geliştirici sürekli olarak daha iyi hale gelmeye ve uzun vadede daha fazla para harcamayı denemeye yetişmektedir. Bu dengeleyici bir harekettir. Olduğu söyleniyor, gittikçe daha iyi hale gelebilirseniz her zaman harikadır. Bu dev işlevi değiştirmeye gittiğinde, ayır! Sonunda bir yere gideceksin.


0

Yapma

Büyük bir projeyi sıfırdan yeniden yazmak çoğu zaman yine de büyük bir hatadır.


Büyük görecelidir.
Luca,

1
Benim tanımım: 5 gün içinde kendin yazamazsan, o zaman büyük olur.
Cesar Canassa

-1

Yöneticilere özellikle Proje Yöneticilerine kötü kod ve yeniden düzenleme hakkında bilgi vermenin kolay olacağını hiç düşünmedim. Birincisi, size güvenmeleri gerekir, kıdemli bir adam olsanız bile, hala güvenmek için zamana ihtiyacınız vardır. İkincisi, sorunun ne kadar kötü olduğunu anlamıyorlar. Bugün yeni bir sürüm yayınlayacak son günse ve oluşturma başarısız olur. Ne kadar ciddi olduğunu biliyorlar, ancak yapıların başarısız olduğunu asla bilmiyorlar çünkü kötü kod, yetersiz test vb. Gibi birçok sorun var.

Bir web projesinde yapılandırma ve dağıtım görevleri yaptım. Her zaman yeni bir yapı dağıtırken beklenmedik sorunları düzeltmek çok zaman alır. Sorunların çoğu güvenlik ve entegrasyondu (birkaç web / Windows uygulaması arasında). Kodumuz berbat, başkalarının kodu berbat, tamamen spagetti kodu.

Yeni bir sürüm planlıyorduk ve bazı yeniden düzenleme için şiddetle sordum, sadece hataların sıkça gerçekleştiği oturum açma / doğrulama koduna ayrıntı günlüğü ekleyin. Yöneticiler kabul etti, ancak daha sonra sahip olunması gereken bir listeye kondu ve zaten geniş bir özellik listesine ve sıkı bir zaman dilimine sahip olduğumuz için ne yapılacağını bilmiyorum.


-3

İki tür yönetici vardır: Ne yaptığınızı, ne anlamadığını anlıyormuş gibi yapanlar. Yazılımı anlıyor gibi davrananlar size düşman olacaktır. Sadece sizin tarafınızdan rahatsız olmayan olanlar.

Her durumda, yöneticilerin hepsi yalancıdır, bu nedenle başkalarının olduğunu varsaymak için güçlü bir istekleri vardır.

Demek istediğim, yazılımın güncel olmadığını söylerseniz, bunu bir bahane olarak görecekler. Umursamıyorlar.


+1 "yöneticiler tüm yalancılar, bu yüzden başkalarının olduğunu varsaymak için güçlü bir
istekleri

Aynı şekilde -1; hem doğru hem de yararsızdır
Jaap

@ Jaap, iktidar ile sosyal sınıfı sahtekârlıkla ilişkilendiren çok sayıda çalışma var. Bu -1'inizi geri çekeceğiniz anlamına mı geliyor? Örnekler: msnbc.msn.com/id/35836844 blogs.discovermagazine.com/notrocketscience/2010/04/27/... news.sciencemag.org/sciencenow/2012/02/shame-on-the-rich.html
Joe

İkinci çalışma özellikle tam olarak noktamı doğruluyor.
Joe

1
@Joe: Bağlantıların "yöneticilerin hepsi yalancı" olduğu iddiasını kanıtlamaz.
Jaap
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.