Bir programcıya “Neden” cevabını almadan bir soru sorma


31

Hepimiz bu deneyimi yaşadık. Bildiğiniz birine bir sorunun cevabını bulursunuz, o kişiye soruyu sorarsınız ve tipik cevap ile cevap verirler: "neden?" Neden bilmek istediğinizi açıklıyorsunuz ve probleminizi çözmeye çalışıyorlar.

Sohbeti asıl soruya yönlendirmek ve sadece bu lanet cevabı bulmak biraz zaman alıyor, bükülüyor ve sabır alıyor.

Programcılar neden sürekli bunu yapıyorlar ve davranışlar programlayıcıya ne kadar ileri bir hal veriyorsa o kadar kötüleşiyor?

Bir programcıya, asıl sorunun cevabını çıkarmada en etkili şekilde bir soruyu nasıl sorabilirsiniz?


54
Muhtemelen, bu cevaba ihtiyaç duymayacağınızı bilmeleri nedeniyle muhtemeldir. How do I walk on water? Why? I want to cross the river Build a boat.
Daniel Gratzer

30
Zamanımızı boşa harcamamanı engellemek için tasarlanmış bir numara. Kesin olmayı ya da sormayı bırakmayı öğreneceksin.
yannis

17
Çünkü daha kıdemli programcılar kendilerinden sorulan soruların çoğunun XY soruları olduğunu bilir.
Marjan Venema

12
"Yorum yapanların çoğu, geliştiricinin neden bu şekilde davrandığını açıklamakla ilgili ... Bu sorunun cevabı değil." Bu bir olan doğrudan sorunun cevabı "programcıları sürekli bunu yapmak neden ve niçin davranış programcısı olur kötü daha üst düzey alır?" hangi yazı gövdesinde yer almaktadır. Bu aynı zamanda gösteriyor neden programcılar bu gibi hareket: sık sık sorularınızı istemiyoruz sorular sorarak insanların sormak , ancak bunun yerine sorulara cevap istiyorum demek .

8
"Ellerimi nasıl bazı plütonyumlara sokabilirim?" Hayır hayır. Lütfen soru yok. Sadece nasıl olduğunu söyle.
Erik Reppen

Yanıtlar:


91

Geliştiriciler, birileri bir çözümün nasıl uygulanacağını sorduğunda neden “neden” diye soruyor?

Çünkü bir çözümün çözümü gerçekten uygulamaktan daha uygun olup olmadığını değerlendirmek için daha fazla bilgi gerektirir.

"Bunu nasıl yapacağımı bilmiyorum, ama ne yapmam gerektiğini kesinlikle biliyorum" dediğinde birisine inanmak çok zor. Programcılar sürekli olarak daha derin araştırma yapmakta ısrar ediyorlar çünkü insanlar sürekli yanlış sorular sormakta ısrar ediyorlar. Evet, bazen sonuçta asıl sorunuza geri döner, fakat her zaman değil.

Bir benzetme olarak, birisinin bir tamirciye gidip gelip bir araba aküsünün nasıl değiştirileceğini sorduğunu hayal edin. Genellikle, eğer arızalı bir bataryayı teşhis etme ehliyetindeyseniz, birini değiştirme ehliyetiniz vardır, bu yüzden tamirci değiştirilmesi gerektiğini nasıl bildiğinizi sorar.

Bunu yapıp yapmadığını biliyor ve bir aküye ihtiyaç duymayacağınız ortaya çıkıyor, o zaman sürekli motor kapandığında ışıkları kapatmanız gerektiğine karar verene kadar daha fazla soru sormaya devam edeceksiniz. koşmak yok. Size önden sorarak, zamanınızı boşa harcıyormuş gibi hissediyor ama gerçekten ikinizi de çok daha fazla zaman kazandıracağı deneyiminden biliyor.

Dolayısıyla, sorgulama hattından kaçınmak istiyorsanız, onu neden bahsettiğinizi bildiğinize ikna etmeniz gerekir.


