it-swarm.dev

Bir sorunu çözemezseniz ne olur?

Üniversiteden mezun olmaktan bir yıl uzaktayım ve pratik problemleri çözmeyi dört gözle bekliyorum. Özellikle biraz araştırma ve çok fazla düşünme gerektiren önemsiz olanlar.

Ama aynı zamanda, bu benim en büyük korkum - ne kadar çok uğraşsam da, çözemediğim bir sorunla karşı karşıya olmak. Ve köşede yaklaşmakta olan son teslim tarihlerine ilişkin kod sunma baskısı ile, uni'deki güvenli oyun alanlarından görüntülerken biraz korkutucu görünüyor (olabilecek en kötü şey bir dersi veya sınavı tekrarlamanız gerektiğidir).

Peki, uzun süredir endüstride olanlar için, yapamayacağınız bir sorunu çözmeniz söylenirse ne olur? Oldu mu, eğer öyleyse ne oldu? Sadece düşürdüler ve "Ah, sanırım başka bir şey yapabiliriz" mi dediler? Sonuçları oldu mu? Kınandınız mı, hatta kovuldunuz mu?

58
gablin

Her şeyden önce, korkunuz çok sağlıklı ve normal. İşte yazılım endüstrisinde yaklaşık 15 yıl sonra düşüncelerim.
İşte kendinize sormanız gereken bazı sorular:

  1. Sorun anlıyor musunuz sorun mu var?
  2. Sorunun çözülemez olduğunu biliyor musunuz (zaman/bütçe kısıtlamalarınız dahilinde)?
  3. Sorunu nasıl çözeceğinizi bilmiyor musunuz?
  4. Müşteriniz/patronunuz imkansızı mı istiyor?.
  5. Buna değer mi? (ROI)
  6. [~ # ~] gerçek [~ # ~] problem mi?

1) Her şeyden önce, sorunu anladığınızdan emin olun. Aptalca bir soru yok. Müşterinizin/patronunuzun neye ihtiyaç duyduklarına karşı ne istediğini anlıyor musunuz?

2) Bu olacak. "Bana yarın bir köprü inşa et" . Bir sorunun kısıtlamalarınız dahilinde çözülemediğini bildiğinizden emin olun. Müşteriniz/patronunuz zaman/bütçe konusunda esnek olabilir ve bunlar size daha fazla zaman/bütçe sağlayacak şekilde değiştirilebilir.

3) Sorun anlaşılabilir ve kısıtlamalar mantıklıysa ve sorunu çözebilecek bir teknoloji varsa, ancak yeterince bilmiyorsunuz ... StackOverflow ve İnternet bunun için. Önce araştırmanızı yaptığınızdan emin olun. Ölçülebilir cevapları olan açık sorular sormaya çalışın. Akranlarınıza sorun. Bir tasarım oturumu yapın.

4) Bu, yanıt numarası 2'nin bir çeşididir. görünüyor müşteriniz/patronunuz imkansızı soruyor gibi. Biraz araştırma yap. Nedenini tam olarak bilmediğiniz ve açıklığa kavuştuğunuz sürece, sorunun çözülemez olduğunu asla söylemeyin.

5) [~ # ~] roi [~ # ~] Yatırım Getirisi anlamına gelir. Bu, zamana yapılan bir yatırım anlamına gelir. Senin zaman!. Sorun, sorunu araştırmanız ve çözmeniz için gereken süreyi garanti edecek kadar önemli mi? Bunu müşteriniz/patronunuzla tartışın

6) Bu gerçek bir sorun mu? Müşteriler, çoğu zaman, ne istediklerini anlarlar, ancak ne istediklerini anlamazlar. Müşterinizin/Patronunuzun gerçekten neye ihtiyacı olduğunu anlamaya çalışın ve bunu onlarla tartışın.

Umarım bu yönergeler size yardımcı olur.

56
funkymushroom

Görünüşte çözülemez bir sorunla karşılaşırsanız hatırlamanız gereken iki şey:

  • Diğer kişilere en kısa sürede takıldığınızı bildirin. Çok geç olmadan tahmini zamanında ayarlamalarına yardımcı olacak.

  • Bir sorunu çözmenin bir yolunun işe yaramadığını görürseniz - çok fazla zaman kaybetmeden sorunu bırakın. Yardım isteyin veya farklı bir yaklaşım deneyin. Kendinizi zor ve zekice kanıtlamak değil, işleri halletmekle ilgili.

