วิธีถามคำถามโปรแกรมเมอร์โดยไม่ได้คำตอบว่า "ทำไม"


31

เราทุกคนมีประสบการณ์นี้ คุณไปหาคนที่คุณรู้ว่ามีคำตอบสำหรับคำถามถามคำถามนั้นกับบุคคลนั้นและพวกเขาตอบด้วยการตอบกลับโดยทั่วไป: "ทำไม" คุณอธิบายว่าทำไมคุณต้องรู้และพวกเขาพยายามที่จะแก้ปัญหาของคุณ

ต้องใช้เวลาการบิดแขนและความอดทนในการบังคับให้การสนทนากลับไปที่คำถามเดิมและเพิ่งได้คำตอบที่ยี้นั่น

เหตุใดโปรแกรมเมอร์จึงทำสิ่งนี้อยู่ตลอดเวลาและเหตุใดพฤติกรรมจึงแย่ลงเมื่อโปรแกรมเมอร์ยิ่งอายุมากขึ้น?

คุณจะถามคำถามกับโปรแกรมเมอร์อย่างมีประสิทธิภาพมากที่สุดในการดึงคำตอบของคำถามต้นฉบับได้อย่างไร


54
อาจเป็นเพราะพวกเขารู้ว่าคุณไม่ต้องการคำตอบนั้น How do I walk on water? Why? I want to cross the river Build a boat.
Daniel Gratzer

30
มันเป็นกลอุบายที่ออกแบบมาเพื่อหยุดคุณไม่ให้เสียเวลาของเรา คุณจะเรียนรู้ที่จะแม่นยำหรือเลิกถาม
yannis

17
เพราะโปรแกรมเมอร์อาวุโสกว่ารู้ว่าคำถามส่วนใหญ่ที่ถามคือคำถาม XY
Marjan Venema

12
"ความคิดเห็นจำนวนมากเกี่ยวข้องกับการอธิบายว่าทำไมนักพัฒนาจึงทำงานแบบนี้ ... นี่ไม่ใช่คำตอบของคำถามข้างต้น" มันเป็นคำตอบที่ตรงกับคำถามที่ว่า "ทำไมโปรแกรมเมอร์ถึงต้องทำอย่างต่อเนื่องและทำไมพฤติกรรมถึงแย่ลงเมื่อโปรแกรมเมอร์ยิ่งอายุมากขึ้น?" ซึ่งรวมอยู่ในเนื้อหาของโพสต์ นอกจากนี้ยังแสดงให้เห็นว่าทำไมโปรแกรมเมอร์ทำหน้าที่เช่นนี้คนถามคำถามที่พบบ่อยไม่ต้องการคำตอบของคำถามที่พวกเขาถามแต่ต้องการคำตอบของคำถามที่พวกเขาหมายถึง

8
"ฉันจะใช้พลูโทเนียมได้อย่างไร" ไม่ไม่. ไม่มีข้อสงสัย แค่บอกฉันว่า
Erik Reppen

คำตอบ:


91

ทำไมนักพัฒนาถึงถามว่า "ทำไม" เมื่อมีคนถามพวกเขาถึงวิธีการใช้งานโซลูชั่น?

เนื่องจากต้องการความรู้เพิ่มเติมในการประเมินว่าโซลูชันมีความเหมาะสมมากกว่าการใช้โซลูชันจริงหรือไม่

มันยากมากที่จะเชื่อใครสักคนเมื่อพวกเขาพูดว่า "ฉันไม่รู้จะทำอย่างไร แต่ฉันรู้ว่ามันเป็นสิ่งที่ฉันต้องทำ" โปรแกรมเมอร์ยืนยันอย่างต่อเนื่องในการละเอียดลึกลงไปเพราะผู้คนมักจะยืนกรานที่จะถามคำถามที่ผิด ใช่ในที่สุดบางครั้งก็กลับมาที่คำถามเดิมของคุณ แต่ไม่เสมอไป

ลองจินตนาการว่าถ้ามีคนเดินไปหาช่างและถามเขาว่าจะเปลี่ยนแบตเตอรี่รถยนต์ได้อย่างไร โดยปกติหากคุณมีคุณสมบัติในการวิเคราะห์แบตเตอรี่ที่ชำรุดคุณจะต้องเปลี่ยนแบตเตอรี่ดังนั้นช่างจะถามว่าคุณต้องการเปลี่ยนแบตเตอรี่อย่างไร