4
Kesinlikle bu. Ne istedikleri hakkında hiçbir fikri olmayan müşteriler eşeklerin acısıdır. Tam olarak ne istediklerini bilen müşteriler genellikle daha kötüdür. Bilgi isterken iş gereksinimini dışarıda bırakmayın. Yaptığımız her küçük şey, çoğunlukla bağlamla ilgilidir.
Erik Reppen

14

“Soru özellikle birisinin soru sormak için başka bir programcı ile nasıl bir ilgisi olduğu, diğerinin cevabı nerede olduğu ve sorunun neden istendiği hakkındaki tartışmayı atladığıdır.”

En azından deterministik olarak yapamazsınız. Diğer programcı bir kişidir, bilgisayar değil, hizmetkarınız değil. Onlara bir soru sorarsanız, en iyi cevap olduğunu düşündüklerini seçerler. Daha fazla içeriğe ihtiyaç duyduklarını düşünüyorlarsa, bunu isteyeceklerdir.

Sorunuzu yalnızca kısa ve net bir cevap aradığınızı söyleyerek öncelemeyi deneyebilirsiniz, ancak yine de en iyi düşündükleri gibi cevap vermekte özgürler.


13

Soru, birisinin soru sormak için başka bir programcı ile nasıl bir ilgisi olduğu, diğerinin cevabı nerede olduğu ve sorunun neden sorulduğu konusundaki tartışmayı atladığıdır.

Yapamazsın Programcılar, özellikle de iyi olanlar, problemleri çözmek ve verimli olmak için kablolanırlar . Bir müşteri veya diğer bir programcı cevap ararken - bir çözüm sunmadan önce çözdükleri sorunu bildiğinden emin olacaklardır. Bu şekilde verimlidirler (probleminizi çözmeyecek bir cevap vererek sizi ve zamanınızı boşa harcamazlar) ve gerçek problemleri çözerler (size sormanız gereken sorulara çözümler / cevaplar vererek).

Örnek - bir müşteri size geldiğinde ve bir X özelliğinin uygulanmasını istediğini söylediğinde. Bazen müşteri gerçekten bir X özelliğine ihtiyaç duyar ve bazen X'i istemediğini ama tamamen farklı bir şey olduğunu anlamak için müşteriyi kazıp sorgulamanız gerekir. Programcılar ne kadar eski ve deneyimli olursa, bir çözüm sunmadan önce sorunun kalbine girmeyerek geçmişte yanma olasılıkları o kadar artar.

Özetle - sorularınızın tam olarak cevaplanmasını istiyorsanız, aşağıdakilerden emin olmanız gerekir:

  • doğru soruları sormak (bu nedenle problemi önceden araştırmanız gerekir)
  • Sorunun bağlamını sağlama
  • bazılarını soruna daha hızlı yönlendirmek için araştırmaların paylaşılması

Tanıdığım çoğu insan sadece bilgisayardır, bilgisayar değildir. Sadece cevapları istiyorsanız googling deneyin.


2
Tam olarak + 1. Müşteriler kaç kez geliştirme açısından binlerce dolara mal olacak bir özellik uygulamak isterken, gerçek işletme ihtiyacı zaten var olan bir araçla, çoğu zaman ücretsiz olarak kolaylıkla çözülebilir!
Arseni Mourzenko,

3
Benzetme yapmak gerekirse, bir cerraha size belirli bir işlem yapmasını söylemek gibi. Bahse girerim size sağlık probleminizin tam olarak ne olduğunu soracaktır, o zaman ilk etapta herhangi bir ameliyata gerek duymayacağınızı söyleyecektir, çünkü probleminiz bir kiropraktöre giderek çözülebilir.
Arseni Mourzenko,

Tam olarak :) Ve muhtemelen bir cerrahtan tam olarak bunu yapmasını beklersiniz.
Christian P,

9

Programcılar neden sürekli bunu yapıyorlar ve davranışlar programlayıcıya ne kadar ileri bir hal veriyorsa o kadar kötüleşiyor?

Ne yazık ki, genel hakikatten olabildiğince uzak.