57
user8685

StackOverflow ;)

Ama şaka bir yana, bilinmeyenden korkma. Tüm kariyeriniz bilinmeyenle karşı karşıya kalacak, çünkü zaten çözdüyseniz, bir dahaki sefere sorun olmayacak.

26
Arcturus

Basit bir cevap vereceğim: Yardım istiyorum. Tıpkı diğerleri gibi, bazen bir şeye çözüm bulmaya çalışırken sıkışıp kaldığımda yardım isterler.

Düzenleme: Sık sık sadece bir iş arkadaşına sorunu açıklayarak veya bazen bile StackOverflow gibi sitelerde bir soru göndermeye başladığında çözüm bulduğunu belirtmek gerekir.

10
MetalMikester

Farklı açılardan bakın

Ben birçok kez karşılaştım, genellikle ne olur:

  • Bir sorununuz var, başlangıçta kafanızda nasıl çözeceğinize dair bir fikriniz var.
  • Aslında çözümünüzü uygulama söz konusu olduğunda, bunun işe yaramadığı ortaya çıkıyor (muhtemelen gerçek sorunun zayıf modeli nedeniyle).
  • Sorunu çözmek için mücadele ettikten sonra, daha fazla araştırma veya başkalarına sorma. Hiçbiri işe yaramıyor, saf hayal kırıklığı!

Sonunda yapmak istemediklerinizi seçtiniz ->

"Kirli Hack"

Çalışıyor, ama kendinizi kirli hissediyorsunuz ...

9
Darknight

Bunu yapamamanın nedenine bağlı ...

  • mantıksal olarak imkansız: Gereksinimleri yazan kişi ile tartışın, belki bir yanlış anlama var. Örnek: Bir noktada, spec uygulamanın tüm platformlarda (Windows/Linux/Mac) yerel görünmesi ve yerel olması gerektiğini ve başka bir yerde programın tam olarak görünmesi gerektiğini söylüyor tüm platformlarda aynı

  • teknik olarak imkansız: Çalıştığınız araçları yeniden değerlendirin, belki de uygun değillerdir. Sorunu meslektaşlarınızla ve proje yöneticinizle tartışın. Örnek: çöp toplamanın belirsiz bir süre için yürütmeyi durdurabileceği bir ortamda zor gerçek zamanlı gereksinimler

  • yetersiz performans: Belki yanlış algoritma kullanıyorsunuz veya sorun çok zor (ör. NP-zor) ve gereksinimler bunu dikkate almıyor. Kullandığınız algoritmayı yeniden değerlendirin, belki daha hızlı bir yol vardır. Sorunu meslektaşlarınızla ve proje yöneticinizle tartışın. Mükemmel bir sonuç yerine yeterince iyi bir sezgisel tarama yapmayı düşünün. Örnek: düzinelerce hatta yüzlerce düğümle yol optimizasyonu

  • sadece nasıl yapılacağını bilmiyorsun: Akranlarına sor, yığın akışı iste, internette ara. Kullandığınız aracın/lib desteğine başvurun. Proje yöneticisi ile tartışın.

  • çalışmalı, ancak çalışmıyor ve neden olduğuna dair hiçbir fikriniz yok: Programı daha test edilebilir hale getirmek için yeniden düzenleyin. Yarış koşullarını düşünün, genellikle bulunması zor hataların sebebidir. Akranlardan yardım isteyin, dört göz ikiden fazla görüyor. Kullandığınız araçlarda/kitaplarda bilinen hatalar için İnternet'i kontrol edin.

5
user281377

Genellikle, düzeltmem için benden daha akıllı birini bulurum. O yapar ve o benim patronumdur. Aptal hissediyorum. Devam ediyoruz.

5
johnny

Sanırım diğer insanlar bununla profesyonel olarak nasıl başa çıkacaklarına dikkat çekiyorlar. Hayal kırıklığı, korku gibi kişisel duygularla nasıl başa çıkılacağını söylemek istiyorum.

