นักพัฒนาจะต้องเข้าใจโดเมนธุรกิจหรือข้อมูลจำเพาะควรเพียงพอหรือไม่


52

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

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

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

ในทางกลับกันการฝึกอบรมผู้พัฒนาทุกด้านทุกธุรกิจอาจยาวและยากมาก

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

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


นักพัฒนาที่ดีส่วนใหญ่จะฝึกตัวเอง
kevin cline

20
@kevincline: ไม่ทุกโดเมนที่ยืมตัวเองเพื่อการเรียนรู้ด้วยตนเองที่ง่าย
FrustratedWithFormsDesigner

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

22
ฉันคิดว่ายิ่งโดเมนมีความซับซ้อนมากเท่าไหร่ก็ยิ่งมีความสำคัญมากขึ้นเท่านั้นที่นักพัฒนาจะเข้าใจมันและสิ่งที่สำคัญกว่าก็คือไม่ใช่การพัฒนาจากภายนอก
HLGEM

3
หมายเหตุ: s / ผู้พัฒนา / ผู้ทดสอบ / ในคำถามนี้และยังเกี่ยวข้อง
joshin4colours

คำตอบ:


114

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


52
+1 เพราะฉันได้เห็นสิ่งนี้เกิดขึ้นในชีวิตจริง นักพัฒนา Sr. ขอให้ธุรกิจตรวจสอบข้อกำหนดอีกครั้งธุรกิจมั่นใจว่าทีมนั้นมีความต้องการที่ถูกต้องจากนั้นการพัฒนาก็ถูกบังคับให้ต้องแย่งกันหลังจากวันเปิดตัวเพราะธุรกิจละเมิดกฎหมายของรัฐในสองรัฐ
Joshua Drake

9
หรือหากต้องการดูอีกทางหนึ่งข้อกำหนดรายละเอียดที่เพียงพอก็คือซอร์สโค้ดดังนั้นจึงต้องมีนักพัฒนาที่มีความรู้ด้านโดเมนเขียน
jk

@Joshua - นั่นไม่ใช่กรณีที่มีจุดเล็ก ๆ ที่มีความรู้โดเมนหรือไม่ - นักพัฒนาคาดว่าจะใช้งานสเป็คโดยไม่คำนึงถึง (อย่างน้อยก็จนถึงวันตื่นตระหนก)
Steve314

3
@ Steve314 ยุติธรรมเพียงพอ และเพื่อผลประโยชน์ของความซื่อสัตย์ทางปัญญาผู้พัฒนาได้เรียกคืนการอภิปรายเกี่ยวกับการนำคุณลักษณะดั้งเดิมไปใช้และยังมีความคิดเห็นเกี่ยวกับรหัสว่าจะไม่ลบข้อมูลดังกล่าวตาม jk ฉันได้พบว่าความรู้ด้านโดเมนมักจะช่วยให้นักพัฒนาทราบว่าหลุมอยู่ที่ไหนหรืออย่างน้อยก็น่าจะอยู่ในสเปคทำให้คุณภาพสูงขึ้น
Joshua Drake

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

63

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

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

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

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


7
กฎที่ซ่อนอยู่ - ฉันพบว่าพวกเขาเป็นบรรทัดฐานมากกว่าข้อยกเว้น
Preet Sangha

16

SOMEONE ในโครงการจำเป็นต้องมีความรู้ด้านโดเมนค่อนข้างสมบูรณ์ บุคคลนั้นอาจเป็นหรือไม่เป็นผู้พัฒนาก็ได้

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


+1 ผู้พัฒนา ( ไม่ใช่สถาปนิกระบบ) ไม่ควรต้องการความรู้ใด ๆ ของฟิลด์ ในองค์กรที่สมบูรณ์แบบการเขียนโค้ดควรทำในขนาดเล็กพอที่ไม่จำเป็นต้องมีความรู้เกี่ยวกับผลิตภัณฑ์ขั้นสุดท้าย ตอนนี้มีกี่ "องค์กรที่สมบูรณ์แบบ" ในโลก ... โดยปกติแล้วมันเป็นสิ่งที่ชอบ: เพิ่มคุณสมบัติที่อธิบายด้วยหนึ่งบรรทัดที่มีวลี: คุณรู้, เรียงลำดับ, เหมือนในเว็บเพจนี้ ...
Juha

