Programlama işlerinde kaçırılan son tarihler yaygın mıdır? [kapalı]


18

ODesk'teki serbest çalışan işimdi. Belirli bir zamanda daha önce birkaç iş yaptım, ancak son başvuru tarihini ilk kez kaçırdım. Bu çok uzun bir işti ve elimden geleni yaptım ama son teslim tarihini hala kaçırdım. Şimdi çok korkuyorum. Çünkü son teslim tarihini kaçırdığım benim hatam.

Sorum şu: Bu büyük bir endişe mi yoksa kaçırılan son tarihler programlama işleri arasında yaygın mıdır, bu yüzden bu konuda fazla endişelenmemeliyim?


1
Tamamen çevreye bağlıdır. Örneğin, son işim, tahminlere dayanarak müşterileri ücretlendiren dijital bir ajanstaydı. Son tarihi kaçırdıysanız, işletme para kaybetti. Şu anki işim o kadar dinamik ki, hiçbir gerçek son teslim tarihi yok .. Başka bir yerde dikkatim gerekirse, bana ayırmak için uygun zaman tanınır. Belki de bunu sorunuza dahil etmek cevaplara yardımcı olacaktır.
Simon Whitehead


3
kaçırılan son tarihler tüm işlerde yaygındır
Steven A. Lowe

2
Umarım kaçırılan son başvuru tarihi hakkında müşteri ile iletişim kuruyorsunuzdur. Eksik son tarihler olur, ancak ne zaman beklenmedik olmamalı - bunun geldiğini görebilmeli ve bu konuda iletişim kurabilmelisiniz. Genellikle "Hayır, henüz hazır değil" den daha kolay hale getirir.
Bobson

6
Hızlı yap, ucuz yap, iyi yap: iki tane seç.
Reactgular

Yanıtlar:


45

Evet. Cevapsız süreler yazılım geliştirmede yaygındır.

Birçok serbest çalışan, teknik borca ​​girerek veya halının altındaki kiri gizleyerek son teslim tarihlerini karşılar.

Frederick Brooks'un Efsanevi Adam Ayını Paraphrasing :

Efsanevi Adam Ayının yazarı Frederick Brooks

  • Proje liderleri yazılım görevlerini inşaat mühendisliği görevleriyle aynı şekilde tahmin etmeye devam ettikleri için çoğu zaman gözden kaçar, bu da yazılımın açık bir normlar içermeyen yeni bir el sanatları endüstrisi olması nedeniyle kusurlu bir yaklaşımdır. Bu o kadar doğrudur ki, bir programcının yanlış uygulama kodunu "iznini" iptal edemezsiniz veya birisine başlık olmadan programlama için dava açamazsınız.

  • Yazılım geliştirme, diğer disiplinlerin eksik olduğu doğal bir karmaşıklığa sahiptir. Büyük bir programın bir arabadan daha fazla bileşeni olabilir ve bu bileşenler daha farklı şekillerde etkileşime girebilir.

  • Yazılımın görselleştirilmesi zordur, bu nedenle bir projenin farklı yönlerini görmek için farklı diyagram türleri kullanılır ve bu yönler dikey olmayabilir. İnşaat mühendisliği ise, sıhhi tesisat, kablolama vb. Aynı grafikte (veya katmanlarda) dikey olarak görmenizi sağlayan taslaklara sahiptir.

  • Bir köprü veya bina yarı inşa edildikten sonra müşterinin projenin kapsamını tamamen değiştirmesi yaygın değildir. Yazılım projelerinde bu genellikle böyledir.

  • Yazılım geliştirmede son teknoloji yazılım projelerinin tekrarlanabilir ve neredeyse risksiz olduğu noktaya ulaşmamıştır. Microsoft gibi en büyük yazılım şirketleri bile son tarihleri ​​aylarca veya yıllarca kaçırabilir.

  • Çoğu buharlı yazılım, bu tür sorunlar nedeniyle kesilen yazılım projelerinden başka bir şey değildir.

Sonuç olarak:

Kötü tahminler ve karmaşıklığın hafife alınması, yazılım geliştirme sürecinin el sanatları niteliğinden dolayı, olgunlaşmamış bir disiplin olarak kaldığı anlamına gelir.


