it-swarm.dev

Geliştiricileri sorumlu tutmak için ölçüm

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)?

72
Kyle

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.

101
Jon Hopkins

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.

48
Bob Murphy

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.

42
user2567

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.

23
user281377

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:

  • otomatikleştirilebilir bir test yazmak (ve incelemeyi geçmek) ve regresyon test takımına eklemek için bir nokta,
  • başka bir regresyon testi başarısızlığına neden olmamakla birlikte, onları geçmeleri için bir nokta.

Geliştirici ve yönetici, sistemi aşağıdakilerle birlikte geliştirebilir:

  • önemli geliştirme ve test alanları üzerinde ortaklaşa anlaşmak
  • test paketini bağımsız olarak gözden geçirme ve çalıştırma.
  • sınırlı ticari yararı olan ancak bu özelliği sunmak için çok fazla geliştirme ve test gerektiren bir özellik oluşturmamaya karar vermek. (En verimli kod satırı, ticari yarar sağlamadığı için yazmaya karar verdiğiniz koddur).
  • sistemi tüm sistemi bozmadan artımlı özellik geliştirmeyi kolaylaştıran bir mimariye (model-görünüm-denetleyici gibi) bölmek.

Geliştirici, metriği oynayamaz çünkü:

  • gereksiz testler yönetici incelemesi ile engellenir.
  • ince taneli testler yönetici incelemesi ile engellenebilir.
  • ince taneli testler sistemin kalitesini artıracaktır.

Yönetici metriği oynayamaz çünkü:

  • çok fazla testin reddedilmesi geliştiricinin yıpranmasına neden olur.
  • çok fazla test talep etmek, daha sonraki bir süreyi reddetmeyi zorlaştıracaktır.

Geliştirici, yöneticiyi vidalayamaz çünkü

  • Testlerle sunulan her bir işlevsellik birimi de regresyon paketini geçmelidir. Bu, geliştiriciyi başka bir kodu kırmadan dikkatlice gelişmeye zorlar.
  • Herhangi bir çalışma iddiası, yeni testler ve regresyon testlerini geçerek kanıtlanabilir olmalıdır.

Yönetici, geliştiriciyi vidalayamaz çünkü.

  • Talep edilen her bir işlevsellik birimi anahtar test senaryoları ve işi bitirmek için gereken test senaryolarının sayısını tahmin etmelidir.
  • Çok fazla iş istediğinizde agresif bir program ve/veya ücretsiz fazla mesai istemek zordur.

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.

7
Jay Godse

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.

6
Angelo

Bazı fikirler:

  1. uygulanan özellikler
  2. hatalar giderildi (daha sonra KG tarafından yeniden açılacak hatalar için de hesaplanır)
  3. kullanıcı şikayetleri çözüldü (2 ile aynı olmadığını unutmayın - bir ciddi hata boyunda ağrı olabilir, 100 yazım hatası o kadar önemli olmayabilir)

Ayrıca izlemek isteyebilirsiniz:

  1. Testlerle kod kapsamı
  2. Dahili belgelere göre kod kapsamı
  3. Harici (kullanıcı) belgelerle özellik kapsamı
2
StasM

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.

2
user1249

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

1
Tim Williscroft

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?

0
Jack Marchetti