Proje yöneticime veya baş geliştiricime projenin kod tabanının ciddi işlere ihtiyacı olduğunu nasıl (dokunarak) nasıl anlarım?


9

Bir yıl olmasa da birkaç aydır bir proje üzerinde çalışan (nispeten) küçük bir geliştirme ekibine yeni katıldım. Çoğu geliştiricinin bir projeye katılması gibi, ilk birkaç günümü projenin kod tabanını gözden geçirerek geçirdim.

Proje (orta ila büyük ölçekli ASP.NET WebForms iç iş alanı uygulaması), daha açıklayıcı bir terim olmaması nedeniyle bir felakettir. Kodlama standartlarında hemen fark edilir üç sorun vardır:

  1. Standart çok gevşek. Daha ne den (vs .. Macar notasyonu, kullanmayın) değil ne açıklar için yapmak.
  2. Standart her zaman takip edilmez. Kod biçimlendirmesinin her yerde tutarsızlıkları var .
  3. Standart, Microsoft'un stil yönergelerine uymaz. Kanımca, çerçevenin geliştiricisi ve dil spesifikasyonuna en büyük katkıda bulunan tarafından belirlenen kurallardan sapmanın bir değeri yoktur.

3. noktaya gelince, belki de beni daha fazla rahatsız ediyor çünkü MCPD'mi web uygulamalarına (özellikle ASP.NET) odaklanmak için zaman ayırdım . Ayrıca ekipteki tek Microsoft Sertifikalı Profesyonelim. Tüm eğitim, kendi kendine eğitim ve iş başı öğrenimimde öğrendiklerim nedeniyle (sertifikasyon sınavlarına hazırlığım dahil) ayrıca projenin kodunda, en iyi yol.

Ben sadece bir hafta boyunca bu takımda bulundum, ancak kod tabanlarında o kadar çok sorun görüyorum ki, bir şeyleri "kendi yollarında" yapmak için yazılmış olanlarla savaşmak için daha fazla zaman harcayacağımı hayal ediyorum. daha geniş çapta kabul edilen kodlama standartlarını, mimari kalıpları ve en iyi uygulamaları takip eden bir proje üzerinde çalışmak. Bu beni soruma getiriyor:

Proje yöneticime ve ekibime projenin büyük ölçüde yenilenmesi gerektiğini öne sürmeli miyim (ve öyleyse, nasıl yapmalıyım)?

Ofislerine girmek istemiyorum, MCTS ve MCPD sertifikalarımı sallayarak projelerinin kod tabanının bok olduğunu söylüyorum. Ama aynı zamanda sessiz kalmak ve kludgey kodlarının üstüne kludgey kodu yazmak zorunda değilim, çünkü aslında kaliteli yazılım yazmak istiyorum ve son ürünün istikrarlı ve kolay korunabilir olmasını istiyorum.


5
ASP.NET ile ilgili deneyiminiz nedir? (MCPD kimlik bilgilerinizin yanı sıra).
Marcie

11
Başarılı bir ürüne hoş geldiniz. 'Eski' kod her zaman saçmalıktır.
Steven Evers


Stackoverflow'da benzer bir soru gördüğüme eminim. Bir mühendisin küçük bir kürekle dev bir kaka dağını hareket ettirebileceğini düşünmem mümkün değil. Sanırım iş arkadaşlarınıza yeniden düzenleme öğretmeye başlayabilirsiniz.
Reno

Bu durumu bulduğu için işten ayrıldım ve hatta bir programcı değilim, sistem yöneticisiyim ama kodun yeterli olduğunu gördüm ve kodlama ilkelerini şirket KO'yı (ki yaptı) biliyordu. Yapabileceğim en iyi şey, şimdi onlara yardım ediyor, üç haftalık temizlemenin ve çekirdek modülün yeniden yazılmasının gelecekteki gelişimde aylar kazandıracağını açıklamak - Bunu düşünmeye başlamadan önce, CV'm vardı çevrimiçi yolunu buldu! Yerinizi koruyun ve mümkünse kanıtlayın, sonra kararınızı yönetime bırakın, hayatınızı kolaylaştıracaktır.
Bay IT Guru

