Saatte kod satırları hakkında bir soru sordum ve yeni bir tane yırttı. Bu yüzden olgunlaşmış takip sorum şu:
Kod satırları değilse, uzak programcıların etkinliğini ölçmek için iyi bir ölçüm nedir (saat/gün/zaman birimi ile)?
16 yıl içinde aradığınız türden hiçbir zaman uygulanabilir bir metrik bulamadım.
Esasen faydalı olmak için her şeyin ölçülebilir, temsili ve ifadesiz olması gerekir (yani sistem akıllı geliştiriciler tarafından çalınamaz). Yazılım geliştirmede parçayı bu şekilde ölçülebilir kılmak için çok fazla değişken vardır.
Elde ettiğiniz en yakın şey tahminlere karşı ilerlemedir - bu, üzerinde anlaşmaya varılan tahminler içinde kaç görevi yerine getirdiklerini gösterir. Buradaki hile (a) iyi ve adil tahminler almak ve (b) geliştiricinin suçlanamayacağı/suçlanmaması gereken iyi nedenlerle tahminlerin nerede aşıldığını anlamaktır (bu, tahmin edilenden gerçekten daha karmaşık bir şeydir). Sonuç olarak, geliştiricileri çok zorlarsanız, artan verimlilik nedeniyle değil, yastıklı zaman çizelgeleri nedeniyle her zaman karşılaşılan bir seviyeye kadar yavaş yavaş tahminler bulma olasılığınız yüksektir.
Tahminler açısından çok fazla ilerleyin (teslim etmek için baskı oluşturmak için onları azaltın) ve çalışmaların verimliliği artırmadığını ve takım moralini etkilemesi muhtemel olan telefon son tarihleri oluşturursunuz (daha fazla bilgi için bkz. Peopleware) ).
Ama aslında biraz yanlış bir soruna mı bakıyorsunuz acaba? Verimliliği ölçmek söz konusu olduğunda, uzak programcılar diğer programcılardan neden farklıdır? Uzak olmayan programcıların verimliliğini nasıl ölçersiniz?
Uzaktan çalışmalarına güvenmemekle ilgili ise, bu temelde daha geniş bir güven sorunudur. Evden çalışmalarına güvenmiyorsanız, ya o güveni kurmanız, evden çalışmasına izin vermemeniz ya da olması gerektiği zaman gerçekten çalıştıklarından emin olmanın bir yolunu bulmanız gerekir.
Metrikler fabrikalarda en iyi şekilde çalışır ve programcılar bir Montaj hattında çalışmaz.
Verimliliği ölçme arzusunu tamamen anlıyorum.
Ama aynı metriği bir aile doktoru ve bir kalp cerrahı için kullanır mısınız? Michelangelo'nun Sistine Şapeli'ni boyamasına ve Meksika'da bazı kadife siyah kadife Elvis resimlerini patlatmaya ne dersiniz?
Louis de Broglie, çok kısa bir doktora tezi yazdı, sınav görevlileri bunu reddedeceklerdi - ancak de Broglie'nin yüksek derecede yerleştirilmiş bir aristokrat olması ve iyi bir mazerete ihtiyaçları vardı. Böylece sınav görevlileri onu reddetmeyen Einstein'a gönderdi, Nobel komitesine yönlendirdi ve de Broglie beş yıl sonra Nobel Fizik Ödülü'nü aldı.
Sayısal önlemler, dökme demir veya araba kapılarındaki vida cıvataları gibi tekrarlayan işlerde en iyi sonucu verir. Ancak daha önce yapılan kodu tekrarlıyorsanız, bir programcıya ihtiyacınız yoktur, sadece bir kopyalayıp yapıştırmanız gerekir. Programlama temelde yaratıcı bir disiplindir ve üretkenlik tamamen ne yaptığınıza bağlıdır.
Bazı günler, 1000 satır kod yazdım. Bugün, koordinat geometri hatalarını düzelteceğim ve kod küçülebilir. Bir Linux çekirdek sürücüsünde bir hatayı düzeltmek zorunda kalsaydım, tüm günü hata ayıklamaya harcayabilir ve yeni bir kod satırı yazamazdım.
Programcı verimliliğinin ölçülmesi çok, çok, çok özneldir.
Joe'nun üretken olup olmadığını bilmek istiyorsanız, Joe'nun ne yaptığını bilen ve aynı alanlarda yetkin olan Sally ve Ralph'i bulun ve onlara sorun.
Şimdiye kadar gördüğüm en iyi sayısal sistem Agile'nin planladığı poker noktaları oldu. Bu sadece Joe ve Sally ve Ralph'a Joe'nun yaklaşan işinin muhtemel olduğunu düşündüklerini sormanın süslü bir yolu. Daha sonra, her ekip üyesi için haftalık puan verimliliğini ölçebilirsiniz. Ancak o zaman bile, bir ekibin tahminlerini kalibre etmek biraz zaman alır ve sayılar bulanık ve kolayca atılır.
Birçok insan verimlilik planlaması ister, böylece program planlama yapabilirler. Bu bir çeşit "MS Projesine takın, kritik yola bakın ve gemi tarihiniz var" teorisidir. Bu işi hiç görmedim - çok fazla bilinmeyen var. İsterseniz Şelale kullanın, her şeyi önceden tasarlayın, değişiklik siparişlerine izin vermeyin ve yine de hayal kırıklığına uğramaya hazır olun.
Kullandığım tek metrik çalışan yazılım miktarı belirli bir üretim için ürettiği para miktarı Yatırım yaptım.
Programına bakılmaksızın, uzaktan çalışıp çalışmadığı, aldığı duraklamaların sayısı, kullandığı metodolojiler veya çalışma saatlerinin sayısı.
Yani çalışan yazılım Yani:
Kullanıcı/müşteri tarafından tanımlanan ve istenen kalite seviyesini karşılayan özelliklerin listesi
Tarafından para miktarı:
Kullanıcı/müşterinin tanımlanan özellikler + bakım maliyetleri için ne kadar ödediği
Bu nedenle, nasıl inşa edildiğine ve üretilen işin kalitesine doğrudan sahiptir, ancak herhangi bir kaynak kodu satırı metriğine bağlı değildir.
Bazı görevlerin ne kadar sürebileceğini tahmin etmek için deneyimli bir geliştiriciye veya ekip liderine (bu uzak programcılarla ilişkili olmayan) ihtiyacınız vardır ve etkinlik, gerekli süreleri tahminlerle karşılaştırarak ölçülür. Tahminlerin iyi olduğundan emin olmak için, birkaç görevi rastgele seçebilir ve bunları kontrolünüz altındaki bir şirket içi ekip tarafından yürütülmesini sağlayabilirsiniz.
Verimliliği ölçmenin bir başka ilginç yolu, bir yönetici tarafından günde incelenen otomatik testlerin sayılması olacaktır. Geliştirici:
Geliştirici ve yönetici, sistemi aşağıdakilerle birlikte geliştirebilir:
Geliştirici, metriği oynayamaz çünkü:
Yönetici metriği oynayamaz çünkü:
Geliştirici, yöneticiyi vidalayamaz çünkü
Yönetici, geliştiriciyi vidalayamaz çünkü.
Yöneticinin bir diğer büyük yararı da, yeni geliştiriciler getirebilmesi ve sistemi sessizce kıran bir kod veremeyeceğini bilmesidir (regresyon test paketi bunu yakalar).
Yöneticinin en büyük dezavantajı, sisteminin, özelliğin 1 sayfalık açıklamasında göründüğünden daha karmaşık olduğunu kabul etmeye zorlamasıdır. Diğer dezavantaj, bu yöntemin şeffaflığının, geliştiricileri iş başarısızlığı için suçlamayı zorlaştıracağıdır.
Performansı değerlendirmek için her türlü karmaşık metriği tasarlamak kesinlikle mümkündür, ancak günün sonunda kararınızın önemli bir kısmı, kod tabanına yakın olan kişilerin öznelliğine ve girdilerine güvenmek zorundadır.
Örneğin, bazı takımların dahili olarak iğrenç ve süreksiz bir eğimi çok hızlı bir şekilde kranklaması oldukça mümkündür ve bu bile gerekli son tarihi ve spesifikasyonu karşılayabilir. Ancak, bu tür bir çalışma tarzından kaynaklanan teknik borç, ekibin sağlam ve sürdürülebilir bir şeyi çalkalamasına ancak son tarihi birkaç hafta geçmesine rağmen daha mı kötü? Değişir.
Sorunun amacı bir çeşit verimlilik problemini çözmekse, yöneticinin ekibin çalışmasını kolaylaştırmak için gerçekte yaptığı şeyin kullanılan herhangi bir ölçüm tekniğinden daha fazla veya daha önemli olduğunu söyleyebilirim. takımı değerlendirmek . İki yönlü bir sokak. Başka bir deyişle, metriklerin iyi olduğunu söylüyorum, ancak herhangi bir takımdan daha fazlasını istiyorsanız, asıl soru, ekibin verimli olabilmesini sağlamak için mümkün olan her şeyi yapan yöneticinin olup olmadığıdır.
Bu, bir teknik özellik yazmanın, bir takım bulmanın, teknik özellikleri "duvarın üzerinden atmanın" ve bir kronometrenin tıklanmasının ötesine geçer.
Bazı fikirler:
Ayrıca izlemek isteyebilirsiniz:
Müşteri tarafından ölçüldüğünüz şekilde ölçün. Fonksiyonel kod açısından, ancak daha küçük ölçekte.
Kısa hedefler - bir iki hafta - yapın ve programcıların hedeflere ulaşıp ulaşmadığını görün ve bunu tatmin edici bir şekilde yapın.
Bu ön kötü kod yakalamak için izin verir gibi şiddetle, emsal kod incelemesi öneriyoruz.
Nasıl ürün/hizmet satış oranı hakkında.
Bazen komisyon/brüt komisyon olarak adlandırıldığını duydum
İnsanlar iyi ürünler alır, değil mi?
İşletme ürünü satmak istiyor (veya belki de hizmet, bunun için aynı fark)
Yani istediğiniz şey buysa, ölçün.
Biraz iyi değerlendirmeleri alır ve iyi satan bir araba tasarlayan insanlar söylemek gerçekten iyi bir iş yapmış gibi.
Şimdi bu metriği benimseyin ve programlama ekibi iki nedenden dolayı satış elemanıyla etkileşim kurmak isteyecektir.
Propsing altı çizilebilir
Müşterilere etkin bir şekilde ürün satmamak
Kod yazma/Programlama çiviye çekiç koymak gibi değildir. Genel olarak "yazmak" gibi, bence tipik metrikleri de uygulayabileceğiniz bir şey değildir.
Check-in'lerine ya da akran değerlendirmesi, kod incelemesi yoluyla yaptıklarına bakamaz mıydınız?
Ya da, gerçekten sorun çözen çalışma kodu ve çözümler üretiyorlarsa, biliyor musunuz?