เขารู้ว่าเขาไม่ได้ทำสิ่งนี้และปรากฎว่าคุณไม่ต้องการแบตเตอรี่คุณจะกลับมาถามคำถามต่อไปเรื่อย ๆ จนกระทั่งในที่สุดคุณก็จะพบว่าคุณต้องปิดไฟเมื่อเครื่องยนต์ดับ ไม่ได้ทำงาน. เมื่อถามคุณล่วงหน้าจะรู้สึกว่าเขากำลังเสียเวลา แต่จริง ๆ แล้วเขารู้จากประสบการณ์ว่าเขาอาจช่วยคุณทั้งสองได้มากขึ้น

ดังนั้นหากคุณต้องการหลีกเลี่ยงการตั้งคำถามคุณต้องโน้มน้าวให้เขารู้ว่าคุณกำลังพูดถึงอะไร


4
ตรงนี้ ลูกค้าที่ไม่รู้ว่าต้องการอะไรคือความเจ็บปวดในลา ลูกค้าที่รู้ว่าสิ่งที่พวกเขาต้องการมักจะเลวร้ายลง อย่าละทิ้งความต้องการทางธุรกิจเมื่อขอข้อมูล ทุกสิ่งเล็ก ๆ น้อย ๆ ที่เราทำนั้นมักเกี่ยวข้องกับบริบทอย่างมาก
Erik Reppen

14

"คำถามนี้มีความเฉพาะเจาะจงว่าคนหนึ่งจะมีส่วนร่วมกับโปรแกรมเมอร์คนอื่นเพื่อถามคำถามได้อย่างไรในขณะที่อีกฝ่ายมีคำตอบและข้ามการอภิปรายว่าทำไมคำถามนั้นถึงถูกถาม"

อย่างน้อยคุณก็ไม่สามารถกำหนดได้ โปรแกรมเมอร์อื่นคือบุคคลไม่ใช่คอมพิวเตอร์ไม่ใช่ผู้รับใช้ของคุณ หากคุณถามคำถามพวกเขาพวกเขาจะเลือกสิ่งที่พวกเขาคิดว่าเป็นคำตอบที่ดีที่สุด หากพวกเขาคิดว่าพวกเขาต้องการบริบทมากขึ้นพวกเขาจะขอมัน

คุณสามารถลองใส่คำถามของคุณล่วงหน้าด้วยข้อความที่คุณกำลังมองหาคำตอบสั้น ๆ แต่ก็ยังมีอิสระที่จะตอบเมื่อพวกเขาคิดว่าดีที่สุด


13

คำถามนี้มีความเฉพาะเจาะจงว่าผู้ผลิตรายอื่นจะมีส่วนร่วมในการถามคำถามได้อย่างไรโดยที่อีกฝ่ายมีคำตอบและข้ามการอภิปรายเกี่ยวกับสาเหตุที่คำถามถูกถาม

คุณทำไม่ได้ โปรแกรมเมอร์โดยเฉพาะอย่างยิ่งคนที่ดีจะมีสายที่จะแก้ปัญหาที่เกิดขึ้นและเพื่อให้มีประสิทธิภาพ เมื่อลูกค้าหรือโปรแกรมเมอร์คนหนึ่งกำลังมองหาคำตอบพวกเขาจะต้องแน่ใจว่ารู้ปัญหาที่พวกเขากำลังแก้ไขก่อนนำเสนอวิธีแก้ไขปัญหา ด้วยวิธีนี้พวกเขามีประสิทธิภาพ (พวกเขาไม่ต้องเสียเวลาของพวกเขาและโดยการให้คำตอบที่จะไม่แก้ปัญหาของคุณ) และพวกเขากำลังแก้ปัญหาจริง (โดยให้คำตอบ / ตอบคำถามที่คุณควรถาม)

ตัวอย่าง - เมื่อลูกค้ามาหาคุณและบอกว่าเขาต้องการให้มีการใช้คุณสมบัติ X บางครั้งลูกค้าต้องการฟีเจอร์ X และบางครั้งคุณต้องขุดและซักถามลูกค้าเพื่อพบว่าพวกเขาไม่ต้องการ X แต่มีบางอย่างที่แตกต่างออกไปอย่างสิ้นเชิง ยิ่งโปรแกรมเมอร์ที่มีอายุมากและมีประสบการณ์มากเท่าไหร่โอกาสที่พวกเขาจะถูกเผาไหม้ในอดีตก็จะยิ่งมากขึ้นเท่านั้นโดยไม่ได้คำนึงถึงปัญหาก่อนที่จะนำเสนอทางออก