Yanıtlar:


16

Vakanızı tartışarak zaman harcayabilirsiniz; ya da ilerlerken temizlik için zaman harcayabilirsiniz.

Pick up Temiz Kodu ve Çevik Yazılım Geliştirme İlkeleri, Desenleri ve Uygulamaları ve sistem üzerinde çalışırken orada öğrendiklerini uygulamak. Sonunda, insanlar fark edecek (daha iyi veya daha kötü için).

Düzenle Ayrıca Eski Kod ile Etkili Çalışmaya bakın


Pudingin kanıtı yemek yiyor. Gördüğünüz şey onarım gerektiriyorsa, onarın - ve etrafınızdakiler yakında fark edecektir.
blueberryfields

1
Ben zaten ilerlerken küçük şeyleri düzeltmeyi planlıyorum. Ancak, örneğin ... ekibin formlarında açılır pencereleri nasıl yaptığı yanlış . Özel olarak oluşturulmuş ve tüm uygulama boyunca kullanılan bir şey. Kimsenin farkına varmadan, soru sormadan ya da değişikliklerimi geri almadan yeniden yazabileceğimi sanmıyorum.
Adam Maraş

11
"Fırsatçı yeniden düzenleme" adı verilen bir terim kullanıyorum. (Aslında gereksizdir çünkü tüm yeniden düzenleme fırsatçıdır). Hepimiz göze batan kod tabanları üzerinde çalışmak zorunda kaldık. Bir şeyleri kelimelerle değiştirmeye çalışmak, takımı savunmaya sokar. Yaparak değiştirin (kod para biriminizdir) ve birisi nedenini sorduğunda, nedeninizi onlara açıklayın ("emilen eski yoldan" daha iyi kelimelerle).
Michael Brown

2
Yanlışsa, test takımına kodu geri döndürürlerse başarısız olan bir test durumu da ekleyin.
blueberryfields

5
BTW, kendinizi kodunuzla ciddi olarak kanıtlayana kadar, ciddiye alınmayacaksınız. Yaşlı adamlara karşı kibirli korkuluk çocuk olmayın. Kodla ilgili algılarınızın doğru olmadığını söylemiyorum, kesinlikle sosyal konumunuzun mesajınızı etkilediğini söylüyorum. Başarılı olun.
Hack Saw

11

Açıkladığınız kadarıyla, problemler çoğunlukla kodlama standartlarını ve adlandırma sorunlarını takip etmemekle ilgilidir. Bu bir felaket değil , açık ara. Bir karşılaştırma için, bu gerçek bir felakettir.

Belki de yüksek standartlara alışkınsınız ve yüksek standartlara ihtiyaç duyuyorsunuz? Bu durumda, mükemmellikten sapma bir başarısızlık olarak düşünülebilir. Bu, talepleriniz yüksek olduğunda kolayca düşülebilen bir tuzaktır, ancak şeylere bakış açısını korumak önemlidir.

Bunu bir iyileştirme olarak konuşmanızı ve ekibin rehberlerini güncellemelerine ve gerçekte kullanmaya başlamaları için koçluk yapmanıza yardımcı olmanızı öneririm. Bir Tanımı Tamamlandı'yı kalite ölçütü olarak kullanmaktan çok hoşlanıyorum ve bir tane yaratmak tek başına harika bir ekip. Ama bundan daha fazlasını yapmanız gerektiğini sanmıyorum, en azından yeni bir ekip üyesi olarak değil.


9

Kesinlikle MCSD'nizi sallamaya gitmeyin, insanlar size açıkçası güldürecekler, MS certs sahip olmak güzel ama hiçbir şekilde profesyonel bir nitelik değildir!

Hafifçe yeni bir ekibe katılma, gittiğinizde değişiklik önerme fırsatları arayın.

Bir ekip kodunu atmadan önce toprağın yerleşimini alana kadar bekleyin.


