Yüksek kaliteli kodu nasıl tanıtabilir ve teşvik edebilirim?


16

4 kişilik bir ekipte küçük bir dış kaynak şirketinde iOS geliştiricisi olarak çalışıyorum. Ben ve diğer iki geliştiricinin şirkete katılmasından birkaç yıl önce başlayan bir proje üzerinde çalışıyoruz. Bundan önce proje çoğunlukla bir kişi tarafından yapılıyordu.

Proje üzerinde çalışmaya başladığımda tam bir karmaşa vardı. Çok sayıda kod tekrarı vardı. Aynı 500 kodun küçük varyasyonlarla 20 farklı dosyaya yazıldığını gördüm. Ayrıca, tam olarak iyi organize edilmemiştir: tüm UI oluşturma kodu mantıkla birlikte görünüm denetleyicilerinde karıştırıldı.

Burada ve orada bir şeyleri yeniden düzenlemek, gereksiz kod parçalarını ortadan kaldırmak, projenin dosya yapısını geliştirmek vb. İçin elimden geleni yaptım. Önceki geliştirici gerçekten tüm bu şeyleri umursamadı ya da deneyimi yoktu gibi hissettim. Birkaç ay boyunca oldukça büyük bir özellik üzerinde yalnız çalıştığım bir zaman vardı. Bu özelliğin doğası nedeniyle, tüm uygulama boyunca bir çok koda dokunmak zorunda kaldım, bu yüzden bazı iyileştirmeler yapmaya çalıştım.

