Neden hiçbir şey yapamıyoruz?


9

Çoğunluğu yazılım geliştirmeye dahil olmayan orta ölçekli bir şirkette küçük bir ekip üzerinde çalışıyorum. En yeni ve en az deneyimli geliştiriciyim ve başlamadan önce yazılımda profesyonel veya akademik bir geçmişim yoktu, ancak girdimin ne kadar saygı duyulduğundan çok memnunum ve kariyerimin bu kadar erken bir aşamasında ciddiye alındığı için minnettarım.

Yine de, bu cömert mesai ile daha fazlasını yapmam gerektiğini hissediyorum. Takım olarak işleri halletmekte zorlanıyoruz. Durumu iyileştirmek için bir şeyler önermek istiyorum ve bence bu iyi bir fikir olsaydı dinlenecektim, ama ne önereceğim konusunda bir kaybım var.

Sorun olarak tanımlayabileceğim şeyler şunlardır:

  • Eldeki görevlerin belirlenmesi seyrek. Bunun sebebi kısmen yönetimin bir darboğaz olması ve ayrıntılı gereklilikleri istediğimiz kadar halletmek için paramız veya insanımız olmamasıdır. Ayrıca kısmen geliştirdiğimiz yazılım araştırmacı olduğu ve kesin yöntem, etkinliğini belirlemek ve gösterilinceye kadar net olmadığı için.
  • Lead Dev, son zamanlarda her şeyin 'prototip' olduğu konusunda ısrar etmeye başladığı noktaya 'prototip' dediği şeyden çok hoşlanıyor, geri kalanlarımız için kötü kod yazmak ve oynamak için modelcilere vermek gibi görünüyor. Birçok durumda bu alıştırmadan ne çıkmasını beklediği açık değildir. 'Gerçek' uygulama daha sonra iyi uygulamanın prototiplemeden çok fazla zaman aldığı ısrarından dolayı acı çeker. Bu bükülmüş mantığı çözemeye bile başlayamadım ve denemek istediğimden emin değilim.
  • Modellerin bize istenen metodoloji hakkında her şeyi ayrıntılı olarak anlatması bekleniyor ve ortaya çıktıkları şeyin teorik olarak kusursuz olması mutlak güvene sahip. Bu neredeyse hiç doğru değildir, ancak bu durumu düzeltmek için herhangi bir işlem yapılmaz. Modelleme tarafındaki hiç kimse, herhangi bir endişeyi yapılandırılması muhtemel yapılandırılmış bir şekilde ortaya koymaz ve en iyi uygulamaları uygulamak için rehberlik aramaz. Pasiflikleri hakkında da hiçbir şey yapılmaz.
  • TDD'yi daha önce takımda zorlamaya çalıştım, ancak benim için yeni olduğu için zor buldum ve işimin gözetimi olanlar tolere etmeye istekliyken, başka kimseden hiçbir heyecan gelmedi. Yürümek ve bitirmek için harcadığım zaman miktarını haklı gösteremiyorum, bu yüzden fikir - şimdilik terk edildi. Tekrar alınamayacağından endişe ediyorum, çünkü kimseye işlerini nasıl yapacağını söylemeyi sevmez.
  • Artık sürekli bir entegrasyon sunucumuz var, ancak çoğunlukla sadece çok saatlik regresyon testlerini çalıştırmak için kullanılıyor. Tam kapsamlı ünite ve entegrasyon testleri de yapması gerektiği açık bırakıldı, ancak şu anda kimse bunları yazmıyor.
  • Lead geliştiricisiyle kalite konusunu her gündeme getirdiğimde, 'Test özelliği A basittir, B özelliği kullanıcı için çok daha önemlidir, ancak test edilmesi çok zordur, bu nedenle özelliği test etmemeliyiz A'. Bu mantığı çözmek için bir kez daha ilerleme kaydetmedim.

.... vay be. Böyle ifade ettiğimde, düşündüğümden çok daha kötü görünüyor. Sanırım, ortaya çıktığı gibi, bu bir yardım çığlığı.


5
Şirket, müşterinin kullandığı ve beğendiği yazılımı dışarı atmada ne kadar iyi? Diğer bir deyişle, sürecin yıldız olduğuna inanmamanıza rağmen takım iyi sonuçlar alıyor mu?
Robert Harvey

@Robert Harvey - Yargılamak benim için zor. Ürünler son derece niş ve biz (geliştiriciler) karışık mesajlar alırız. Bir tarafta, çığır açan pazarlardaki yeni müşteriler, ürünü başlangıçta öngördüğümüzden daha fazla boğuyor ve bunun bir sonucu olarak hataları buluyorlar; Öte yandan, bazı büyük kurumsal müşteriler güvensizdir ve modeli tekrar tekrar değiştirmek için acele etmeye başlıyoruz. Yazılım ekibi, şu anda şirkette bile birkaç kırılmadan biridir, bu yüzden şu anda iyi görünüyoruz .
Tom W