1
ฉันไม่คิดว่าเจ้าของผลิตภัณฑ์คนเดียวที่มีความรู้เกี่ยวกับโดเมนเป็นสูตรสำหรับความสำเร็จ
Casey

11

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

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

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

โปรดจำไว้ว่า Einstein กล่าวว่า"แต่ความคิดและความคิดไม่ใช่สูตรเป็นจุดเริ่มต้นของทฤษฎีทางกายภาพทุกอย่าง"นั่นคือสิ่งนั้นคิดว่าไม่ได้อยู่ในรูปแบบนามธรรม แต่เป็นความคิด ...


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

10

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

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


"ด้วยเหตุผลเดียวกันแม้แต่โปรแกรมเมอร์ผู้เชี่ยวชาญที่ไม่มีความรู้ด้านโดเมนก็ไม่มีอำนาจที่จะค้นหาสิ่งที่พวกเขาต้องการสร้างแม้ว่าพวกเขาจะสามารถเข้าถึงผู้เชี่ยวชาญด้านโดเมนที่ดีที่สุดที่ 24x7 ซึ่งไม่ได้เป็นผู้เชี่ยวชาญในการพัฒนาซอฟต์แวร์" - ไม่โปรแกรมเมอร์ได้รับความรู้ด้านโดเมน (บางส่วน) โดยการสัมภาษณ์ผู้เชี่ยวชาญด้านโดเมน ผู้เชี่ยวชาญด้านโดเมนสามารถบอกโปรแกรมเมอร์ว่าเขาต้องการสร้างอะไร โปรแกรมเมอร์ควรเรียนรู้มากพอเกี่ยวกับโดเมนเพื่อให้สามารถหารือเกี่ยวกับคุณสมบัติกับผู้เชี่ยวชาญด้านโดเมน
Marnen Laibow-Koser

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

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

8

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


6

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

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

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


5

ฉันคิดว่านักพัฒนาที่รู้ว่าธุรกิจมีค่าน้ำหนักในทองคำ

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

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

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


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

3

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

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

