Gelişme ile ilgili başarısızlıkların üstesinden gelmenin en verimli yolu nedir? [kapalı]


49

Hepimiz oradaydık:

  • Projeniz başarısız oldu veya iptal edildi.
  • Üzerinde çalışarak geçirdiğiniz gün kod, ekibiniz tarafından reddedildi.
  • Ekibe tanıttığınız tasarım deseni kaos yarattı.
  • Herkes fikirlerini görmezden geliyor.

Sorum şu ki, bir programcının bu gibi kalkınma ile ilgili başarısızlıkları ele almasının en verimli yolu nedir?


Devam eden Yapılandırılmış Etiket Temizleme Girişimi'nin bir parçası olarak, bu soru meta-tartışma sitemizde tartışılmaktadır .

Yanıtlar:


79

Projeniz başarısız oldu.

Yazılım geliştirme, proje başarısızlıklarına karşı oldukça hassastır ve ciddiyetine bağlı olarak, bu en iyi yönetim tarafından gerçekleştirilir.

Birçok proje başarısız oldu ve daha birçokları başarısız olacak, bu yüzden not al! Projenizin neden başarısız olduğunu öğrenin, böylece bir dahaki sefere aynı hataları yapmazsınız. Başarısızlıklarından, başarılarından daha çok şey öğreniyorsun.

Kodlama günlerini harcadığınız şey ekibiniz tarafından reddedildi.

Çalışmanızı kaydedin (daha sonra için). İki olasılık vardır: (a) Berbat bir durum ve birden fazla insanın aynı şekilde yanıt vermesi bunun bir göstergesi (b) Bu gerçekten dehası bir iş, ama insanların alıştığı veya anlayabileceği şeylerin çok ötesinde. İnsanlar genellikle anlamadıkları şeyleri sevmezler. Belki de zamanın doğru olduğunu VEYA farklı bir "Kültür" ile farklı bir yerde olduğunu göstermek daha iyidir

Şirketinizde fikirlerinizi kimse dinlemiyor.

Muhtemelen kötü bir fikir, VEYA kültür senin düşüncenle uyumlu değil. Ya kültürünüzü destekleyen bir yere gidin ya da fikrinizi tekrar eleştirel olarak değerlendirin (nesnel olarak kendi önyargınız olmadan) -> benim fikrim gerçekten bu kadar iyi mi? <- Eşini öldür

Takımınıza zorla girdiğiniz tasarım deseni bir karmaşa yarattı.

Dürüst olun, elinizden gelenin en iyisini yaptınız ama nasıl planladığınız ortaya çıkmadı. Bir takım olarak tekrar başlamak veya tasarımdaki hatalardan ders almak ve ilerlemek daha iyi olabilir.


29

Başarısız değiller - deneyimler.

Sizi nasıl hissettirdiklerini ve bu duygudan daha fazlasını isteyip istemediğinizi düşünerek deneyimlerinizden öğrenir ve büyürsünüz.

Eğer kötü bir deneyimse (sunduğunuz liste gibi), o zaman eşlik eden kötü duygu muhtemelen kaçınmak isteyeceğiniz bir şeydir (eylemlerinizin etkisini umursamayacağınız kadar kalın tenli değilsiniz).

Genel olarak, kendinizi başkalarıyla kıyaslama konusunda çok fazla karışma, onlar kadar seninle uğraşmakta zorluk çekiyorlar .


1
Sadece iki kelime: Takviye Öğrenme .
Wok

-1: Onlar deneyimler hem ve arızaları.
Thomas Eding

14
  • Sakin ol - panik yapma, daha iyi bir şey yapmaz
  • Hasar kontrolü - hala kaydedilebilecek olanı kaydedin
  • Hatalarından ders al - yanlış olanı tekrar yapmak muhtemelen işe yaramayacak
  • Yeni bir başlangıç ​​düşünün - bir sonraki denemenize bir hayal kırıklığı ve suçluluk duygusu olmadan sırtlan
  • Büyük başarısızlıklara bakın - Ariane 5'in ilk uçuşuyla karşılaştırıldığında , başarısızlığınız ihmal edilebilir
  • Yalnız halledemiyorsanız bir psikoterapiste danışın

11

Bir şey inşa ediyorsun.