Diğer geliştiriciler projeye katıldıklarında, farklı bir kodlama stili (bazen tamamen farklı bir stil) kullandıklarını ve genellikle mülk erişimcileri gibi modern dil özelliklerini kullanmadıklarını fark ettim (Objective-C'de nispeten yeni). Bazen çerçevenin benzer özelliklerini kullanmak yerine kendi bisikletlerini icat ederler veya öğrendikleri diğer programlama dillerinden veya kalıplarından kod tabanımıza transfer ederler. Çoğu zaman kötü İngilizce nedeniyle yöntemleri veya değişkenleri düzgün bir şekilde adlandıramazlar (Objective-C uzun isimler yaptığınız bir dildir).

Bazen IDE olmasaydı bence herhangi bir girinti veya biçimlendirme olmadan tüm kodları yazacaklarını düşünüyorum.

Temel olarak, yazdıkları koddan nefret ediyorum. Kötü biçimlendirilmiş / organize edilmiş ve bazen projenin geri kalanından kökten farklı. Spagetti'lerini sanat eserine eklediklerinde çok üzülüyorum ve işteki ruh halimi ve üretkenliğimi etkiliyor.

Öğrenmeye zahmet etmeyecekleri veya umursamayacakları gibi gittikçe daha fazla hissediyor: sadece onlardan gerekli olanı yapıyorlar ve eve gidiyorlar. Bir fırsatım olduğunda onlara birkaç ipucu vermeye çalıştım (örneğin PR'larını yorumladı veya GitHub'a taahhüt etti). Bir keresinde güzelce kodlama stilini ve mevcut kodun çoğunun biçimlendirmesini takip etmeyi istedim (ne yazık ki resmi bir kodlama stili belgesi yok). Ama işe yaramadı ...

Bu durumu sadece 'kötü şirket kültürü', 'deneyimsiz mezunlar' vb.


3
Herhangi bir şey varsa, takım liderleri / üst düzey geliştiriciler / yöneticiler yolunda neler var?
Philip Kendall

3
"Bir adama bir balık verin ve onu bir günlüğüne besleyin; bir adama balık tutmayı öğretin ve onu bir ömür boyu besleyin" - "sadece işinizi yapmak" yerine ve kontrol ettiğiniz kodun küçük parçalarını yeniden düzenlemek yerine, başkalarına öğretmeye başlayın daha iyi bir kodlama stili. Elbette bunun için yönetim tarafından bir miktar yedek aldığınızdan emin olun.
Doc Brown

Yanıtlar:


5

Ne vaaz verdiğinizi öğretin ve pratik yapın.

Bu şeyin önemli olduğunu biliyorsun. Doğru yapılmadığında dezavantajı biliyorsunuz.

Şimdi zorluk başkalarını ikna etmektir. Bu, tek bir görüşme, bir toplantı, koridor görüşmeleri, ipuçları veya bir Çekme İsteği ile yapılmayacaktır.

Bunun için:

  • Yönetim tarafından bu maddelerin önemli olduğunu kamuoyu ile kabul etmek
  • Linters, böylece insanlar bir araya gelebilir, hash edebilir ve stil üzerinde anlaşabilir ve daha sonra bilgisayarların polisliği yapmasına izin verebilir
  • Tamamen satın alan ve başkalarına öğretmek isteyen geliştiricilere liderlik edin
  • Bu yaklaşımları öğretmek için toplantılar, demolar, öğle yemeği ve öğrenir vb.
  • İncelemeleri sırasında bahsettiğiniz kaliteli ürünler üzerinde ölçülen kişiler
  • Belgelenmiş ve yayınlanmış standartlar
  • Çok sayıda yorumcunun bulunduğu Çekme İstekleri
  • Kod kalitesi yüksek olana kadar Çekme İstekleri birleştirilmiyor
  • Sık kod eşleştirme
  • Karmaşık PR'lar için grup kodu yorumları

Kelimede gerektirir

Liderlik

İyi haber, tüm bu faaliyetlerin genellikle iyi uygulamalar olarak tanınmasıdır, bu nedenle onları tanıtmaya veya yönetimden satın almaya gittiğinizde iyi bir şans başarısına sahip olmanız ve doğru şeyi yapmak için savunabilmeniz gerekir. Yönetim yine de satın almayabilir, bu başka bir konu ve soru.


2

Geçmişte SoftwareEngineering.SE üzerine bu konuda çok şey yazdım ve benzer durumlarda kendimdeydim. Bu nedenle, sorunuzu okurken birkaç ipucu vermeye ve not ettiğim birkaç konuyu vurgulamaya çalışacağım.

Ama önce önemli bir konu hakkında konuşalım: şirketteki rolünüz.

Rolün

Patronunuzdan bir şeyler geliştirmek için açık bir yetkiniz olabilir ve hiyerarşide diğer geliştiricilerin siparişlerinizi dinlemek zorunda olduğu bir yer olabilir . Ya da aynı rol ve aynı otoriteye sahip olan akranlarınız arasında olabilirsiniz, seçeneğiniz sadece ... iyi ... bir fikirdir .

Her iki durumda da, önemli olan hiyerarşideki yeriniz ve daha fazlasıdır:

  • Diğer geliştiriciler senin hakkında ne düşünüyor. Sana aptalca şeyler soran sinir bozucu bir adam gibi davranırlarsa, uzaklaşamazsın. Teknik liderlerin ve proje yöneticilerinin ekip üzerinde kesinlikle bir etkisi olmadığı birçok durum gördüm, çünkü ekip bu “liderlerin” aldıkları kararları almak için gerekli teknik altyapıya sahip olmadığını biliyordu (veya düşündü). Öte yandan, akranları tarafından gerçekten dinlenmiş birkaç geliştirici gördüm, çünkü bu geliştiricilerin yetenekli ve deneyimli olduğunu biliyorlardı.

  • Ekibiniz ne kadar sağlam ve onları motive eden şey. Her geliştiriciye KLOC / ay için ödeme yapılan bir şirket düşünün. Stil hakkında söylediğiniz her şey iş arkadaşlarınız için önemli mi? Muhtemelen hayır, çünkü nadir olarak daha az ödeme yapmak isteyen kişilerdir. Genel olarak, eğer bu bir takım değil, aynı proje üzerinde çalışan bir grup insan ise, hiçbir şeyi geliştiremezsiniz.

Buna bağlı olarak, herhangi bir değişiklik yapmanın çabalarına değip değmeyeceğine karar verebilirsiniz. Eğer sesiniz yoksa ve takım uyumu yoksa gidip başka bir iş arayın. Yetenekli, saygın bir geliştirici olarak biliniyorsanız ve güçlü bir takım hissi varsa, patronunuzdan veya diğer takımlardan gelen düşmanlıkla karşı karşıya kalsanız bile işleri nispeten kolay bir şekilde iyileştirebilirsiniz.

Her durumda, ekibinize baskı yapmamak önemlidir. Onlarla çalışın , onlara karşı değil. Onlara emir vermeyin, ama onları hedefe doğru yönlendirin.

Şimdi, ipuçları.

stil

Bir keresinde güzelce kodlama stilini ve mevcut kodun çoğunun biçimlendirmesini takip etmeyi istedim (ne yazık ki resmi bir kodlama stili belgesi yok). Ama işe yaramadı ...

Tabii ki olmadı, çünkü yapılması gereken bu değil.

  • Stil sıkıcı .

  • Aşağıdaki stil sıkıcıdır .

  • Kodlama stili belgesi yazmak sıkıcıdır ( ve çok zordur ; on yıldan fazla bir süre dil ile çalışmadığınız sürece bunu bile denemeyin).

  • Okuma tarzı belge sıkıcı .

  • Stil hataları için kodu gözden geçirmek sıkıcıdır .

  • Tarzımın sizinkinden daha iyi olduğunu söylemek heyecan vericidir , özellikle de bir stilin diğerine göre kesinlikle nesnel bir yararı olmadığında. Cidden, her aklı başında insan, yazmanın if (x)doğru yolunun onu yazdığım yol olduğunu bilir , if(x)ya da değil if ( x )!

Bu nedenle:

  • Stil değerlendirmeleri yapmayın. Bu stil dama işidir. Bu sevimli uygulamaların beyninize birkaç faydası vardır: tüm projeyi saat veya gün değil, milisaniye içinde kontrol ederler ve hata yapmazlar ve stil hatalarını kaçırmazlar.

  • Kendi stil standardınızı yazmayın. Yine de yanlış yapacaksınız ve iş arkadaşlarınız sizi kötü seçimler yaptığınızı söyleyecek.

  • Geliştiricileri 2.000 stil hatasını düzeltmeye zorlamayın.

  • Taahhütte stili otomatik olarak zorla. Stil hataları olan kodun sürüm kontrolünde yeri yoktur.

  • Projenin başından itibaren yapın. Mevcut bir projede stil kontrolü kurmak imkansızdır.

Bununla ilgili daha fazla bilgi için SE.SE'deki bu cevabın ilk bölümünü okuyun .

Ayrıca:

  • Çok katı olma. Örneğin, jslintkod uyumlu kod yazmak oldukça can sıkıcı bir durumdur, bu yüzden kesinlikle ihtiyaç duyulduğunda (veya ekibinizin tüm üyeleri bunu kullanmaktan memnunsa) yapılmalıdır. Aynı durum statik kontrol araçları için de geçerlidir; örneğin, .NET'in maksimum düzeyde Kod Analizi, çok az fayda sağlarken çok baskıcı ve iç karartıcı olabilir; orta seviyede ayarlanan aynı takım ise çok yardımcı oluyor.

Kod incelemeleri

Artık kod incelemeleri sırasında stil hakkında endişelenmenize gerek yok, daha ilginç şeylere odaklanabilirsiniz: kaynak kodunu geliştirmek (düzeltmek vs.).

Farklı kişiler kod incelemelerine farklı tepki verirler. Bazıları bunu bir fırsat olarak görür. Diğerleri bundan nefret eder. Bazıları onlara söylediğiniz her şeyi dinler, notlar alır ve doğru bile olsa tartışmazlar. Diğerleri her konuda tartışmaya çalışır. Kişiliğine göre her geliştiriciyle başa çıkmanın bir yolunu bulmak size kalmış. Genellikle aşağıdakilere yardımcı olur:

  • Özellikle geliştirici küçükken ve gerçekten kötü bir kod yazarken, kod incelemelerini özel olarak yapın.

  • Kişisel bir şey olmadığını gösterin: kodu inceliyorsunuz, kişinin becerilerini değil.

  • Bir kod incelemesinin asıl amacını gösterin. Amaç, bir geliştiricinin ne kadar kötü olduğunu göstermek değildir. Amaç, iyileştirme fırsatları sağlamaktır.

  • Asla tartışma. Burada ikna etmek için değil, uzmanlığınızı sağlamak için buradasınız.

  • Gözden geçirenin, incelemeden bir şeyler öğrenebilecek tek kişi olduğunu asla varsaymayın. Hem kodu okuyarak hem de anlamadığınız kısımlar hakkında açıklama sorarak öğrenmeye buradasınız.

Kod incelemesi tamamlandığında, kişinin kodunu gerçekten geliştirdiğinden emin olun. Geliştiricilerin gerçek toplantı sona erdiğinde kod incelemesinin sona erdiğini düşündükleri birkaç durumum vardı. Yalnızca yeni kod için onlarla paylaştıklarınızı uygulamaya çalışarak yeni özelliklerine geri dönüp geri dönerler. Kod incelemesi için iyi bir izleme aracının olması yardımcı olur.

Şirketteki özel rolünüzden ve diğerlerine kıyasla uzmanlığınızdan bağımsız olarak, kodunuzun da incelemeye tabi olması gerektiğini unutmayın. Başkalarının kodunu da inceleyen tek kişi sen olmamalısın.

Teknik bir lider olarak çalıştığım yeni bir projede, iş arkadaşlarıma, benim de dahil olmak üzere birbirlerinin kodlarının incelemelerini yapmanın rollerinin olduğunu açıklamakta zorlandım. Teknik liderinin kodunu gözden geçirmek üzere olan bir stajyer korkusu, koddaki ilk sorunları bulur bulmaz ortadan kaybolur ve aramızda kim kusursuz kod yazar?

Eğitim

Kod incelemeleri, programlama ve yazılım tasarımının bazı yönlerini öğretmek ve öğrenmek için harika bir fırsattır, ancak diğerleri eğitim gerektirir.

Eğer iş arkadaşlarınızı eğitebiliyorsanız, bunu yapın. Yönetiminiz eğitim fikrinde düşmansa, gayri resmi olarak yapın. Bu tür eğitim oturumlarını resmi olmayan toplantılar şeklinde yaptım, hatta bazen basit bir tartışma olarak bile, bazen yönetim tarafından kesintiye uğradım ve daha sonra izledim.

Doğrudan eğitimin yanı sıra, McConnel'in Code Complete gibi kitapları yeterince iyi bildiğinizden emin olun ve bu kitaplar hakkında iş arkadaşlarınızla konuşun. Onlara açık kaynaklı projelerin kaynak kodlarını okumalarını, yüksek kaliteli kodlara özel örnekler vermelerini önerin. Ve tabii ki, yüksek kaliteli kodu kendiniz yazın.

Kişilere değil bağlama odaklanın

Bu durumu sadece 'kötü şirket kültürüne', 'deneyimsiz mezunlara' vb. Odaklanmadan nasıl çözebilirim?

Bu mezunların bir amacı var: deneyim kazanmak, bir şeyler öğrenmek, daha yetenekli olmak. Yıllar sonra, boktan kod yazarlar ve programlama hakkında hiçbir şey bilmezlerse, muhtemelen ekibiniz veya şirketiniz bu fırsatı vermiyordur.

Ekibinizin deneyimsiz mezunlara sahip olmasına odaklanıyorsanız, bu yardımcı olmaz. Bunun yerine, onlar için ve onlarla neler yapabileceğinize odaklanın. Kod incelemeleri ve eğitim durumu iyileştirme tekniklerinden ikisidir.

Kötü şirket kültürü farklı bir canavardır. Bazen değiştirilebilir. Bazen olamaz. Her durumda, sen hatırlamak olan bu şirketin bir parçası, bu nedenle şirket kültürünün bir parçasıdır. Er ya da geç, onu değiştiremez ve doğal olarak kötü bulursanız, gitmeniz gerekir.

Metriklerinizi doğru yapın

Şu anda tam olarak nasıl ölçüm yapıyorsunuz? Geliştirici başına günlük taahhüt sayısını ölçüyor musunuz? Veya programcı başına aylık KLOC? Ya da kod kapsamı? Yoksa bulunan ve düzeltilen hataların sayısı? Veya regresyon testlerinde yakalanan potansiyel hataların sayısı? Yoksa Sürekli Dağıtım sunucusu tarafından yapılan geri dönüşlerin sayısı?

Ölçtüğünüz şeyler önemlidir, çünkü ekip üyeleri çalışmalarını ölçülen faktörlere uyarlar. Örneğin, birkaç yıl önce çalışmak zorunda olduğum bir şirkette ölçülen tek şey , kişinin ofiste geçirdiği zamandı. Söylemeye gerek yok, bu daha iyi kod sunmayı veya daha akıllıca çalışmayı ya da hiç çalışmamayı teşvik etmedi.

Olumlu ve olumsuz pekiştirmeyi bulmak ve ölçülen faktörleri zaman içinde ayarlamak esasen ekip üyelerinde kaldıraçtır. Düzgün yapıldığında, basit hiyerarşi ile elde edilemeyecek sonuçlar elde etmeyi mümkün kılar.

Sizi rahatsız eden şeyler onları ölçülebilir kılar. Onları ölçün ve sonuçları herkese açık hale getirin. Ardından sonuçları iyileştirmek için diğer ekip üyeleriyle birlikte çalışın.

Örneğin, takım üyelerinin sınıflar, sınıf üyeleri ve değişkenler adına çok fazla yazım hatası yaptığını düşünelim. Bu sinir bozucu. Bunu nasıl ölçebilirsin? Bir ayrıştırıcı ile koddaki tüm kelimeleri çıkarabilir ve bir yazım denetleyicisi kullanarak, hata ve yazım hataları içeren kelimelerin oranını belirleyebilirsin (% 16,7).

Bir sonraki adımınız, hedef oran konusunda ekibinizle anlaşmaktır. Bir sonraki sprint için% 15, bir sonraki sprint için% 10, altı haftada% 5 ve iki ayda% 0 olabilir. Bu metrikler her taahhütte otomatik olarak yeniden hesaplanır ve ofiste büyük bir ekranda görüntülenir.

  • Hedef orana ulaşmazsanız, ekibiniz yazım hatalarını düzeltmek için biraz daha zaman harcamaya karar verebilir. Veya ekibiniz, geliştirici başına oranı hesaplamanın ve bu bilgileri büyük ekranda görüntülemenin daha iyi olduğunu düşünebilir. Veya ekibiniz hedefin çok iyimser olduğunu ve onu gözden geçirmeniz gerektiğini görebilir.

  • Hedef orana ulaşırsanız, bir sonraki adım hata ve yazım hatası sayısının zamanla artmayacağından emin olmaktır. Bunun için derlemenizde yazım hatalarını kontrol eden ve en az bir hata bulunursa derlemeyi kaldıran ek bir görev oluşturabilirsiniz. Artık bu sorundan kurtulduğunuza göre, büyük ekranınız yeni ilgili istatistikleri göstermek için yeniden kullanılabilir.

Sonuç

Sorunuzda belirtilen her yönün cevabıma eklediğim tekniklerle çözülebileceğine inanıyorum:

  • Diğer geliştiriciler projeye katıldıklarında, farklı bir kodlama stili kullandıklarını fark ettim (bazen tamamen farklı bir stil)

    Taahhütte stili otomatik olarak uygulamak zorundaydınız .

  • ve genellikle mülk erişimcileri gibi modern dil özelliklerini kullanmazlar (bu, Objective-C'de nispeten yenidir).

    Hem kod incelemeleri hem de eğitim , dil bilginizi aktarmak için burada.

  • Bazen çerçevenin benzer özelliklerini kullanmak yerine kendi bisikletlerini icat ederlerdi

    Hem kod incelemeleri hem de eğitim , çerçeve bilginizi aktarmak için burada.

  • ya da öğrendikleri diğer programlama dillerinden ya da kalıplardan kod tabanımıza aktarabilirsiniz.

    Bu mükemmel bir şey. Onlardan öğrenmeniz için bir fırsat gibi görünüyor.

  • Çoğu zaman kötü İngilizce nedeniyle yöntemleri veya değişkenleri düzgün bir şekilde adlandıramazlar

    Kod incelemeleri aynı zamanda uygun adlandırmaya da odaklanmalıdır. Bazı IDE'lerin de yazım denetleyicileri vardır.

  • Bazen IDE olmasaydı bence herhangi bir girinti veya biçimlendirme olmadan tüm kodları yazacaklarını düşünüyorum.

    Tabii ki ederlerdi. Stil sıkıcıdır ve otomatikleştirilmelidir.

  • Temel olarak, yazdıkları koddan nefret ediyorum.

    Kod incelemeleri bölümünden hatırlayın: “Amaç, bir geliştiricinin ne kadar kötü olduğunu göstermemek. Amaç, iyileştirme fırsatları sağlamak. ”

  • Kötü biçimlendirilmiş / organize edilmiş ve bazen projenin geri kalanından kökten farklı.

    Otomatik stil kontrolü.

  • Spagetti'lerini sanat eserlerime eklediklerinde çok üzülüyorum

    Bir dakika ne?! Sanat eseri?! Bil bakalım ne oldu? Bazı kişiler (altı ay içinde sizler de dahil), kodunuzu bir sanat eseri olmaktan uzak bulabilir. Bu arada, çalışmanızı bir sanat eseri olarak ve onların saçmalık olarak düşünmenin kimseye yardımcı olmayacağını anlayın . Sen de dahil.

  • Öğrenmeye zahmet etmeyecekleri veya umursamayacakları gibi gittikçe daha fazla hissediyor: sadece onlardan gerekli olanı yapıyorlar ve eve gidiyorlar.

    Elbette onlardan istediklerini yapacaklar. Unutmayın: bağlam değil, kişiler değil ve ölçümlerinizi doğru yapın . Bağlam onların yaptıkları işte en iyi olmalarını gerektiriyorsa, yapacaklardır. Bağlamın ayda mümkün olduğunca çok KLOC üretmesi gerekiyorsa ve başka bir şey yapmıyorsa, bunu da yapacaklardır.


Kod incelemelerinden bahseden ilk sizsiniz ve sadece +1 kazandınız - Genel olarak kod tabanına yaptığınız karışıklığı savunmak zorunda kalmak çok eğitici olabilir. Bununla birlikte, Kod İncelemeleri gerçekten bakım için yönetim düzeyindeki birine güvenir ve eğer biri eksikse IMHO'ya mahkum olursunuz.
tofro

@tofro: teşekkür ederim. Ancak, kod incelemesi yalnızca bir yönüdür. Otomatik stil kontrolü daha önemlidir, ancak önceki cevapların hiçbirinde bahsedilmemiştir. Metriklerden de bahsedilmedi. Benzer şekilde, hiçbiri OP'nin kodunu “sanat eseri” olarak adlandırdığı gerçeğini vurgulamamıştır, ancak bu çok önemli bir özelliktir.
Arseni Mourzenko

@tofro: “Kod İncelemeleri, ancak gerçekten bakım için yönetim düzeyindeki birine güveniyor ve eğer birisi eksikse mahkum oluyorsunuz” : tecrübelerime göre, yönetim desteği bir önkoşul değil. Yönetimin incelemeleri kodlamak için gerçekten düşman olduğu takımlarda çalışmak zorunda kaldım, onları zaman kaybı olarak gördüm. Onları hala yapıyorduk ve kod kalitesi (daha az hata ve daha az zaman çözme hataları) ve ekip üyelerinin mutluluğunun ve deneyiminin ölçülemeyen faydaları açısından ölçülebilir fayda sağladı. İyi bir ekip, yetersiz yönetime karşı bile harika işler yapabilir.
Arseni Mourzenko

Ekibin CR ile ortak bir ilgisi olduğunda yönetim desteğine ihtiyacınız olmadığına katılıyorum - görünüşe göre, burada durum böyle değil.
tofro

0

Kodlama standartlarını uygulayın ve bunlara sadık kalın, tasarım kalıpları, rehber olarak kullanabileceğiniz kod parçacıkları kütüphanesi vb.

Kodlama standartları, boşluk veya sekme kullanılıp kullanılmayacağına, hangi tasarım desenlerinin kullanılacağı ve kullanılacağına karar verilmesi, kuralların adlandırılması vb. Arasında değişebilir.


0

Yapabiliyorsanız, kodlama standartlarını ve kod incelemelerini uygulayın - her check-in işlemini incelemeye başlamak için. Küçük bir ekiple, kodunuza ekstra 2x veya 3x harcamanın genel geliştirme süresinde 20x veya 30x tasarruf edeceğini anlayamayan kişilere zor bir satış olacak, ancak bu satın almaya değer başka bir kavram -da.

Ben her şeyi bir kerede uygulamaya çalışmazdım ve onları sadece girinti değil, aynı zamanda kendi kodlarında karşılaştıkları şeyler hakkında düşünmelerini sağlamaya çalışıyorum. hayatlarını daha kolay veya daha zor hale getirdi.

O hafta boyunca her bir kişi için neyin doğru neyin yanlış gittiğini incelemek için haftada bir gün bir toplantı yapmayı düşünün - ayrıca her kişiye o hafta en çok yardımcı olan başka birinin ne yaptığını söyleme şansı sunabilirsiniz - bunun gibi şeyler . Bunun gibi daha fazla fikir için XP / Agile kitaplarına bakabilirsiniz. Küçük bir ekip olmak yine zor bir satış olabilir.

Dil sorunlarından bahsettiniz. Eğer bu işçiler yerel değilse (yerinde yükleniciler veya tam zamanlı işe alımlar) bu çok fazla sorun olmamalı, ancak uzaktan çalışan denizaşırı yükleniciler ise - kişisel deneyimlerime göre bunun hiç olmadığını söyleyeyim sabit olacak, ya yönetim işe yaramayacağını anlayana kadar dışarı atın ya da şirketten ayrılmayı düşünün. İşlerinden sorumlu olduğunuz bir duruma girmeyin ve ekibin geliştirme uygulamalarını düzeltmeye çalışırken zaman kaybetmeyin. Büyük olasılıkla işiniz, kodlarının çalışmasını sağlamak için zamanınızın% 100'ünü harcamaya dönüşecektir. Birçok denizaşırı müteahhit harika programcılar, bu arada, sadece müteahhitlik şirketinin size tarif ettiğiniz yetenek türünü gönderdiği durumdan bahsediyorum.


0

Açıkladığınız belirtiler, takım uyumunun eksik olduğunu göstermektedir .

Böyle bir durumda, kodlama standartları, eğitim, prosedürler veya araçlar kaliteyi önemli ölçüde artırabilecek gümüş kurşun değildir. Öncelikle bir takım ruhu, açık ve yapıcı iletişim ve ürünün ortak mülkiyeti geliştirmelisiniz.

Belirtiler:

  • "sadece gerekli olanı yaparlar ve eve giderler": ses demotivasyona uğrarlar. Geldiklerinde daha hevesli değiller miydi?
  • "onlar" bize karşı "/" ben "/" Ben ": karşılıklı güven eksikliği?
  • "Bazı ipuçları verdim: Git konusunda Halkla İlişkiler hakkında yorum yaptım": yazılı eleştirinin tonu bazen yapıcı niyeti olmasına rağmen saldırgan ya da kibirli olarak yanlış yorumlanır. Neden yüz yüze tartışmıyorsunuz?

Küçük bir takımsınız: bu avantajı kullanın! Başlamak için bazı fikirler:

  • Toplu olarak önemli kararlar verin. Açıkça anlaşmazlığı tartışın. "Tartışma" bir bakış açısı dayatmak değil, dinlemek ve ortak bir zemin bulmaya çalışmaktır.
  • Kodun önemli kısımlarını yeniden düzenlediniz, bu nedenle gerçekten güçlü bir sahipliğiniz var. İçeri girsinler. Söyleyecekleri bir sözleri olsun.
  • Kod biçimlendirme gibi çok hassas ancak son derece öznel konular için, görevi her check-in sırasında hissetmeden standartlara göre yeniden biçimlendirilecek otomatik bir güzel yazıcıya dış kaynak sağlayın.

Günün Sözü:

Hızlı gitmek istiyorsan, yalnız git. Eğer ileri gitmek istiyorsan birlikte git


0

Sorunuz "Şirketinizi değiştirin veya şirketinizi değiştirin" şeklinde yanıtlanabilir. Bilmeyenler için bu, şirketinizde görmek istediğiniz değişikliği getirmek ya da çalıştığınız şirketi değiştirmek (yani başka bir yerde ayrılmak ve çalışmak) için kalmak ve savaşmak anlamına gelir.

İkinci bölüm en basit olanıdır. Çalıştığınız değerleri paylaşan bir şirketten ayrılıyorsunuz. İlki insanlar yüzünden o kadar basit değil.

Yapmanız gereken insanları değiştirmek. Kırıldıklarını ve bunları düzeltmeniz gerektiğini düşünmek işe yaramayacaktır. İnsanlar duygusal varlıklardır. Bu kişisel savaşlarda kolayca dejenere olabilir. Yani...

Her şeyden önce, durumun neden böyle olduğunu bulmanız gerekir. Herkesle konuşun. Bulmak. Şu anda gördüğünüz, yıllarca alınan kararların sonucudur (veya belki de bazı önemli kararları doğru zamanda almamak). Yargılama ve sonuçlara atlamayın.

Bunun nedeni deneyimsiz geliştiriciler miydi? Yönetim, daha deneyimli ve pahalı geliştiriciler yerine ucuz mezunlar kiralayarak maliyetleri düşürmeye çalışıyor muydu? Bu, tembel ve kötü niyetli insanlar mı yoksa bozuk bir sistem tarafından yenilmiş insanlar mı? Son tarihler, çalışmasını sağlamak için "ne yapılmalı" mı yapmaya zorlanıyor mu yoksa insanlar sadece zamanlarını boşa harcıyor ve ne üzerinde çalıştıklarıyla pek ilgilenmiyorlar mı? vb.

Bu yazılım geliştirme alanındaki sorun, insanların işte öğrenmeleridir. Eğer berbat bir ortamda çalışırlarsa, kötü alışkanlıklar edineceklerdir. Ve alışkanlıklar yapışmaya meyilli ve sallanması zor. O zaman daha iyi bilmiyorlar çünkü tek bildikleri bu. Tüm geliştiriciler, daha iyi olmak veya iyileştirmek için zaman harcamak için ne yaptıklarına tutkuyla bağlı değildir. Bazıları çeşitli nedenlerle bu işe girdi. Öyleyse insanların neden nasıl olduklarını öğrenin.

Sonra yönetim var. Yönetim durumun farkında değil mi yoksa sadece umursamıyor mu? Bulmak. Bir şeyleri geliştirmek istiyorsanız kesinlikle yönetim desteğine sahip olmanız gerekir. Eğer aniden inşa etmek 3 ay süren bir şey 4 ay sürmeye başlarsa, şimdi testler yazmanız, kod incelemeleri yapmanız, beyaz tahtada iyi çözümlere karar vermeniz, programınızı eşleştirmeniz vb. yönetimin zaman farkını fark edeceğinden emin olun. 3 ila 4 ay arasında değişen bir şeyi gözlemlemek ve ölçmek kolaydır. Sağlam bir kod tabanına, sürdürülebilir bir ürüne, iyi istikrarlı bir mimariye sahip olmak, daha iyi bir ürün yapısı sağlayan şeyler ölçmek o kadar kolay değildir. En iyi uygulamaların sizi uzun vadede ne kadar zaman alacağı, önceden ölçülemez, belki de bundan sonra bile değil. Diğer yandan, bir aylık gecikme bir beyin değildir. Bu konuda yönetim desteği var. Zor bir satış yapmaya hazırlanın.

Ayrıca işin içeriğine de bakın. Bu çalışma şeklinizi etkiliyor mu? Kod kalitesinden veya en iyi uygulamalardan ödün vermek de dahil olmak üzere herhangi bir maliyetle takip edilmesi gereken fırsatlarınız var mı?

Bir an için perspektifi değiştirelim.

Spagetti'lerini sanat eserine eklediklerinde çok üzülüyorum ve işteki ruh halimi ve üretkenliğimi etkiliyor.

Üzgünüm ... ne? Sanat? Çoğumuzun akranlarımızdan tanınması için burada olduğumuzu biliyorum ve sadece iyi bir geliştiriciyseniz bunu elde edersiniz, ancak kodunuz bir resmin yanında bir müzede mi görüntüleniyor? Bakan insanlarda duygulara neden olmak zorunda mı? Sevinç ve mutluluk gözyaşları mı? Evet, alaycıyım ve kasten abartıyorum çünkü bir gerçeklik duygusu korumak istediğimi söylemek istiyorum. Kodunuza duygusal olarak bağlı kalmayın.

Herkesin "sanatını" dayatmak için ekibi, projeyi ve şirketi mutlu bir şekilde otobüse atacak bir adamla çalışıyordum. O, “hakikat sahibi” idi ve tanım gereği, herkes sadece deneyimsiz, kör, öğrenmek istemiyordu, umursamadı ya da sadece aptalcaydı. O adam olma. Bir yazılım geliştiricisi olarak işiniz iyi kod, test edilmiş kod, sürdürülebilir kod, iş değeri katan ve gelecekteki değişimler altında bunu yapmaya devam edebilecek kod yazmaktır. Tüm bunları bütçe ve zaman kısıtlamaları altında yapmak zorundasınız. Profesyonel bir yazılım geliştiricisi olmanın anlamı budur. Bir sanat galerisi olmadığınız sürece sanat iş için kötüdür. Pragmatik olun ve işler hakkında dengeli bir görüş sahibi olun. " İş arkadaşlarımın yazdığı ve sadece işe odaklanan kötü kodu nasıl görmezden gelirim?"Sorunu çerçevelemeniz nedeniyle sorunuz kapatıldı. Geri çekilin ve her şeye bakın.

Bu durumu sadece 'kötü şirket kültürü', 'deneyimsiz mezunlar' vb.

TL; DR: Durumların neden bu durumda ortaya çıktığını öğrenmek için duruma dikkatlice bakın. Durumun böyle olduğunu kabul et ve oradan nasıl gelişebileceğini gör. Herkesin bu konuda ne düşündüğünü öğrenin. Savaşını seç. Zorla değişiklik işe yaramıyor. Değişiklikleri yapmak için ortak çalışın. İşlerin nasıl geliştirilebileceğini göstermeye çalışmalısınız, ne kadar kötü olduklarına işaret etmeyin. Herkesi, yapmak istediğiniz şeyin uzun vadede daha iyi olmak için olduğuna ikna edin. Onları gemiye alın.

Ve küçük adımlarla yapın.

Bir seferde çok fazla değişiklik getirirseniz insanlar cesaretini kaybedecek ve pes edeceklerdir. Değişiklikler zaman alır. Şirketinizi veya şirketinizi değiştirin. İyi şanslar!

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.