ดังนั้นเพื่อสรุป - หากคุณต้องการคำตอบของคำถามที่ถูกต้องคุณต้องแน่ใจว่าคุณ:

  • ถามคำถามที่ถูกต้อง (คุณต้องทำการวิจัยปัญหาก่อน)
  • การจัดเตรียมบริบทสำหรับปัญหา
  • แบ่งปันบางส่วนของงานวิจัยของคุณเพื่อนำไปสู่ปัญหาได้เร็วขึ้น

มนุษย์ส่วนใหญ่ที่ฉันรู้จักเป็นมนุษย์ไม่ใช่คอมพิวเตอร์ ถ้าคุณแค่ต้องการคำตอบลอง googling


2
+1 แน่นอน ลูกค้าต้องการใช้คุณลักษณะที่ต้องเสียค่าใช้จ่ายหลายพันดอลลาร์ในการพัฒนาในขณะที่ความต้องการทางธุรกิจที่แท้จริงสามารถแก้ไขได้อย่างง่ายดายด้วยเครื่องมือที่มีอยู่แล้วซึ่งมักจะไม่มีค่าใช้จ่าย!
Arseni Mourzenko

3
โดยการเปรียบเทียบมันเหมือนกับบอกให้ศัลยแพทย์ทำชุดปฏิบัติการเฉพาะสำหรับคุณ ฉันพนันว่าเขาจะถามคุณว่าปัญหาสุขภาพของคุณคืออะไรจากนั้นบอกคุณว่าคุณไม่จำเป็นต้องผ่าตัดตั้งแต่แรกเพราะปัญหาของคุณสามารถแก้ไขได้โดยไปที่หมอนวด
Arseni Mourzenko

แน่นอน :) และคุณอาจคาดหวังจากศัลยแพทย์ที่จะทำอย่างนั้น
คริสเตียน P

9

เหตุใดโปรแกรมเมอร์จึงทำสิ่งนี้อยู่ตลอดเวลาและเหตุใดพฤติกรรมจึงแย่ลงเมื่อโปรแกรมเมอร์ยิ่งอายุมากขึ้น?

น่าเสียดายที่มันห่างไกลจากความจริงทั่วไปตามที่ได้รับ

พฤติกรรมนั้นถูก จำกัด ให้ชนกลุ่มน้อยที่เป็นคนดีจริงๆ และคุณควรเรียนรู้มันให้ดีขึ้นด้วย

เพียงแค่ตอบคำถามที่ถูกสาปแช่งข้ามเรื่องนั้นเป็นวิธีที่ดีในการขับรถเข้าสู่ช่องว่างอย่างรวดเร็วและแน่นอน


หากคุณต้องการข้ามส่วนที่มีการศึกษาจริง ๆ คุณสามารถนำหน้าคำถามของคุณด้วยประโยคสองสามประโยคเกี่ยวกับข้อ จำกัด และความปรารถนาที่จะข้ามคำถาม - คุณอาจได้รับคำตอบหรือเพิ่งถูกส่งออกไป นำเสนอบทสรุปการวิจัยของคุณเองเป็นแนวคิดที่ดีกว่า


ไม่มากนักว่าดีหรือไม่
Florian F

4

ทุกคำตอบที่นี่เป็นคำตอบที่ดีสำหรับคำถาม "ทำไม" แต่ไม่มีใครตอบคำถาม OPs ได้จริงๆ

คุณจะถามคำถามกับโปรแกรมเมอร์อย่างมีประสิทธิภาพมากที่สุดในการดึงคำตอบของคำถามต้นฉบับได้อย่างไร

คำตอบนั้นง่ายอย่างน่าประหลาดใจ: บอกพวกเขาว่าทำไมต้องทำสิ่งนี้ก่อนที่คุณจะถามพวกเขาว่า

สิ่งที่ดีที่สุดที่ต้องทำคือรวมนักพัฒนาในการประชุมระดับสูงรอบผลิตภัณฑ์ - ให้ภาพที่ใหญ่กว่าเพื่อให้พวกเขาเห็นว่าทำไมสิ่งนี้จึงต้องทำ พวกเขาอาจทำให้คุณประหลาดใจที่มากับวิธีแรก


มันง่ายแค่ไหน ให้บริบทและอธิบายว่าทำไมประหยัดเวลาได้มาก คุณได้รับความคิดของนักพัฒนาบนเส้นทางที่ถูกต้องเพื่อช่วยคุณตั้งแต่เริ่มต้น
joshp

3