Benim için (herkes için doğru olduğunu sanmıyorum), bir şeyler inşa etmek (çizgi roman, çizimler, küçük oyunlar, herhangi bir şey) savaşma başarısızlığına geri dönmek için biraz güven inşa etmek gibidir. Ayrıca öfkenizi veya acınızı ya da başarısızlıkla ilgili duygularınızı ifade etmek için iyi bir yol olabilir, ancak “yapıcı” bir şekilde.

Bu zaten benim için çalışıyor.


6

Sen sordun :) Birer birer:

* Your project failed.

Bu pek yeni değil. Hepimiz özel olarak başarısız olduk ve hepimiz akranlarımıza karşı tamamen başarısız olduk. İlk ve orta eğitimden geçen herkes bunu yaşadı.

Hata yapamaz ve istikrarlı bir istihdam bekleyemezsem, İK'ye, insanların gelecekteki düşüncelerden men edileceğini bildiren bir not göndermeyi düşünmelisiniz.

Art arda yapılan birkaç başarısızlık ya sizin makul olmayan taleplerinize ve özelliklere sahip olduğunuz ya da hatalarınızdan ders almadığınız anlamına gelir. Her iki senaryo da hemen harekete geçiyor.

Pek çok insanın sadece iş bulmak için bir şeyler imzalaması ve daha sonra gereksinimlerin gerçekleşmesi için bir yol bulması düşünülebilir.

* What you have spent days coding was rejected by your team.

Olur böyle şeyler. Diğerlerinin dediği gibi, kaydedin. Tekrar yap. Bu yüzden buna iş diyoruz. Bence, bu durumda, muhtemelen ekibi ne yaptığınıza pek dahil etmediniz.

Ayrıca, gereksinimlerin dün veya bir saat önce değiştiği de olabilir. Ancak bu bir istisna olmalı, norm değil. Hakem değerlendirmesi yararlı olduğu kadar acımasız. Eğer kodunuz sürekli olarak “yetersiz” olarak kabul edilirse (veya bunun gibi bir şey), beyinleri toplayıp başkalarını dahil etmek için daha fazla zaman harcamalısınız. 'Takım' kendi kendini tarif etmekten başka bir şey olmadığı sürece, bu sorunun çoğu takım düzeninde bir yanlışlık olduğuna inanıyorum.

* Nobody listens to your ideas in your company.

Yine, bunun içeriğe ihtiyacı var. Ne zamandır oradasın? Arkadaş korsanların yeteneğinize ne kadar güveniyor? Birçok insan için daha fazla işle sonuçlanan fikirlerin onu reddetmek için herhangi bir sebep davet edebileceğini düşündünüz mü? Bir zamanlar IPV6'ya hazır olmadığı için reddettiğim bir şey vardı, ancak geridönüş aygıtında basit bir etki alanı soketi kullandı (yalnızca). Batan kişi, daha fazla iş yapamazdı.

Ayrıca, kendinizi ne kadar iyi ifade ediyorsunuz? Arkadaş edinebilir ve insanları etkileyebilir misin?

* The design pattern you introduced with force in your team created a mess.

Bu nedenle neden güçten kaçınılması gerekti? Konuşabilmek, dinleyebilmek için ön şart değil. Başka yorum yok.


5

Oh, çocuk, gerçekten her şeyin sana olanları kastediyorsan, bu çok fazla!

UYARI : Aşağıdaki hususların çoğunda, sizi eleştirdiğim ve sizi yanlış durumlardan sorumlu kılmak ve dış etkenleri göz önünde bulundurmak istemediğimi hissedebilirsiniz. Yapmıyorum. Sadece çok fazla ayrıntı vermemeniz ve ben de işlerin ters gitmemesini sağlamak için üstlenilecek eylemlerin kontrol listelerini vereceğim. Ben kendim (herkesin yaptığı) birçok hata yaptığımı biliyorum ve sadece onlardan öğrenirsek daha iyi olacağız. Ve onlardan bir şeyler öğrenmek için, onları en başta hata olarak görmeye başlamalıyız ve bizim tarafımızdan neyin yanlış gittiğinin sorumluluğunu üstlenmeliyiz. Cehennem, başkalarının kısımlarında neyin yanlış gittiğinin sorumluluğunu üstlen, ondan da öğrenebilirsin.

Projen başarısız oldu

Şimdi hafifletmek için yapabileceğin bir şey yok.