MCPD sertifikamdan bahsetmemin nedeni, kanıtlanmış en iyi uygulamalara güçlü bir vurgu yapılması. Bazen, ASP.NET gibi bir çerçevede, işleri yapmak için gerçekten doğru ve yanlış bir yol vardır.
Adam Maraş

Şüphesiz doğru bir yol var! Ama bir sertifikayı sallamaya gelen yeni bir adam bu konuda ilerlemenin yolu değil. Alıntı deneyimi, daha güvenilir!
ozz

1
@Adam: sadece bir düşünce, ama gördüğüm örneklerin büyük çoğunluğu - özellikle ASP.Net ve hatta MVC'li moreso - "en iyi" uygulamalar olduğunu iddia ederken, şeyler yapmak için korkunç yollar gösteriyor. ViewModels'lerinde kaç örnek EF veya L2S sınıfı kullandığına basit bir bakış açıklayıcıdır.
quentin-starin

8

Sorunun siz olduğunu düşünebilirsiniz. Bahsettiğiniz üç şeyin HİÇBİRİ bir başvurunun tamamen yeniden işlenmesine layık değildir. Onlar sadece nitpicky detaylar.

Uygulamanın amacının güzel bir koda sahip olmadığını, bir iş sorununu çözmek olduğunu unutmayın. Elbette tutarlı ve iyi bir standart izleyen bir kod olması güzel, ancak bunların eksikliği tüm kod tabanını çöpe atmak için bir neden değildir. Motorun yağlı olması, yeniden yapılması gerektiği anlamına gelmez.

Bakın, herkes yazmadıkları her kod tabanından nefret eder. Aslında, üç yıl beklerseniz ve kendi kodunuza bakarsanız, ondan da nefret edersiniz ve tamamen yeniden yazılması gerektiğini düşünürsünüz. Gerçek şu ki, öyle değil. Eğer iş değeri katmak için özellikler oluşturmak yerine kodu estetik olarak hoş hale getirmek için ay harcamak durumunda sürece muhtemelen yanlış ağaç havlıyor vardır.

Hiçbir şey sadece kod tabanında bazı olabilecekleri için kludgy kodu yazmak zorunda olduğunu söylemiyor. Ve hiçbir şey kodun sadece evcil hayvan tarzınıza uymadığı için kludgy olduğunu söylemiyor. Üzerinde çalıştığınız parçalara devam ederken yeni şeyler üzerinde çalışırken iyi kod yazmanız yeterlidir.


Bu! Çok fazla. Eğer hata yaratıyorsa bir şey var, ama eğer sadece OKB nitpicky sorunlarınızı herkesin boğazına zorlamaya çalışıyorsanız, o zaman elbette ekibimden inin!
Glstunna

6

Bunlar endişelenmek için sorun değil, ancak takımda yeniyseniz henüz onlarla birlikte güvenilirlik kazanana kadar tekneyi sallamayın.

Üzülmek için üç (nispeten) küçük şey seçmişsiniz gibi görünüyor. Hakkında daha fazla endişeleneceğim başka şeyler var:

  • Kod iyi belgelenmiş mi?
  • Kod spesifikasyonlara / tasarım belgelerine uyuyor mu?
  • Kod çalışıyor mu?
  • Kodun ne yaptığını anlamak kolay mı?
  • Bu kod tabanının büyük parçalarını TheDailyWTF'ye göndermeyi düşünüyor musunuz?

1
1) Hayır. 2) Pek değil. 3) Çoğu zaman? 4) Bazen. 5) EVET.
Adam Maraş

6

Bir haftadır orada mısın? Henüz proje yöneticisine teklif verebilecek kadar bilginiz olduğundan emin değilim. Bu ekibin kod ve uygulamalarının "kötü" olduğuna dair şüpheleriniz olsa bile, bunları zaman içinde etkilemenin en iyi yolu yavaş yavaş güvenlerini ve saygısını kazanmaktır. Bir projeye girmek ve bir hafta sonra ekibe kodlarının yeniden yazılması gerektiğini söylemek güven ve saygı kazanmak için iyi bir yol değildir.