11
+ İyi cevap, ancak mekanik ve inşaat mühendisliğine biraz maruz kaldıktan sonra, programcıların nasıl inşa edildiğine dair en ince fikre sahip olmadıklarında bina köprüleri ve diğer şeylerle nasıl kolay karşılaştırmalar yaptıkları eğlenceli.
Mike Dunlavey

3
Yazılımın plan olduğu fikrine abone olurum (mühendislikteki plan açısından - projenin her detayını açıklamak). Mühendislik söz konusu olduğunda, fiziksel inşaat süresi o kadar baskındır ki planlamadaki büyük farklılık bir rol oynamaz. Ancak yazılım sadece plandan oluştuğu için ... "Yazılım geliştirmede son teknoloji, yazılım projelerinin tekrarlanabilir ve neredeyse risksiz olduğu noktaya gelmedi" - bu durumlarda proje neden hiç? Bir şey tekrarlıysa ve otomatikleştirilebiliyorsa, birden fazla kez yapılması gerekmez, ancak bir kez yapılabilir ve kopyalanabilir.
Maciej Piechotka

2
@ user61852: Beni yanlış anladın. Mühendisliğe yönelik 'plan', bilgisayar bilimine `` kaynak '' gibidir - yani her bileşenin ayrıntılı açıklaması - ancak bir kez elimize geçtikten sonra onu yapabiliriz (girebilir makeya da her neyse) .Bilgisayar biliminde 'plan' nedir planın 'mühendislik. Fark, makebilgisayar biliminde kaynak kodu (testler ve entegrasyon dahil) yazarken en fazla birkaç saat alırken, mühendislikte planlama yıllarca sürerken (yapısal hesaplama da dahil olmak üzere) aylar alabilir, bu nedenle planlamanın varyansı daha düşük etkiye sahiptir. ikincisinde.
Maciej Piechotka

1
@ user61852: Tekrarlama ile ilgili olarak - bilgisayarların en iyi olduğu şey otomasyon. Basit bir blog oluşturmanız gerektiğini varsayalım - doğru 'tahminler' yapacağınız noktada bir wordpress (veya başka bir blog sistemi) alacaksınız, böylece hiçbirini (köprü durumunda) hala farklı bir ortamınız var, bu yüzden kaya farklı olabileceğinden veya bir kuş yaşam alanı olabileceğinden veya görünümü bozabileceğinden daha dikkatli bir şekilde adapte olmanız gerekir) - programcılar araçları oluşturmaktan daha sorumlu olabilir (standart köprü modeli).
Maciej Piechotka

2
Efsanevi Adam Ayı'ndan alıntı bonusu; Frederick Brooks bunca yıldan sonra ayağa kalkıyor çünkü teknoloji değil insanlara odaklanıyor.
Michael Shopsin

3

İş almaya devam etmek istiyorsanız, kaçırılan son başvuru tarihleri ​​yaygın bir uygulama haline gelmemelidir.

Bununla birlikte, tipik olarak, bir şeyler olması durumunda kendinize tahminlerinizde ekstra bir "kıpır kıpır" odası bırakmak istersiniz (ve her zaman olur). Ek süre içinde eklediğinizi açıklamanız gerekmez, sadece mantıksız hale getirmeyin. Belki toplam sürenin% 5-10'u arasında? Bunu öğrenmenin tek yolu bunu birkaç kez yapmaktır.

Tahminlerde gerçekten iyi olmak için, belirli bir widget türünü kodlamanın ne kadar sürdüğünü bilmelisiniz ... örneğin, X istemcisi için sonsuz bir kaydırma widget'ı oluşturmanız gerektiğini varsayalım. hata olmadan üretime dağıtmak için, bunu sonsuz kaydırma tahminleriniz için bir temel olarak kullanabilirsiniz.


2
Tahmin yaparken her zaman% 20 yer ayırırım. % 5-10 çok az. Sanırım ne kadar dikkatiniz dağılmış olduğuna bağlı. Yalnız geliştirici hiç rahatsız edilmeyebilir
BЈовић

Yalnız bir geliştiriciyim ve projelerim için genellikle% 10 marj alıyorum.
Konsole

Hmmm ... bkz. Hofstadter's_law
Philip

1
% 5-20 ile karşılaştırıldığında,% 100 marjın daha iyi olduğunu düşünüyorum. Ciddi anlamda. Seçeneklerinizi daha iyi keşfetmenizi sağlar. Ve Stack Exchange hakkında daha fazla soruya cevap verin.
Acumenus