Ancak gelecekte çoğalmasını önlemek için çok şey yapabilirsiniz. Projenizi ve zaman yönetimi becerilerinizi geliştirmeye çalışmanızı öneririm.

Bu konuda okuduğum en iyi kitaplardan biri ((geçerli tavsiye) / sayfa) Konuyu okudum, belki de en iyisi olmasa da, Rob Thomsett'in Radikal Proje Yönetimi .

Projenizin başarısız olduğunu gerçekten belirtmiyorsunuz, ancak olağan maliyet / zaman / kalite üçgeninde dengesizlik getiren bir şeyin birleşimini varsayardım . Gözlerimdeki en önemli faktör, hem teknik aktörlerinizle (geliştiriciler ve testçiler) hem de paydaşlarınızla her zaman iletişim halindeyken projeye ve kalkınmaya öncülük etmektir. Çok fazla proje başarısız çünkü sponsorları veya paydaşları dinlemiyorlar ve onları sürece katılmaya zorlamıyorlar.

Eğer karışmazlarsa, ne istediklerini bilemezsiniz. Ne istediklerini bilmiyorsanız, teslim edemezsiniz. Eğer teslim etmezsen, mutsuz olacaklar. Bu bir başarısızlık. Ayrıca, paydaşlarınızı dahil etmiyorsanız, yazılım mühendisliği gerçeği ile bağlantısı kesilir, yani sorunlarınızı anlamadıkları anlamına gelir. Eğer sık ​​sık sizinle iletişim halindeyse, başa çıkmanız gerekenleri daha iyi anlarlar. Onlara “küçük” bir kahkaha özelliğinin aylar alacağını söylerken daha fazla anlayacaklar. Planlamanıza daha iyi güvenebilirler çünkü onu inşa etmeye yardımcı oldular. Bir proje, sadece "başlangıçtaki özellikler, testler, teslimat sonunda" ile başaramaz. Sadece asla yapmaz. Şartnamede istenenleri iletebilirsiniz,

En önemlisi, bir retrospektif yapmak ve ego-az olduğundan ve bir suçlama oyunu olduğundan emin olun. Sadece sorunları tanımla.

Günlerce kod yazdığınız şey ekibiniz tarafından reddedildi

Bu durumda oldum. Yine, bunu hafifletmek için yapabilecekleriniz dışında:

  • Daha sonra SCM'de tutun.
  • Belki küçük parçalar ve parçalar aşamalı olarak büyük bir yeniden düzenleme yapmak yerine ana kod tabanına yerleştirmeye çalışın.

Ancak bu tür bir durumu önlemek için yapabileceğiniz şeyler var:

  • Neden oldu Reddetmenin sebebi nedir?
  • Bunu gördüğümde çoğu zaman (ve bu benim için de geçerliydi), geliştiricinin yalnız başına ya da inek-çocuk kodlama modunda gittiği ve hiç istenmediği şeyleri ürettiği anlamına geliyor. İş gereksiniminden gelmeyen kod, süslü ve "daha iyi" olabilir, ancak genellikle zaman ve para kaybı olur. Artı, tekrar test etmeniz gerekeceği için entegre ederseniz daha da pahalıya mal olur. Sana para veren insanlar gibi düşün: o seviyede de verimli olmalısın.
  • Üretilen yazılımın kalitesi yeterli miydi? Şirketinizde faaliyet gösteren standartlara ve sözleşmelere uygun mu?
  • Yöneticileri bu konuda yönlendirmek için periyodik olarak (ve sık sık!) Rapor ettiniz mi? Bazen ekibin diğer geliştiricileriyle takas yaptınız mı? Değilse, bunun hakkında hiçbir şey bilmiyorlarsa, şimdi değerlendirmeleri ve incelemeleri büyük bir zaman maliyeti olacaktır. Sonunda aynı zamanda hesap değil. Her zaman kiralık dairenizi temizlemeye çalışmak ve daha sonra sadece taşındığınızda temizlemeye çalışmak gibi: Bu berbat bir iş, çok yorucu, düzenli olarak yapılmasından daha zor ve sık sık yapılmayacak sağ.
  • Ürün testleri yaptınız mı? Birim testleri? Entegrasyon testleri?
  • Kodunuz SCM'de düzenli olarak kontrol edildi mi? Farklı bir dalda mıydı? Farklı bir şubeye mi ihtiyacı vardı yoksa bagajda mı yapılmış olabilir? Kabul kodunu ertelemek genellikle kötü bir işarettir. Belli ki bazen yapmaya kararlısın, ama sadece kendini ayağından vuruyorsun.