İlk birkaç ayınız için, daha iyi bir örnek oluşturmaya ve neden bazı şeyleri belirli şekillerde yaptıklarına dair sorular sormaya odaklanın. Bu soruları sorduğunuzda tonunuza dikkat edin. "Her şeyi bil" yeni adamı olarak karşınıza çıkarsanız, daha sonra işlerin yapılma şeklini etkileyecek bir pozisyonda olduğunuzda kimse sizin görüşlerinizi dinlemez.

Zaman içinde, kodunuz gerçekten "daha iyi" ise, diğer geliştiriciler bunu görecektir. Kendilerini düzeltmelerine yardımcı olacak bir kaynak olarak gelmeye başlayacaklar ve sonra bir şeyler yapmaları gerektiği konusunda tavsiyelerinizi isteyeceklerdir. Bu noktada, ekibe (ve yönetime) kodlama standartları ve benzerleriyle ilgili görüşlerinizi bildirmek için harika bir konumda olacaksınız. Bu sürecin ne kadar süreceği kuruluşa göre değişir. Çok uyarlanabilir bir ortamda sadece birkaç hafta veya daha stoacı bir kültürde aylar veya yıllar olabilir. Etkinizi her seferinde bir kişi oluşturun.


6

Kod tabanının mükemmel olduğunu ve her şeyin "doğru" şekilde yapıldığını düşüneceğiniz yeni bir işe asla girmeyeceksiniz. Bunu kabul etmeyi öğrenin. Eski kod ile yapabileceğiniz tek şey refactor ve yavaş yavaş ilerlemek. Yaptıklarını neden yaptığını daha iyi anlayana kadar yeniden düzenlemek istemediğiniz bazı şeyler . Ayrıca, iş dünyasında hiç kimse size çalışma kodunu düzeltmek için ödeme yapmaz, bu yüzden hızlandırmadan ve zaman harcamadan önce neden işe ihtiyaç duyduğuna dair bir iş vakası yapmanız gerekir. Yine de yapmanız gereken bir değişiklik olduğunda kodu yeniden kodlamak için beklemek daha iyidir. Bazı şeyler için yaptıkları yöntemi seçmemiş olabilirsiniz, ancak işe yararsa, değiştirmeye ve yeni hatalar getirmeye çok dikkat edin. Özellikle sizden değiştirmeniz istenmediğinde.

Bir hafta sonra, nasıl iş yaptıkları hakkında önemli önerilerde bulunma konusunda hiçbir güvenilirliğiniz yoktur. Eğer şimdi bir şeyler getirirsen, insanlar sana gülecek ve seni asla ciddiye almayacak. Önce iyi bir kodla kendinizi kanıtlayın, sonra insanlar dinlemek için daha eğilimli olacaklar.

Açıkçası kimse Microsoft Sertifikalı Profesyonel olmanız umurunda değil. Tecrübesi yüksek olan herkes bu sertifikayı iyi insanlar olarak gören birçok kötü programcı gördü. Sertifika almanın kötü görünmesini sağladığımı söylemiyorum, onlara çok fazla güven duymadığımızı söylüyorum çünkü etkili olduklarını görmedik, bize kimin iyi bir programcı olduğunu gösteriyor.


5

Muhtemelen teklifinizi konumunuzu yeterince haklı gösterememek niyetiyle nasıl sunacağınızı anlamaya çalışıyorum. Bu teklifi oluşturmayı düşünmek için birkaç soru:

  • Burada tanımladığınız değişiklikler yapılarak ne kadar işletme değeri kazanılır?
  • Uygulamayı sıfırdan yeniden yazmak, enfiye etmek için mevcut kodu değiştirmek veya zaman içinde küçük değişiklikler yapmak gibi seçenekleri düşündünüz mü?
  • İstediğiniz değişiklikleri yapmanızı engelleyecek hangi özelliklerin ve hataların istendiğini biliyor musunuz?