Alt satırda, sorunları zamanında çözmeseniz bile FINE olacaksınız. Hayat Devam Ediyor.

Bazen, program zorlanırdı. Proje başarılı olamadı. İşten kovulup daha sonra iyi bir işiniz olabilir. Asla bilemezsin.

Beni yanlış anlamayın. Sorunun orada olmasına izin vermenin iyi olduğu anlamına gelmez. Tek yapabileceğimiz elimden gelenin en iyisini yapmak ve serbest bırakmak.

Bazen, hayal kırıklığı, problem çözmekten korkmanın ortalama bir geliştirici olarak hayatım olduğunu düşünüyorum.

4
exiter2000

Bir problemi çözemediğimi söyleyeceğimden emin değilim, ama bir problemi çözmeye çalışırken vazgeçtiğim durumlar oldu. Bir hatayı düzeltmeye ya da nasıl yapılacağına dair bir fikrim olmayan bazı özellikleri uygulamaya çalışmak için saatler harcadıktan sonra, ekibime, takım liderine veya menajere birisine "Bu konuda takılıp kaldım. Yapmamı istiyor musun?" nerede olduğumu biliyorlar. "Devam edin, alacağınızı düşünüyoruz" veya "O kadar önemli olmayan başka bir şeye geçin" ya da birkaç şey söyleyebilirler ve sonra ne yapmam gerektiğini bilirim.

Ben çözmedim hatalar ve yapmadım bazı özellikler vardı, tabii. Bir şeyi halletmeye çalışabilirken, her şey makul bir zamanda çözme gücümde değil. Buradaki kilit nokta, üstlerinizin nerede olduğunuzu bilmesi için iletişime sahip olmaktır.

Bununla birlikte, bazı özel koşullarla karşılaştığım birkaç kez var:

  1. Toronto'daki büyük bir Kanada bankasında çalışırken, görev verildiğinde nasıl yapacağımı bilmediğim her türlü şeyi yapmam istenecekti. Örneğin, "Esc" ve "Enter" tuşlarının önyükleme sırasında değiştirildiği dizüstü bilgisayarları güvence altına almak için bu yöntemi test etmem istendi. "Bu işe yarar mı? Bunun kullanıcılarla iyi olacağını veya olmayacağını nasıl bilebilirim?" Bunu yapmak için donanım veya diğer kaynaklara sahip olmadığım başka görevler de vardı. Aynı zamanda oldukça eğiticiydi, çünkü bu bana gelecekteki herhangi bir istihdam durumunu not etmek için birçok şey verdi. Bana ne zaman ödeme yaptığımı, zamanımı nasıl takip ettiğimi ve diğer iletişim sorunlarının bana gerçekten unutmadığımı ayrıntılı bir şekilde göstermesi gibi şeyler.

  2. Calgary'deki bir Uygulama Servis Sağlayıcısı'nda çalışırken, hizmet olarak sattığımız dahili uygulamamızda başka bir web sitesinin bir kopyasını oluşturmaya çalıştım. Buradaki kilit nokta, ilk olarak ne yapacağım konusunda bir zaman çizgisi veya öneri verilmedi, sadece genel araştırma ve bir ay sonra, bazı ağrı kesici ilaçlara kötü bir tepki verdiğim için bir demo istendi. Bu tepki aniden işten aldığım bir hafta sürdü ve ertesi hafta, ertesi gün kovulduğum için son saman gibi bir Microsoft etkinliğine gittim. Burada dikkat çeken bir şey, benim bölgeme yaklaştığında patronumla nasıl zayıf bir ilişkim olduğunu hemen düşündüğüm, "Şimdi sorun nedir?" ki bu, birçok kez birisine tepki olarak oldukça sağlıklı bir şey değildi.

2
JB King

Diğerlerinin söylediği gibi, iletişim kritiktir - takıldığınızda insanlara (etkilenecek) haber vermek: patronunuz, ekip üyeleri, müşteriler vb.

Keskin bir iş arkadaşım bir zamanlar başarının iki şeyin kökenine sahip olduğunu aşıladı:

  1. İlişkiler
  2. Beklentiler