Şirketinizdeki fikirlerinizi kimse dinlemiyor

Burada 2 seçenek var ve ikisine de bakacağız:

  • Fikirlerin kötüydü.
  • Fikirlerin iyiydi.

Kötü olduklarını varsaymaya başlayalım (yine, bunun üzerinde kendi kendine düşünerek ve fikrinizi kabul etmenin sadece düz kötü olduğunu kabul etmek zor olabilir, biliyorum). Bunu değiştirmek için ne yaparsın?

  • Neden bu fikri buldun? Ne var mantık ? Fikrinizin masaya getirmeye çalıştığı şeye gerçek bir ihtiyaç var mı?
  • Bu fikir nasıl aklına geldi? Kendi kendine yaptın mı? Paylaştın mı Beyin fırtınası? Plan? Prototip? (bunları doğru sırayla yapın. Yolda başarısız olursa, o zaman fikri atın, devam etmeyin. Veya en azından çalışma programınıza göre değil.)

Fikirler sadece fikirlerdir. Onlara sadece fikir olarak öneriyor ve reddedilirse, neden bu konuda kendini kötü hissettiğini anlamıyorum. Bununla birlikte, kimseye haber vermeden onlara karşı davranırsanız ve SONRA sadece fikirlerinizi iletir ve reddedilirse, açıkça boşa harcanan zamandaki hüsranı hissediyorum. Ve yöneticileriniz de yapıyor!

Fikirlerin iyi olduğunu varsayarsak:

  • Sunumun iyi miydi?
  • Sunumu sunma şekliniz iyi miydi? (: Biz huysuz, konum Ben bahsettiğimi biliyorum geliştirici olarak çalışıyorum kibirli , bilgiçlik taslayan her zaman doğru olan pide ve kiminle bu kadar çalışmak zor sıklıkla nedeniyle bizim orantısız egoları ).
  • Uygulamak için bir planın var mı? Maliyet ve zaman hakkında düşündün mü? Kullanıcılara / müşterilere nasıl fayda sağladığını düşündünüz mü? Satışları nasıl etkilediğini düşündünüz mü? Bu fikir üzerinde çalışmanın diğer projeleri ve öncelikleri nasıl etkileyebileceğini düşündünüz mü? Bana “neden bütün bunları yapmalıyım, yöneticilerimin ve pazarlama veya satış ekiplerinin işi?” Diyeceksiniz. Şu an hariç, tüm işlerinin bir bölümünü yapmaya çalışıyorsun.

Takımınıza zorla girdiğiniz tasarım deseni karışıklık yarattı

  • Deseni neden tanıttınız?
  • Bir karmaşa yarattıysa, muhtemelen ya:
    • doğru model değildi
    • doğru uygulanmadı
    • doğru entegre edilmedi.
  • Bunu nasıl tanıttınız? “Dağınıklık” halini tam olarak nasıl tanımlarsınız?
    • daha az okunabilir kod mu?
    • daha az bakım gerektirebilir mi?
    • yapılar bozuldu?
    • Farklı "karışıklık" türleri vardır. Karışıklık bilerek edilir orada başarısızlık olduğunu bilmek yardımcı olabilir ve bu tasarım deseninin hatamdı eğer.

Ayrıca, yaklaşımın kendisinden biraz şaşırdım. Aslında tasarım modelinin tanıtılması için zorlamak zorunda kaldınız mı? Bu oldukça garip görünüyor. Bir kalıp zaten var ya da kalıbınıza göre çözümünüzün bir kısmını yeniden canlandırmanız gerekiyor. Sen yok itin (insanlar gibi bir çerçeve veya teknoloji benimsenmesi olur senin gibi itti insanlar yazabilmek için bastırıyor başlamadan gibi artık her yerde XML olması gerçekten zor ve HTML5 büyük parlak harflerle kendi ürün kapağında).

Neden zorlamak zorundaydın? Neden direnç vardı? Belki de haklıydı.

Bu özel kalıbın kod tabanınızı önemli ölçüde geliştirmeye yardımcı olabileceğine dair örnekler verebildiniz mi (örneğin, Kalıplara Yeniden Düzenleme örneği ile eşleştirerek ).