Ben kötü kod tabanı düzeltmek isteyen takdir edebiliyor olsa da, bunu yapmak için bir iş görüşünden mantıklı olması için bu tartılmalıdır.


1
Güven bana, yeniden yazma önermek isterim. Neredeyse eve gitmek ve sadece ne kadar iyi olduğunu göstermek için ASP.NET MVC 3 yeni bir kod tabanı başlatmak için cazip. Takımda yeni olduğum için iyi alınacağını sanmıyorum.
Adam Maraş

3

Şu anda bozuk kodu önleyecek durumda değilsiniz, bu yüzden nasıl içereceğinizi anlamanız gerekecek.

Başbakan ve ekip liderleri sadece işe yaramamasıyla ilgilenecek. Bir sonraki endişeleri sizden değişiklik yapmanızı ve 'basit' şeylerin neden bu kadar uzun sürdüğünü merak etmeleri olacak. Buraya gireceksiniz.

Şimdi tutarlılık sorunuyla başlayın. Potansiyel olarak standart yöntem ne olursa olsun, onu tanımlamaya çalışın ve zorlanıp uygulanamayacağınızı görün. Kimsenin aşina olmadığı bir metodoloji ile başlarsanız, bir ton geri itme alırsınız.

Diğer ekip üyeleri sertifika almak isteyebilir ve harika bir kaynak olacaksınız. Umarım en azından geliştirmek ve onlara yolu göstermek için size bakmak isteyeceklerdir.

Macarca Gösterim'den şikayet etmek size sempati duymayacak ve muhtemelen öncelik listesindeki son savaşlardan biridir.


3

Bu konuda dikkatli olmanız gerektiğine katılıyorum. Eleştiriyi belirtmeden ve kod veya süreçlerde derin değişiklikler önermeden önce ekip içinde itibar kazanmanız gerekir. Şimdilik bulgularım ve önerilerim hakkında notlar alırdım ve ekip üyeleri ve yönetim ile tanışmak, ücretsiz tartışmalara girmek, ancak konuşmanın kalite sorunlarına, kodlama sorularına vb. havuzdaki kendi sorularımdan bazıları (ancak genel bir biçimde, bu kod tabanında gördüğüm herhangi bir somut konuya çok fazla işaret etmedim). Bu şekilde ekip üyelerinin görüşlerini öğrenebilir ve potansiyel müttefikler bulabilirim.

En iyi durumda, ekibin (ve / veya yönetimin) önemli bir bölümünün sizinle aynı sorunları gördüğünü fark edebilirsiniz, sadece onlar hakkında bir şeyler yapmak için herhangi bir girişim olmamıştır veya yönetim tarafından verilen kaynaklar yoktur. Birlikte gerekirse yönetimi ikna etmek için daha fazla söz var.

@Mike'in önerdiği gibi, temizliğin bir kısmını kendiniz yapmak kesinlikle gereklidir, ancak yine de sabırlı olun. Çok hızlı başlarsanız, kişisel eleştiri olarak kabul edebileceğiniz diğer ekip üyelerini yabancılaştırabilirsiniz. Ayrıca kapsamlı kod temizleme / yeniden düzenleme işlemlerine girmek, yöneticiniz tarafından asıl göreve yeterince odaklanmadığınızı gösteren bir işaret olarak kabul edilebilir. Bu nedenle, daha ciddi bir seviyeye çıkmadan önce refactor için bir miktar görev almalısınız. Küçük yerel değişiklikler olsa Tamam.

Ayrıca, yönetimi ikna etmek için iş mantığına ihtiyacınız var. Yönetim, tutarsız kodlama tarzının ne kadar olduğuna dair açıklamalarla nadiren taşınır. Onlara önerilen değişikliklerin şirkete ne kadar değer katacağını göstermeniz gerekir - sonuç olarak nakittir. Önerilen çeşitli değişikliklerin maliyeti ile uzun vadeli faydaları hakkında ikna edici bir hesap oluşturabilir ve genel bakiyenin artı tarafta olduğunu açıkça gösterebilirseniz, şansınızı belirgin bir şekilde geliştirdiniz.