Bu davranış gerçekten iyi olanların azınlığı ile sınırlıdır. Ve sen de öğrensen iyi edersin.

Sadece, lanet olası soruyu yanıtlamak, niçin üstünden atlayarak hızlı ve emin bir uçurum içine girmenin iyi bir yoludur.


Eğitimli kısmı gerçekten atlamak istiyorsanız, sorunuzu kısıtlamalarla ilgili birkaç cümle ve soru atlama arzusuyla öneklendirebilirsiniz - biraz cevap alabilir veya yeni yollayabilirsiniz. Özetle kendi araştırmanızı sunmak daha iyi bir fikirdir.


Düşündükleri kadar iyi olup olmadıkları çok fazla değil.
Florian F,

4

Buradaki her cevap "neden" sorusuna iyi bir cevaptır, ancak hiç kimse OP'nin sorusunu gerçekten cevaplamadı.

Bir programcıya, asıl sorunun cevabını çıkarmada en etkili şekilde bir soruyu nasıl sorabilirsiniz?

Cevap şaşırtıcı derecede basittir: onlara neden sormadan önce bunun neden yapılması gerektiğini söyleyin.

Yapılacak en iyi şey, geliştiricilerin bir ürünle ilgili bazı daha üst düzey toplantılara dahil edilmesidir - onlara büyük resmin bir kısmını verin, böylece bu özel şeyin neden yapılması gerektiğini anlayabilirler. İlk nasıl geleceğiyle sizi şaşırtabilirler bile.


Ne kadar basit. Biraz içerik vermek ve neden çok zaman kazandırdığını açıklamak. Geliştiricinin en başından size yardımcı olacak doğru yolda düşünmesini sağlarsınız.
joshp

3

İyi programcılar sadece herhangi bir çözüm uygulamak istemezler; belirli bir konu için en iyi çözümü uygulamak istiyorlar. Bu bilgi gerektirir. Sorular bilgi toplamanın yoludur. Tüm bilgiler olmadan, programcı tüm gereklilikleri yerine getirmeyen ve tekrar yapmakta sıkışıp kalacak bir çözümü uygulama tehlikesiyle karşı karşıya olduğunu biliyor. Programcılardan bilgi gizleme. Bilgiyi gizlemek zaman harcar, morali bozar ve daha düşük sonuçlara yol açar.


1

Programcılar, problemleri çözmek için "kablolu" dir.

İyi programcılar "doğru" problemleri çözmeye çalışacaktır.

Sadece birisinin istediği şeyi sağlamak genellikle çözülmesi gereken yanlış bir sorundur.

MS Office otomasyonunun tüm öfke olduğu günlerde, genellikle birkaç hafta boyunca, bir Office ürününde "bunu" ve başka bir üründe "o" nasıl yapılacağını soran bir dizi soru alırsınız. , sonra başka bir şey daha başka bir şey. Bunların her biri hızlıca ele alınıyor, ancak “sorun” - henüz tam olarak belirtilmemiş - çözülmedi. Zincirindeki bir sonraki "bağlantı" için geri dönmeye devam ediyorlar.