1
Temel bir çalışma "modeli" üzerinde anlaşmaya varmak ve bunu biraz katılaştırmak için müşterilerden olabildiğince çok geri bildirim isterim. Bir modelin değişmesi müşteriler için gerçekten sinir bozucu olabilir, ancak bu yeni ise, en yeni yazılım, bölgeye gider.
Robert Harvey

İyi soru. Alıcı bir kitleyle bile, uygulamada işe yaramazsa, gerçek değişimin zor olduğunu fark ettim. Benim tavsiyem önce verimliliğinizi artırmaya yönelik yaklaşımları denemek ve daha sonra bunları ekip için göstermek. Uygulama ile, TDD geliştirmede yazma / hata ayıklama / tekrarlama işleminden daha hızlı olabilirsiniz.
Mike B

Yanıtlar:


19

Bir an için şeytanın avukatını oynatayım:

Eldeki görevlerin belirlenmesi seyrek ... Lead Dev, 'prototipleme' dediği şeye çok düşkündür.

Öncü geliştirici prototip oluşturmaya düşkündür çünkü spesifikasyonlar seyrektir. Bu muhtemelen iyi bir şey; yinelemeli mağazalar böyle çalışır.

Modellerin bize istenen metodoloji hakkında her şeyi ayrıntılı olarak anlatması bekleniyor

Bu yinelemeli bir dükkanda çalışmaz. Yinelemeli gelişimin doğası, gereksinimlerin genellikle eksik olmasıdır. Yinelemeler, gereksinimleri karşılamak için gereken şeydir.

TDD'yi daha önce takımda zorlamaya çalıştım, ama benim için yeni olduğu için zor buldum

Bu da işe yaramaz; evangelize etmeden önce teknolojiyi anlamanız gerekir. Ayrıca, yetersiz gereksinimlere sahip yinelemeli bir dükkanda TDD çok fazla ek yük olabilir. Yeterli birim testi kapsamını teşvik etmek daha iyidir.

Artık sürekli bir entegrasyon sunucumuz var, ancak çoğunlukla sadece çok saatlik regresyon testlerini çalıştırmak için kullanılıyor.

Bu küçük, yinelemeli bir dükkanda uygun olabilir.

Kurşun geliştirici ile kalite konusunu her gündeme getirdiğimde, 'Test özelliği A basittir, B özelliği kullanıcı için çok daha önemlidir, ancak test edilmesi çok zordur, bu nedenle özelliği test etmemeliyiz A'

Mağazanızın oldukça sıkı zaman kısıtlamaları olduğu anlaşılıyor; ister beğenip beğenmeyin, bu kısıtlamalara bağlısınız.

Ayrıca, yazılım endüstrisinin bir şeyden, şeyleri ilk önce piyasaya sürmek için "doğru yol" yapmaya değer veren gibi geliyor. Bununla ilgili yanlış bir şey yok (takdire şayan bir şey), ancak buggy yazılımıyla pazarlanan ilk kişi genellikle kazanan. Adil değil, ama böyle.


Bence ona "teknik borç" perspektifinden yaklaşmanız gerekecek. Her şirket zaman tahminleri yapar; zaten çok iyi olduğunu varsayarak, yeniden düzenleme ve eğitim için zaman tahminlerinize% 10 ila% 20 fazlalık oluşturmaya başlayın ve bunu yapın.
Robert Harvey

Devam etmek; Yinelemeli gelişim oyunun adıdır, doğru anladınız. Sorun şu ki, yineleme gerçekten bitmeden önce tükeniyor çünkü kodladığımız şeyin gerçekten doğru olup olmadığı konusunda modelcilerden belirsiz bir platforma alıyoruz. Hiç kimse herhangi bir hatayı tespit edemez, bu yüzden yaptığımız şeyler. Altı ay sonra yanlış olduğu ortaya çıktı. Ben istiyorum gibi Modelist testine karşı karşı daha sağlam kriterleri verilmesi gerektiğini işaret edebilmek için, ama sonra tekrar, değil mi onların bunu söylemek iş?
Tom W

2
@Tom: Modellerin test edilebilir özelliklerinde ısrar etmediğiniz sürece, ekibinize her zaman yanlış yaptıklarını söyleyebilirler. Modellerinden sonuç ürettiğiniz için sizi sorumlu tutacaklarsa, başarı beyan edebilmeniz için bunları test edilebilir özellikler sağladığınızdan sorumlu tutmalısınız . Her şartname, bir tür "git, gitme" testi oluşturmuş olmalıdır, böylece siz ve müşteri (veya modelciler), yoruma tabi olmadan testin geçtiğini karşılıklı olarak kabul edebilirsiniz.
Robert Harvey