3

Kendin Yap. Belirli kodlama stillerine değer veriyorsanız , kodlama stillerini ihlal eden kod üzerinde çalışın . Kaynak kontrolünden rahatsız edici bir kod parçası alın, kodu stilin boşluk alanlarına göre yeniden biçimlendirin (örnek olarak) ve güncellenmiş kodu "Stil kılavuzunun boşluktaki kuralına uyun" mesajıyla tamamlayın.


+1: Sağ - Affet, izin değil.
Jim G.

1
Stil kılavuzunu takip ederseniz ve atanan görevlerin arkasında değilseniz, bunu atanmış görevlerden önce yapıyorsanız veya kuruluşun dikte etmediği bir stile geçerseniz kötü olur.
HLGEM

3

Bir hafta sonra muhtemelen yapabileceğiniz en kötü şey bu doğrudan yönetim gidin. Muhtemelen koda çok fazla zaman ayırmışlar ve kodda bir dereceye kadar gurur duyuyorlar. Muhtemelen ciddi bir "hepsini biliyor" olarak çıkardınız.

Ben senin yerinde olsaydım, ilerledikçe onu geliştirecektim. Daha fazla tanıdıkça ve daha fazla çalıştıkça onu geliştirme şansınız olacak. Bu noktada, diğer iş arkadaşlarınıza yaptığınız şeylerin faydalarını göstermeye başlayacağım. Bundan sonra, tasarım modülleri yeni modüller için geldiğinde, en iyi yol olarak algıladığınız şey için bir argüman sunun.

Ve dürüst olmak gerekirse, standartlar bir nedenden dolayı var ama eğer işe yarar ve iyi çalışırsa, kitabımda 100 kat daha değerlidir (özellikle bir hafta sonra). Kodu açarsanız ve tonlarca mantık hatası veya bu tür bir şey görürseniz daha fazla endişe duyarım.


Şiddet için +1 hepsini biliyorum. Twitter'da eski bir MS adamı takip ediyorum ve aynı şeyi yeni bir rolde yapıyor ve bu konuda tweet atıyor, büyük hata!
ozz

2

Bu 'problem' ile doğrudan yönetime gitmeyin.

İlk olarak, iş arkadaşlarınızla konuşun ve onlardan işlerin neden böyle olduğunu öğrenin. Ardından, bir sorun olup olmadığı konusunda daha iyi bir değerlendirme yapabilirsiniz. Öğrendiklerinize şaşırabilirsiniz. Ayrıca temizlenmesini isteyen müttefikler de bulabilirsiniz.

İlk etapta nerede olduğunuza dair bir fikriniz yoksa, dışarı çıkmayı çok daha zorlaştırır.


1

Zaten burada bir sürü iyi öneri ve ben diğerleri gibi kanıtlanmış-kendinizi-kanıtlamak-kadar-köprüleri yanma yok. Ekleyeceğim şey, önce proje yöneticisine veya takım liderine giderek onları yabancılaştırmadan önce takım arkadaşlarınızla iyi tartışmak. Ve kesinlikle onlardan önce, ciddiye alınmanız gerektiğini gösterin.

Kodla ilgili daha fazla stilistik bir sorun olduğu da anlaşılıyor. Başka birinin kodunu ele geçirmek ve yazma biçimini kullanırken burnunu tutmak, onu biçimlendirme biçimi gibi önemsiz bir şey olsa bile, işin sadece bir parçasıdır. 'Bebeklerinizden' birini pis elleriyle idare etmeleri için başkasına teslim etmek daha da kötü ...

Nihayetinde bundan daha fazla ise - ve sorun sadece üsluptan daha işlevselse - takım liderine / pm'ye gidecekseniz, gelecekte para ve çabadan nerede tasarruf edeceği konusunda yeniden çalışma ihtiyacını karşılamak en iyisidir geliştirme projesi. Eski güzel yeniden düzenleme.

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.