Onları durdurup onlara "Neden?" o zaman neyi başarmak istediklerini daha geniş bir şekilde takip etmek ve açıklamak zorunda kalıyorlar ve sadece önündeki sorunu anlatmıyorlar. (BTW, Programcılar , bundan (bu gibi ahit gibi foraların olduğu gibi) kimseden daha fazla değilse , bundan muzdariptirler.
"Büyük Veritabanından Access'e, ardından Excel'e biraz masaj yapmak, ardından Word'e girmek, böylece sonuçları birleştirmek ve her hafta bu kişilere e-postayla göndermek" gibi bir kullanıcı zinciri hızla değiştirildi. tüm bunları yapan toplu iş , sonuçların insanların gelen kutularına oturmasıyla Pazartesi sabahı ilk iş, hiçbir manuel Kullanıcı katılımı olmadan .

Bunun gibi kullanıcılar .

Size oraya gitmenin en iyi yolunu teklif etmeden önce, nereye ulaşmaya çalıştığınızı bilmemiz gerekir.

Alternatif olarak, (Monty Python'un dediği gibi): "5 dakikalık bir cevap mı yoksa tam yarım saat mi istiyorsun?"

Programcının belirli bir işlevin tüm önemlisini, yalnızca üç üç ondalık basamağa sahip bir sayı beslerseniz başa çıkıp çıkmayacağını bilmek istediğinizde sallanmasının bir anlamı yoktur.

Bakış açınızı bilmek, genellikle aldığınız cevabı yeniden şekillendirebilir.


0

Son sorunuz, "Bir programcıya, asıl sorunun cevabını çıkarmada en etkili şekilde bir soruyu nasıl sorabilirsiniz?"

İlk önce “verimli” ve “etkili” ile karıştırıyorsunuz. En verimli olmak için , sadece "Cevap nedir?" Yazın. bir kağıda yazıp programlayıcıya gösterin. Soru sormanın çok etkili bir yolu. Ayrıca bir cevap alma konusunda da çok etkisizdir.

İkincisi, yazılım geliştiricilerin soru cevaplayıcıları olduğunu varsayıyorsunuz. Onlar değil. Onlar problem çözücüler. Tutumunuz, problem çözmeyi anlamadığınızı açıkça gösteriyor. Bir problemi çözmenin en etkili yolu, sorunu problemi bir problem çözücüye tanımlayabileceğiniz noktaya kadar anlamak ve ardından problem çözücüye sunmaktır. Diğer yöntem, sorunu olabildiğince kısmen anlamak, daha sonra eksik anlayışınızı bir problem çözücüye sunma, kim önce bunu tam olarak anlaşılan bir soruna dönüştürmek için can attığınız soruları soracak ve daha sonra çözecektir.

Çalıştığınız yöntem çok verimsiz bir yoldur: Sorunu tam olarak anlama, bu sorunun nasıl çözülebileceğini tahmin etme ve bu soruna nasıl ulaşılabileceğini bir sorun çözücüye sorma. Problem çözücü bu davranışı daha önce görmüştü. Deneyimsiz ise 10 defa, tecrübesiz ise bin defa. Böylece problem çözücü tamamen yanlış bir yöne doğru gittiğinizi biliyor . Ve problem çözücü doğru yöne gitmek için ne gerekiyorsa yapar, asıl problemi anlamak için sorular sorar. Sorunu tam olarak anlamadığınızı anlamak için ilk sorular ve asıl sorunu anlamak için ikinci sorular.


0

Neye ulaşmak istediğinizi ve üzerinde çalıştığınız bağlamın ne olduğunu açıklayarak soruyu başlatın. Yeterince bağlam verirseniz bir "neden?" Elde edemezsiniz. , "Bu gerçekten gerekli mi?"

Çünkü, istatistiksel olarak , çoğu önerilen özellik emmek ve uygulamak için uğraşmaya değmez.

Tipik bir çürütücü "ama onun işi" olur. İşi iyi kod yazıyor ve özellik ekleme genellikle buna aykırıdır, çünkü çoğu özellik çalışan kod tabanının yeniden tasarlanmasını gerektirir ve bu "yeniden tasarlama şeyi:"

  1. Sonsuza kadar sürer
  2. yeni hatalar ekler
  3. Eskiden işe yarayan şeyleri kırar
  4. bakım yapmayı engeller

Bu iyi kod değil, iyi kod çok az.


Programcının işi iyi kod yazmıyor. Programcının işi, onları işe alan şirket için değer üretmektir. Çoğu durumda iyi kod yazmak bunun bir parçasıdır. Çoğu durumda, hızlı çalışan montaj kodunun bunun bir parçasıdır. Birçok özelliğin de emildiğine katılıyorum - müşterileri tarafından hiç kullanılmamış yeni özellikler eklemek isteyen bir şirket için sözleşme yaptım çünkü akıllı süreçle tasarlanmadılar, ama sadece düşünen biri tarafından "hey, bu yararlı olabilir ".
Maurycy
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.