İyi bir ilişkiye sahip olmak, sanırım, iyi iletişimin ve beklentileri ön plana çıkarma işlevidir.

2
gcraig

Polya prensibini takip ediyorum:

"Çözemediğiniz bir sorun varsa, çözemediğiniz daha kolay bir sorun vardır: bulun."

George Polya

İlkenin güzelliği, bir noktada yeterince küçük bir sorun olacağı ve çözmeyi başarabileceğinizdir, umarım doğru bir şey yaptıysanız bootstrap asıl sorunun çözümü Bu ilke henüz başarısız olmadı.

2
davidk01

Sorunları çözme dizim (sonraki her spet yalnızca bir önceki çalışmadıysa gerçekleştirilir):

  1. Google'ı deneyin
  2. Birisine sor
  3. Arama SO doğrudan (Google'ı atlayarak)
  4. Düşünmek
  5. Duman (== kafa temizleyin)
  6. SO hakkında bir soru sorun
  7. Sabaha kadar bekleyin (== kafayı daha da temizle)
  8. O kirli hack'i kullan ve kendim hakkında kötü hissediyorum :(

Kötü sorunlar 5-6. Adımlarda çözülür.

Gerçekten çok kötü problemler genellikle biraz zamana ihtiyaç duyar (7. adım, çoğu 'öyle görünüyor ki-hiçbir şey yapamaz' probleminin çözümüdür). Ve demek istediğim - günün geri kalanında başka bir göreve geçin ve sorunu sabah ilk iş olarak çözmeye çalışın. Harikalar yaratıyor.

Ve ancak o zaman adım 8 gelir.

1
Jefim

" yardım isteyin " cevapları kesinlikle doğrudur. Belirli bir sorunla karşılaşan ilk kişi olmanız pek olası değildir.

Ama yine de bir deney olarak, eğer yardım yoksa? Sorunu kendi başınıza çözmeniz gerekiyorsa ne olur? En önemli problem çözme yeteneği tanımlamak ve meydan okumak kendi varsayımlarınızı . Bir sorunla ilgili varsayımlarınızı tek tek sıralayabilir ve her birini sırayla ortadan kaldıracaksanız, nihayetinde hatalı varsayımla karşılaşacaksınız ve sonuç olarak yeni bir çözüm olasılıkları açılacaktır.

(Bu arada, iş görüşmesinde karşılaştığınız bir sorunun cevabını göremediğinizde de en iyi yaklaşım budur. Varsayımlarınızı sözlü olarak listeleyin ve hangisinin yanlış olduğunu belirleyin ve ardından soruna yeniden saldırın. tüm "hile soruları" doğal ancak hatalı varsayımlara dayanmaktadır).

1
JP Alioto

Yardım istemek gerçekten en iyi cevaptır, ancak işinize yarayabilecek biraz daha fazlası var.

Peki, uzun süredir endüstride olanlar için, yapamayacağınız bir sorunu çözmeniz söylenirse ne olur? Oldu mu, eğer öyleyse ne oldu? Sadece düşürdüler ve "Ah, sanırım başka bir şey yapabiliriz" mi dediler? Sonuçları oldu mu? Kınandınız mı, hatta kovuldunuz mu?

Evet, başıma geldi ve hayır, bunun için hiç kınamadım veya kovulmadım çünkü ...

Sektörde, sorunların zamanında ve bütçe dahilinde çözülüp çözülmeyeceği ile ilgilidir ve iyi yöneticiler bunun her zaman mümkün olmadığını anlar.

Yöneticiniz gerçekten ne oluyor, "X yapmanızı istiyorum, ne alacağını düşünüyorsunuz?" Ve birçok cevap verebilirsiniz. İyi olanlar şunları içerir:

  • Buna gerçekten benzer bir şey yaptım, bu yüzden üç hafta ve 3.000 $ değerinde test donanımı alacağını düşünüyorum.
  • Genelde buna benzer bir şey var. Bu yüzden düşüneyim ve bu öğleden sonra size geri döneyim.
  • Daha önce hiç böyle bir şey yapmadım. Şimdi araştırıp yarın size döneyim.
  • Gezegendeki hiç kimse bunu yapmadı. Eğer içine bakmak isterseniz, bir tahminde bulunmak için yeterli deneyi yapmak iki haftamı alacak.

İlerlemeye ve nasıl ilerleyeceğine karar vermek yöneticinin görevidir. Devam etmeyi seçerse, tahminlerinizi karşılamak sizin görevinizdir veya bir engel olup olmadığını yöneticiye bildirin. Bunu yaptığınız sürece, makul bir şirkette olumsuz sonuçlar olmayacaktır.

Tabii ki, işinizi yapmak için size zaman veya kaynak vermeyen mantıksız şirketler de var. Bunlardan bazılarında çalıştım ve herkes şirketin kısıtlamaları içinde çözülemeyen sorunlar yaşadı. Bunlardan biri sekiz ay içinde programlama personelinin yaklaşık% 98'ini işten çıkardı ve bu kesinlikle bir sonuçtu, ama kişisel olarak bana yönelmedi ve hala patronum ve patronunu oradan iyi arkadaşlar olarak görüyorum.

1
Bob Murphy

Üzerinde duracağınız birçok farklı sorun türü vardır ve birçoğunun bunları ele almanın farklı yolları vardır.

Bir tür sorun, daha önce görmediğiniz bir şeyi garip bir ses API'sı veya benzeri bir şey uygulamaktır. Bu durumda, ciddi şekilde SO'ya sorarım.

Bir diğeri çözülmesi gereken çok büyük bir problem. Bu tip bir soruna tekrar tekrar yaklaşılabilir. Size "Humongous Uygula" derler. Sen ona bak ve anlayabildiğin kadar çok adım yaz. Sonra karmaşık adımları daha küçük adımlara ayırırsınız. Daha küçük adımlar hakkında düşünmeye zorlandıkça, daha net hale gelirler. Teknik bir güçlükle karşılaşırsanız, bir test uygulamasını deneyin ve gerekirse burada sorun.

Daha can sıkıcı sorunlardan biri, kötü belirlenmiş taleplerdir. Sadece "x" i yapan bir şey istiyorlar ve size nasıl yapılması gerektiğini söylemiyorlar. Bunlar için iyi bir yaklaşım, bir arayüz (genellikle bir GUI) prototipidir ve birisinin onunla oynamasına izin verir.

Sonra karşılanamayan zaman kısıtlamaları vardır. Bu genellikle beklentilerin değiştirilmesini ve fonksiyonel prototiplerin verilmesini içerir.

Genelde bir şekilde yolunuzu bulursunuz. Korkutucu ama içine girdikten sonra hemen hemen her zaman bir yol bulabilirsiniz.

En iyi bahis sadece dizüstü bilgisayarınızın dış "Panik Yapmayın" kelimeleri Boya olabilir. Ve havlularını da unutma.

1
Bill K

Deneyimlerim, yeni mezunların derinlere atılmamasıdır. Bunun yerine, deneyimli geliştiricileri de içeren bir ekibin parçası olacaksınız.

Benim tavsiyem: Onlardan faydalanmak. Bir sorunun nasıl çözüleceğinden emin değilseniz veya çözümünüzün doğru yönde olup olmadığını öğrenmek istiyorsanız, bunu onlarla tartışın. Ve bir yere sıkışıp kaldığınızı düşünüyorsanız, deneyimli adamlardan birini alın ve sorununuzu açıklayın ve yardım isteyin.

Çoğu zaman, sadece sorununuzu açıklamak bir çözümü ortaya çıkaracaktır ve çözümünüzü açıklamak da içindeki kusurları aynı şekilde ortaya çıkarabilir.

Genellikle bu, sorunu doğru ve doğru bir şekilde tanımlamamış olmanızdan kaynaklanır. Belki de asıl sorunun kendisi yerine önceden tasarlanmış bir çözümü çözmeye çalışıyorsunuzdur.

Sorun sadece gözlemlediğiniz şeydir, hayal ettiğiniz şey değil.

"Kanlı arabam çalışmayacak" bir problem. "Pil bitmiş." araç çalıştırma sorununa önceden tasarlanmış bir çözümdür. Bataryanın test edilmesi bile sorunun tek nedeni olduğunu kanıtlamaz. Aküyü gerçekten şarj etmediyseniz veya değiştirmediyseniz ve aracı başarıyla çalıştırmadıkça, akünün sorunlu sorunun olduğuna dair kanıtınız yoktur.

Basitleştirin ve basitleştirmeye devam edin. Küçük parçalara ayırın. Bu parçaları çözemezseniz, parçalayın. Daha iyi hissedeceksin. Sonra farklı küçük parçalara ayırın. Bu parçaların her biri gözlemlenebilir bir fenomen olmalıdır.

0
CAD bloke

Böyle bir şey duymadım. Her şeyden önce size asla çözülemeyen bir sorun verilmez. Sorun zor olabilir ve çözülmesi zaman alabilir. Bir sorun verildiğinde, bunun gerekli olacağımı söylemelisiniz. Araştırmanızda bu sorunun gerçekten çözülemeyeceğini düşünüyorsanız, bir bayrak kaldırmanız ve yöneticinize bu sorunun biraz daha zaman alacağını veya çözülmesi gerçekten zor olduğunu söylemelisiniz. Her şey programla ilgili. Bir şey için söz veriyorsanız ve teslim edemeyecekseniz sorun olur. Ancak durumunuzu ve endişelerinizi söylemeye devam ederseniz, ona bakmak yöneticinin sorumluluğundadır. Sizi yardım edebilecek veya takvimi ayarlayabilecek uygun kişiye yönlendirmelidir.

0
Manoj R

Burada harika tavsiyeler var! Benim iki sent değer; BÜYÜK sorundan bunalmayın, bir problemi çözmenin heyecan verici ve zorlayıcı kısmının, sorunu tekrar tekrar daha küçük parçalara ayrılan yönetilebilir ve daha da önemlisi anlaşılabilir alt problemler serisine böldüğünü unutmayın. alt problemleri. İyi bir programcı bunu genellikle kod oluştururken dakikalar temelinde yapar (kod bölümünün genel karmaşıklığını azaltmaya yardımcı olmak için işlevler, yöntemler, alt rutinler vb. Kullanarak) ve bu yöntem genellikle herhangi bir BÜYÜK probleminiz için geçerlidir hayattaki yüz (sadece işte değil).

0
Rob

Belli bir sorunun ne olduğuna bağlıdır. Ancak yanıt şunlardan biri olabilir:

  1. Bir geçici çözüm/ikame bulun
  2. İstediğinize yaklaşan ticari bir çözüm satın alın
  3. Vazgeçmeyin ve üzerinde çalışmaya devam edin başarılı olana kadar ihtiyacınız olduğu sürece.

3 numara problemden zaman alabilir ve haftalar veya aylar sonra tekrar ziyaret edebilir. Bu genellikle yardımcı olur.

0
GrandmasterB

Deneyimlerime göre, bazen en azından zaman kısıtlamasında çözemediğiniz bir sorun vardır. Bu yüzden mümkün olan en kısa zamanda yardım istemek, bazı çözme çabaları başarısız olduktan sonra.

Temel kuralı hatırlayın: her zaman patronun sizi işe alma nedenine bakın. En iyi iş sonucu için yapabileceğinizi düşündüğünüz her şeyi yapın ve bazen bu erken başarısızlık raporudur (geç rapordan çok daha iyi).

Kısacası, çözümü bulabileceğinizi düşünüyorsanız, denemekten çekinmeyin, ancak patronunuza risk ve zaman maliyeti hakkında tahmin verin. Şimdi onların sorunu.

0
Hoàng Long

Yüz milyon dolarlık proje deneyimli insanlarla bile başarısız olursa, hala öğrenci olduğunuz için başarısız olmanız konusunda endişelenmemelisiniz. Üzerinde çalışılacak bir sorun yaşadım ve eğer takıldığınız bir şeyse, çözmek için yaptığınız her girişimi kaydetmelisiniz.

Bu yardımcı olur:

  1. Bir sorunu çözmek için yapılan girişimlerin kanıtı.
  2. Bu tür bir başarısızlığı kaydetmek önemlidir, bu yüzden ondan öğrenirsiniz ve birkaç gün sonra çalışacağını düşünerek tekrar yapmazsınız.
0
dimitarie