โปรแกรมเมอร์ที่ดีไม่เพียง แต่ต้องการใช้โซลูชันใด ๆ พวกเขาต้องการใช้โซลูชันที่ดีที่สุดสำหรับปัญหาเฉพาะ สิ่งนี้ต้องการข้อมูล คำถามคือวิธีการรวบรวมข้อมูล หากไม่มีข้อมูลทั้งหมดโปรแกรมเมอร์รู้ว่าเขากำลังเสี่ยงต่อการใช้โซลูชันที่ไม่เหมาะสมกับความต้องการทั้งหมดและจะไม่สามารถทำมันได้อีก อย่าซ่อนข้อมูลจากโปรแกรมเมอร์ของคุณ การซ่อนข้อมูลทำให้เสียเวลาทำลายขวัญกำลังใจและนำไปสู่การแก้ไขที่ต่ำกว่า


1

โปรแกรมเมอร์เป็น "สายแข็ง" เพื่อแก้ปัญหา

โปรแกรมเมอร์ที่ดีจะพยายามแก้ปัญหา "สิทธิ"

แค่ให้สิ่งที่มีคนถามหา [มัก] เป็นปัญหาที่ผิดพลาด

ในวันที่การทำงานอัตโนมัติของ MS Office เป็นเรื่องที่น่าตื่นเต้นคุณจะได้รับคำถามมากมายโดยปกติจะใช้เวลาไม่กี่สัปดาห์โดยถามวิธีการทำ "สิ่งนี้" ในผลิตภัณฑ์ Office หนึ่งจากนั้น "นั่น" ในผลิตภัณฑ์อื่น ๆ แล้วอย่างอื่นในอีกอันหนึ่ง แต่ละสิ่งเหล่านี้ได้รับการจัดการอย่างรวดเร็ว แต่ "ปัญหา" - ยังไม่ได้ระบุอย่างสมบูรณ์ - ไม่ได้รับการแก้ไข พวกเขากลับมาที่ลิงค์ "ถัดไป" ในห่วงโซ่ของพวกเขา

ถ้าคุณหยุดพวกเขาและถามพวกเขาว่า "ทำไม" จากนั้นพวกเขาต้องย้อนกลับไปติดตามและอธิบายเพิ่มเติมในวงกว้างถึงสิ่งที่พวกเขาต้องการบรรลุและไม่เพียง แต่อธิบายปัญหาทันทีต่อหน้าพวกเขา (BTW โปรแกรมเมอร์ต้องทนทุกข์ทรมานจากสิ่งนี้มากเท่ากับ (ถ้าไม่มากไปกว่า) คนอื่น ๆ ที่เป็นเหมือนพินัยกรรมเหล่านี้)
กลุ่มผู้ใช้ของ "การรับข้อมูลจากฐานข้อมูลขนาดใหญ่ไปยัง Access จากนั้นเข้าสู่ Excel เพื่อนวดมันเล็กน้อยจากนั้นเข้าสู่ Word เพื่อให้พวกเขาสามารถรวมผลลัพธ์และส่งอีเมลหาคนเหล่านี้ทุกสัปดาห์" แทนที่อย่างรวดเร็ว งานแบ็ตช์ที่ทำทั้งหมดนั้นด้วยผลลัพธ์ที่อยู่ในกล่องจดหมายของผู้คนสิ่งแรกในเช้าวันจันทร์ที่ไม่มีการมีส่วนร่วมของผู้ใช้ด้วยตนเองเลย

ผู้ใช้เช่นนั้น

เราจำเป็นต้องรู้ว่าคุณกำลังจะไปที่ไหนก่อนที่เราจะเสนอวิธีที่ดีที่สุดในการไปที่นั่น

อีกวิธีหนึ่ง (เพื่อถอดความ Monty Python): "คุณต้องการคำตอบ 5 นาทีหรือครึ่งชั่วโมงเต็ม" หรือไม่?

ไม่มีจุดที่โปรแกรมเมอร์ส่งเสียงต่ำสุดของฟังก์ชั่นเฉพาะเมื่อคุณต้องการที่จะรู้ว่ามันจะรับมือได้หรือไม่ถ้าคุณป้อนตัวเลขด้วยทศนิยมสามตำแหน่ง

การรู้มุมมองของคุณมักจะสามารถสร้างคำตอบที่คุณได้รับอย่างรุนแรงอีกครั้ง


0

คำถามสุดท้ายของคุณคือ "คุณจะถามคำถามกับโปรแกรมเมอร์อย่างมีประสิทธิภาพมากที่สุดในการดึงคำตอบของคำถามเดิมได้อย่างไร"

คุณกำลังสับสน "มีประสิทธิภาพ" และ "มีประสิทธิภาพ" เป็นครั้งแรก เพื่อให้มีประสิทธิภาพมากที่สุดเพียงแค่เขียน "คำตอบคืออะไร" บนแผ่นกระดาษและแสดงให้โปรแกรมเมอร์ทราบ นั่นเป็นวิธีที่มีประสิทธิภาพมากในการถามคำถาม นอกจากนี้ยังไม่มีประสิทธิภาพในการรับคำตอบ