Oldukça doğru. Maalesef beni istemediğim bir şeyi kabul etmemize mecbur bırakıyor olabilirsiniz - yetkinliğimiz yok. Genel olarak, ancak özellikle modelcilerde açıktır. Bazı yönler için firma şartnamelerinde ısrar ediyoruz, o zaman hala yanlış oluyor. Onlar bilim adamları ve deneyimlerden bahsetmişken, bilim adamları koda bir deneme gibi davranmaya eğilimlidir - ilerlerken hataları düzeltmek. İş için bu yeterince iyi değil ve bunu tanıması beklenen bir profesyonellik meselesi.
Tom W

Kodu bir deney gibi ele almanın yanlış bir yanı yoktur; bu yinelemeli sürecin bir parçası. Ama sonunda "bu kod bu girdileri kabul eder ve bu çıktıyı üretmesi beklenir". Birim testleri bunun içindir; şartnamenin bir parçasını oluştururlar. TDD'yi neden yapmak istediğinizi görebiliyorum; şartnameleri koda zorlar ... Ama bu işi yapmak için kurum kültüründen desteğe ihtiyacınız var ve TDD'nin bu konuda bir "din" havası var. Her şey bu şekilde test edilemez, bu nedenle sonunda belirli bir rahatsızlık ile yaşamak zorunda kalabilirsiniz.
Robert Harvey

2

Burada prototip oluşturmaya odaklanacağım

prototiplerle ilgili en önemli sorun, kavramın kanıtı olarak kullanılmasıdır

ancak prototip üzerinde daha fazla geliştirme yapamıyorsanız ve nihai ürünü sıfırdan yeniden oluşturmanız gerekirse, prototipi oluşturmamış olabilirsiniz ve onu oluşturmak için zamanınızı boşa harcamış olabilirsiniz

ekibinize tavsiyem bu prototiplerde kalite ve esneklik elde etmektir. İlk kez mükemmel şeyler yaratmanın mümkün olmadığını biliyorum, ancak gelecekteki gereksinimler için genişletilebilir olmaya çalışın


Bir süredir iletişim kurmaya çalışıyorum. Olduğu gibi, prototipler genellikle değerlidir ve bize sorunun doğası hakkında temel dersler verir. Bununla birlikte, bu derslerin öğrenilip öğrenilmediği şansa bırakılır ve uygulamanın kalitesi, geliştiriciyi spesifikasyonu yazmak için prototipi kullanmak yerine beyninden yeniden oluşturmaya dayanır. Başsavcı, ikincisinin gerçekleşmesi gerektiğini söylüyor, sonra bunu sağlamayı takip etmiyor.
Tom W

ne demek istediğini bir prototip istediğini söylediğinde, asgari çalışan bir versiyon istiyor ve olabildiğince hızlı. Bu son versiyonun temeli olacak. Yaklaşımdaki sorun, genç geliştiricilerin (genellikle) iyi kod yazabilmesi veya hızlı kod yazabilmesidir, ancak nadiren her ikisini de aynı anda yapabilir.
Kevin

2
Fred Brooks "Atmak için bir tane yaz, yine de yapacaksın" dedi, bugün 40 yıl önce olduğu gibi.
mattnz

1

Bunlar iyi cevaplar. Ben sadece "iletişim kurmaya çalışmak" en iyi iffy bir teklif olduğunu ekleyebilirsiniz. Bir kuruluşun çalışma şeklindeki değişiklikler hızlı bir şekilde ortaya çıkmaz. Bu olduğunda, genellikle momentumun aşağıdan ve yukarıdan inşa edildiği bir gelgit gibidir. Dolayısıyla, beklentilerinizi düşük tutarsanız ve işlerin nasıl yapılacağını söyleme şansınızı beklerseniz veya başka bir kuruluşla çalışmayı dört gözle beklerseniz daha mutlu olursunuz.


1

Şirkette, eğer öyleyse "anlayan" birini tanımladınız mı, bu adama kilitlenin ve ondan mümkün olduğunca çok şey öğrenin. Değilse, zaman ayırın, kendi başınıza öğrenmeye ve büyümeye başlayın (bir Açık Kaynak projesine katılın veya kendi projenizi başlatın) ve büyümenizi artırabilecek bir yer arayın.

Olabilecek en kötü şey, orada kalmak ve işleri yanlış şekilde nasıl yapacağınızı öğrenmek. Evet, bazı pragmatizm olmalı, ancak gerçekten yetenekli bir ekip işleri doğru şekilde yapabilir ve kaliteli bir ürünle hala zamanında olabilir. Görünüşe göre şu anki ekibinizin aldığı şey yok ve yeni bir tane aramaya başlamalısınız.


"Şirkette" anlayan "birisini tanımladınız mı? LOL
Kenzo
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.