ค่าใช้จ่ายในการสร้าง spec ที่ไม่มีปัญหาข้างต้นมักจะมากกว่าการฝึกอบรมสถาปนิกและ / หรือ coders ให้มีความรู้เกี่ยวกับโดเมนเพียงพอที่จะทำงานกับ spec ที่มีรายละเอียดน้อยกว่าที่คาดเดาไม่ได้ (สมมติว่า legalities


2

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


2

จากประสบการณ์ของฉัน * บุคคลที่มีความรู้เกี่ยวกับโดเมนปัญหาและความรู้ที่ดีในการพัฒนาซอฟต์แวร์มีแนวโน้มที่จะหาทางออกที่ดีที่สุดสำหรับปัญหามากกว่าบุคคลสองคนคนที่มีความรู้ดีเยี่ยมในโดเมนปัญหาและอีกคนมีความรู้ที่ดีเยี่ยม ของการพัฒนาซอฟต์แวร์ทำงานร่วมกัน

ฉันคิดว่ามันเป็นความจริงง่ายๆที่ว่าการสื่อสารที่เกิดขึ้นในสมองของบุคคลเดียวนั้นเร็วกว่าและดีกว่าการสื่อสารระหว่างบุคคลหลายเท่า

* ประสบการณ์หลักที่ฉันอยากจะตอบคือ 10+ ปีในการพัฒนาซอฟต์แวร์บัญชี (ตั้งแต่เริ่มก่อตั้งจนถึง 'โหมดการบำรุงรักษา') แม้ว่าความรู้เกี่ยวกับการพัฒนาซอฟต์แวร์ของฉันค่อนข้างดีเมื่อเทียบกับเพื่อนร่วมงานของฉันฉันมักจะรู้สึกพิการเนื่องจากขาดความเข้าใจในโดเมนปัญหา


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

2

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


2

คุณไม่จำเป็นต้องทำ แต่ทำไมคุณไม่ต้องการ?

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

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


2

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

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


++ 1 "การเขียนโปรแกรม Death March" นั่นเป็นเรื่องราวของทารกน้ำมันดินในสหรัฐฯ
Mike Dunlavey

1

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

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


1

ฉันคิดว่ามันยากที่จะตอบคำถามอย่างใดอย่างหนึ่ง

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

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

ใน SMEs ที่มีผู้พัฒนาโดด ๆ เป็นสิ่งสำคัญที่นักพัฒนาจะต้องพูดคุยกับเจ้าของ / ผู้จัดการบ่อยๆเพื่อหลีกเลี่ยงการออกไปและนำสิ่งที่ผิดไปใช้

ดังนั้นจึงมีหลายวิธีที่เป็นไปได้ของการคิดเกี่ยวกับเรื่องนี้ แต่ที่สำคัญคือเหมือนกันในทุกกรณี: การสื่อสาร


1
ในฐานะนักแปลอิสระฉันขอรับรองว่าฉันต้องเข้าใจธุรกิจของลูกค้าอย่างน้อยก็ดีพอที่จะพูดคุยกับพวกเขาอย่างชาญฉลาดเกี่ยวกับคุณสมบัติที่พวกเขาต้องการ ความคิดที่คุณสามารถเขียนสเป็คโดยไม่เข้าใจธุรกิจเป็นความฝันที่ไพเราะ ดังนั้นความคิดที่ว่าคุณสามารถเขียนสเป็คที่สมบูรณ์แบบแล้วโยนมันไปให้นักพัฒนา
Marnen Laibow-Koser

1

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


3
วิศวกรอุตสาหกรรมต้องการความรู้สองทางเช่นเดียวกับนักวิเคราะห์ทุกคน ไม่ จำกัด เฉพาะการพัฒนาซอฟต์แวร์
HLGEM

4
นักเขียนด้านเทคนิคมีสถานการณ์เดียวกันนี้
Jennifer S

1

ฉันเข้าใจว่าคุณหมายถึงอะไรที่นี่เพราะเราในฐานะ บริษัท ในอุตสาหกรรมการท่องเที่ยวประสบปัญหาเดียวกัน เมื่อฉันเป็นนักพัฒนารุ่นน้องฉันก็เรียนการท่องเที่ยวที่วิทยาลัยด้วย ดังนั้นคุณสามารถเดาได้ว่าฉันไม่ได้มาจากพื้นหลังวิทยาศาสตร์คอมพิวเตอร์ แต่ความรู้ด้านการท่องเที่ยวของฉันอยู่ในระดับสูง

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

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

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


1

หากนักพัฒนาอยู่ใน บริษัท / อุตสาหกรรมเป็นระยะเวลานานพวกเขาจะค่อยๆเรียนรู้ "ธุรกิจ"

บริษัท บางแห่งรับทราบและให้การฝึกอบรมใน "ธุรกิจ" บริษัท ทางการเงินเป็นตัวอย่างที่ดีของเรื่องนี้

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

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

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


ย่อหน้าสุดท้ายเป็นเรื่องจริงในโดเมนธุรกิจที่คุณอาจประสบปัญหาทางกฎหมายหากระบบไม่ได้สร้างขึ้นอย่างถูกต้อง
HLGEM

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

0

จากประสบการณ์ส่วนตัวข้อมูลจำเพาะก็เพียงพอตราบใดที่คุณมีคนในทีมทำงานร่วมกับคุณที่มีความรู้ด้านโดเมน

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.