และประการที่สองคุณสมมติว่านักพัฒนาซอฟต์แวร์เป็นผู้ตอบคำถาม พวกเขาจะไม่. พวกเขาเป็นนักแก้ปัญหา ทัศนคติของคุณแสดงชัดเจนว่าคุณไม่เข้าใจการแก้ปัญหา วิธีที่มีประสิทธิภาพที่สุดในการแก้ปัญหาคือการเข้าใจปัญหาจนถึงจุดที่คุณสามารถอธิบายปัญหาให้กับนักแก้ปัญหาแล้วนำเสนอต่อผู้แก้ปัญหา อีกวิธีหนึ่งคือการเข้าใจปัญหาบางส่วนเท่าที่คุณจะทำได้จากนั้นนำเสนอความเข้าใจที่ไม่สมบูรณ์ของคุณให้กับนักแก้ปัญหาที่จะถามคำถามที่คุณกลัวว่าจะทำให้ปัญหานี้กลายเป็นปัญหาที่เข้าใจได้อย่างสมบูรณ์

วิธีที่ไม่มีประสิทธิภาพมากคือวิธีที่คุณพยายาม: ทำความเข้าใจปัญหาที่ไม่สมบูรณ์ทำการเดาว่าปัญหานี้จะแก้ไขได้อย่างไรและถามตัวแก้ปัญหาว่าจะแก้ปัญหาได้อย่างไร ผู้แก้ไขปัญหาได้เห็นพฤติกรรมนี้มาก่อน 10 ครั้งถ้าเขาไม่มีประสบการณ์พันครั้งถ้าเขามีประสบการณ์ ดังนั้นผู้แก้ปัญหาจึงรู้ว่าคุณกำลังมุ่งหน้าไปในทิศทางที่ผิดอย่างสมบูรณ์ และผู้แก้ปัญหาทำสิ่งที่ต้องทำเพื่อให้ไปในทิศทางที่ถูกต้องซึ่งเป็นการถามคำถามเพื่อทำความเข้าใจกับปัญหาที่เกิดขึ้นจริง คำถามแรกที่จะเข้าใจปัญหาที่ไม่สมบูรณ์ของคุณและอีกคำถามที่สองเพื่อเข้าใจปัญหาที่แท้จริง


0

เริ่มคำถามด้วยการระบุสิ่งที่คุณต้องการให้สำเร็จและบริบทที่คุณกำลังทำอยู่หากคุณให้บริบทเพียงพอคุณจะไม่ได้รับ"ทำไม" คุณจะได้รับ"สิ่งนี้จำเป็นจริงๆหรือ"

เพราะสถิติ , คุณลักษณะที่นำเสนอส่วนใหญ่ดูดและไม่คุ้มค่าความยุ่งยากในการดำเนินการ

การโต้แย้งโดยทั่วไปจะเป็น"แต่นั่นคืองานของเขา" งานของเขาคือการเขียนโค้ดที่ดีและการเพิ่มคุณสมบัติมักจะผิดไปเพราะคุณสมบัติส่วนใหญ่ต้องการการออกแบบ codebase ที่ใช้งานได้และ"การออกแบบสิ่งใหม่:"

  1. ใช้เวลาตลอดไป
  2. เพิ่มข้อบกพร่องใหม่
  3. ทำลายสิ่งที่เคยทำงาน
  4. ทำให้การบำรุงรักษาไม่อนุญาต

นั่นไม่ใช่รหัสที่ดีรหัสที่ดีมีน้อย


งานโปรแกรมเมอร์ไม่ได้เขียนโค้ดที่ดี หน้าที่ของโปรแกรมเมอร์คือการสร้างคุณค่าให้กับ บริษัท ที่ว่าจ้างพวกเขา ในหลายกรณีการเขียนรหัสที่ดีเป็นส่วนหนึ่งของเรื่องนี้ ในหลายกรณีอย่างรวดเร็วประกอบรหัสทิ้งที่ทำงานเป็นส่วนหนึ่งของเรื่องนี้ ฉันยอมรับว่ามีฟีเจอร์มากมายดูด - ฉันทำสัญญากับ บริษัท ที่ต้องการเพิ่มฟีเจอร์ใหม่ที่ลูกค้าไม่เคยใช้เพราะพวกเขาไม่ได้รู้สึกถึงกระบวนการที่ชาญฉลาด แต่แค่ใครบางคนคิดว่า "เฮ้นี่อาจมีประโยชน์ "
Maurycy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.