Oh evet, 15 yıllık tecrübeli bir proje yöneticisi ona bir tahmin vermek için 1,5 yıllık bir çaylak yazılım mühendisine baskı yaptığında geliştiricinin hatası, daha da agresif olacağını ayarlar ve geliştirici proje kemiklendiğinde gevşiyor gibi davranır . Hiç yazılım yazabilecek bir yönetici veya PM için hiç çalışmadım ve bana işlerini devam ettirmek istiyorsanız, kaçırılan son başvuru tarihlerinin yaygın bir uygulama haline gelmemesi gerektiğini söylüyorsunuz? Kaçırılan son tarihler endemiktir, çünkü çoğu PM, işlerinde tam anlamıyla yetersizdir. En iyi müdürüm hala bir yazılım mühendisi değildi, sadece sınırlarını biliyordu.
kötümser

3

Yazılım geliştirmede eksik son tarihler nadir değildir. Bir yazılım projesinin ne kadar süreceğini kesin olarak tahmin etmek neredeyse imkansızdır.

Profesyonellik bununla nasıl başa çıkacağınızı gösterir. Bir son tarihi kaçıracağınızı bildiğinizde, müşterinizi buna göre planlayabilmeleri için mümkün olduğunca erken bilgilendirin.


2

Oldukça yaygındır, ancak daha iyi olabilirsiniz. Sen gibi soyut bir şey kullanarak tahmin içine bakmak isteyebilirsiniz hikaye noktaları , ve takip hızı gerçek tahminlerini hesaplamak için. Bu kavramlar genellikle scrum ile ilişkilidir, ancak scrum yapmasanız bile kullanılabilir.

Hızla ilgili şaşırtıcı olan şey, geliştiricilerin tahminlerinde hesap vermekte zorlandıkları kesintiler ve beklenmedik karmaşıklık gibi tüm somut olmayan şeyleri kapsamasıdır. Tüm olasılıklar zaman içinde ortalama. 10 hafta boyunca ortalaması alınan hız tahminlerimiz% 5 civarında doğrudur. Yine de aynı görevleri saatler içinde tahmin ettiğimizde, aynı takım sürekli olarak% 30-50 oranında hafife alıyor.


1

Benim teorim (kanıtlanmamış), insanların karmaşık işleri iki ya da üçe küçümsemek için evrimleşmeleridir. Kongre her zaman NASA'ya şöyle bir şey soruyor: bir hafta içinde bir servis aracı kurmanın veya bir hafta içinde geri geldikleri aya seyahat etmenin maliyeti ne olacak? Tüm beklenen maliyetleri bitirdikten sonra, bunun üç katına mal olacağını keşfederler.

1970'lerde bir şaka yaptık: herhangi bir programcı tahminini alın, sayıyı ikiye katlayın ve bir sonraki zaman birimine taşıyın. Bu nedenle, bir programcı iki hafta içinde yapılabileceğini söylüyorsa, dört ay içinde bitirecektir.

Birisi bir mutfağı yeniden şekillendirdiyse, genellikle 'Bunu iki hafta içinde yapacağım' diye düşünüyorlar. Yaklaşık altı hafta sonra bitiriyorlar.


1
NASA'nın sorumla ne ilgisi var?

1
Daha da önemlisi, insan evriminin sorunuzla ne ilgisi var? NASA, büyük projeleri hafife alan eğitimli ve deneyimli kişilerin kamuya açık kayıtlarında açıkça belgelenmiş bir örnektir. Kısacası, deneyiminiz 'doğal'.
Meredith Poor

Çoğu insanın tahminlerinin en az iki katına çıktığını kabul etsem de, bir sonraki zaman birimi ... hmmmm. Her neyse, NASA zaten nasıl yapacaklarını bildikleri görevleri tahmin etmede çok iyidir. Sorun şu ki, insanlar bilmediklerini bilmedikleri zaman görevleri tahmin etmede çok iyi değiller. NASA'nın gerçekten çok sayıda öncü işi yaptığı için, yapmaya başlamadan ne yaptıkları hakkında çok şey bilmemeleri şaşırtıcı değil. Böylece, ilk hafife alma nedeni. Ayrıca, bazı insanlar iyimser, bazıları kötümser olmaya yatkındır. Evrimin olduğundan emin değilim.
Dunk
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.