Tamamen konu dışı not ama soruyu sorarken ilk olarak yazılım hatalarına atıfta bulunduğumu düşündüğümde düşündüğüm ilk konu budur. bileşenler. Belli ki garip ve kirli bir kesmek gibi görünebilir (ve gerçekten öyle), ancak ismin kendisi o kadar mükemmeldi ki, bir başarısızlıkla başa çıkmak için oldukça havalı bir yol için hepimiz için teşekkür ederiz! :)


@Rachel: Düzenlemelerin META-SO çabanıza uyması için teşekkür ederiz. Sorunun o zamandan beri yeniden ifade edildiğini fark etmemiştim.
haylem

3

Adım 1: Sinirlenmek sorun değil!

Birincisi, başarısızlıkla karşılaştığınızda kızgın veya öfkeli olmak anlaşılabilir bir durumdur. Böyle bir durumda birisine tavsiyelerde bulunmak, büyük olasılıkla "Sadece üstesinden gel ve devam et" veya "Sadece bir öğrenme fırsatı olarak düşün" ifadesini istemeyeceklerdir.

Aslında, özel olarak ya da bir arkadaşınızla yapmadığınız sürece, hayal kırıklıklarınızı canlandırmanın ve rahatsız etmenin sağlıklı ve üretken olacağını düşünüyorum. İnsanların bunu yapmanın farklı yolları vardır, ancak bence en üretken yollardan biri kızgın bir sahte mektup yazmaktır (Önemli! Bu mektubu kimseye göndermeyin ). Olanların neden haksız olduğunu hissetmek gibi duygularını açıkla.

Adım 2: Sakinleşmek için biraz zaman ayırın.

Hissettiğin her şeyi ifade ettiğinden emin ol ve öfkeni havalandırdıktan sonra sakinleşmek için biraz zaman ayır. Belki sadece birkaç dakika ya da belki birkaç saat gerekir.

3. Adım: 1. adımda neler olduğunu inceleyin

Bu noktada umarım durum hakkında daha nesnel düşünebilirsiniz. Bir mektup yazdıysan, kendine oku. Birine güvendiyseniz, ne dediğinizi hatırlamaya çalışın. Birine bağırmayı hayal ettiyseniz, o zaman zihinsel olarak bunu gözden geçirin.

Sinirli olduğumda sık sık bir mektup yazıyorum ve sonra sakinleştikten sonra, mektubu daha net bir şekilde iletmek için mektubu daha net bir şekilde anlatmaya çalışacağım. o sırada hissetmek.

Mesele, nesnel olarak puanlarınızın ne olduğunu bulmaya çalışmaktır. Mantıklı mıydı? Belki de açıklama veya daha fazla ayrıntıya ihtiyaçları vardır. Temelsiz mi? Kendinizi bir başkasının ayakkabısına nesnel olarak sokacak olsanız, yaptığınız noktaları anlar mısın? Bu noktalara katılıyor musunuz? Bu fırsatı kendinizi değerlendirmek için kullanabilirsiniz. Ne yaptın peki? Daha iyi yapabileceğin şeyler nelerdi?

4. Adım: Bir eylem rotasına karar verin

Durumu düzeltmek veya en azından iyileştirmek için yapılabilecek bir şey var mı? Durumu düzeltmek veya iyileştirmek için yapılabilecek gerçekçi bir şey olup olmadığını düşünmek için bir dakikanızı ayırın. Genellikle yoktur, ama bazen vardır.

Bir şey için hatalıysanız, o zaman birisinin resmi bir özür kadar basit olabilir, neyin yanlış gittiğini, ne yaptığını, neden yaptığını ve düzeltmek ya da olmasını engellemek için ne yapacağınızı açık bir şekilde açıklayabilirsiniz. gelecek.

Ardından, geleceği iyileştirmek için neler yapabileceğinizi düşünün. Aynı şeyin tekrar olmasını önlemek için ne yapabilirsiniz? Kendiniz için bir plan oluşturmak için 3. adımdan öğrendiklerinizi elde etmek ve kullanmak istediğiniz şeyin ne olduğuna karar verin.

Diğerleri başarısız olursa, yeniden başlatmayı deneyin:

        try
        {
            // ...
        }
        catch (OhNoes111Exception)
        {
            // reboot fixes everything!
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
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.