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


30

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

ผลิตภัณฑ์ของเรายังอยู่ในช่วงเริ่มต้นและเรามักจะทบทวนองค์ประกอบการออกแบบที่ตัดสินใจเมื่อหลายเดือนก่อน

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

เราจะบันทึกเหตุผลอย่างมีประสิทธิภาพหลังการตัดสินใจออกแบบได้อย่างไร

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

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

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


13
หากคุณรู้สึกว่าคุณต้องการรูปแบบของเอกสารการออกแบบทำไมไม่เพียงสร้างเอกสารการออกแบบ?
MetaFight

ฉันคิดว่าเหตุผลจะถูกบันทึกเป็นร้อยแก้วเขียนร้อยแก้วในตอนแรกเดา ใครคือผู้อ่านที่ตั้งใจไว้สำหรับผู้ที่?
Laurent LA RIZZA

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

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

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

คำตอบ:


26

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

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

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

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


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

5
@ Henrebotha: คุณดูเหมือนจะมีความคิดที่แตกต่างจากฉันเกี่ยวกับสิ่งที่การออกแบบเป็นได้หรือควรจะเป็น รหัสคือการออกแบบ โครงสร้างของรหัสคือการออกแบบ โครงสร้างของส่วนต่อประสานกับผู้ใช้คือการออกแบบ โครงสร้าง Meta ของรหัสหรือคลาสคือการออกแบบ คำถามเช่น "ผู้ใช้ควรมีสิทธิ์ X จากการตั้งค่าบัญชี Y" ให้ฉันฟังเหมือนบางสิ่งที่คุณไม่ต้องการ hardwire ที่ใดก็ได้ในซอฟต์แวร์ของคุณ - ฟังดูเหมือนความต้องการที่กำหนดค่าได้ วิธีที่คุณใช้ข้อกำหนดนั้นในรหัสอาจเป็นการตัดสินใจออกแบบดังนั้นคุณสามารถแสดงความคิดเห็นในรหัสของคุณได้
Doc Brown

2
@henrebotha: ถ้าคุณใช้ hardwire สิทธิ์ X ในการตั้งค่าบัญชี Y จะมีผลกระทบต่อรหัสจากการตัดสินใจนั้น รหัสบางอย่างที่ควบคุมการอนุญาตรหัสบางอย่างที่จัดการการตั้งค่าบัญชีรหัส UI บางรหัสตัวควบคุมบางอย่าง ดังนั้นควรมีความคิดเห็นในรหัสในสถานที่เหล่านั้นทั้งหมด แน่นอนเพื่อหลีกเลี่ยงการซ้ำความคิดเห็นทั้งหมดอาจอ้างถึงเอกสารการออกแบบแยกต่างหากหากมีเหตุผลหนึ่งที่อยู่ด้านหลังซึ่งมีผลต่อสถานที่ต่าง ๆ มากมาย (ดังที่ฉันบอกในคำตอบของฉัน) ..
Doc Brown

1
ฉันไม่ได้โต้แย้งว่าการตัดสินใจออกแบบมีผลต่อโค้ด แน่นอนว่าการตัดสินใจออกแบบมีผลกับโค้ด นั่นยังไม่ได้หมายความว่าความคิดเห็นเป็นสถานที่ที่เหมาะสมในการบันทึกการตัดสินใจออกแบบผลิตภัณฑ์
henrebotha

1
@henrebotha: มันขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "การตัดสินใจออกแบบผลิตภัณฑ์" การตัดสินใจออกแบบ "ผลิตภัณฑ์" อาจอยู่ในเอกสารที่ "ระดับสูงสุด" ของเอกสารผลิตภัณฑ์ของคุณ หากคุณหมายถึง "การออกแบบการตัดสินใจภายในผลิตภัณฑ์ของคุณ" บางคนมีความคิดเห็นเกี่ยวกับโค้ด แต่ฉันไม่เพียง แต่พูดถึงความคิดเห็นของรหัสดูการแก้ไขของฉัน ฉันกำลังพูดถึงความคิดเห็นในรูปแบบใด ๆ (ภายในรหัสหรือในเอกสารแยกต่างหาก) คุณเป็นส่วนหนึ่งของ codebase ของคุณ
Doc Brown

8

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

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

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

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

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

ได้เวลาว่องไว

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

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

  • ยอมรับรูปแบบเอกสารที่ไม่น่าเชื่อถือ ไม่มีอะไรจะถูกต้องในครั้งแรก เป็นการดีกว่าที่จะได้รับข้อมูลและหาวิธีทำให้เชื่อถือได้ในภายหลัง ตัวอย่างเช่นคุณอาจบันทึกเหตุผลของคุณในบล็อก <rationale> </rationale> หรือสิ่งที่คล้ายกันซึ่งจะทำให้ง่ายต่อการรวบรวมข้อมูลนั้นในภายหลัง การจัดเก็บเหตุผลในเรื่องราวของผู้ใช้สำหรับตอนนี้ก็ไม่เป็นไร!
  • อย่าลืมคุณค่าขององค์กร ค้นหาว่าคุณในฐานะทีมต้องการค้นหาเหตุผลในเอกสารประกอบอย่างไรและลองทำตามเอกสารนั้น แต่ละทีมจะมีกระบวนการที่แตกต่างกัน ในหนึ่งในทีมของฉันเราไม่สามารถหาตั๋วที่มีเหตุผลได้ทันที สิ่งที่เราสามารถทำได้คือหาบรรทัดของรหัสที่มีความสำคัญทำ a svn blameเพื่อค้นหาว่ามันเปลี่ยนไปเมื่อใดและเพราะอะไรจากนั้นไปดูตั๋ว เมื่อเราอยู่ที่นั่นเรามักจะใส่เหตุผลทั้งหมดที่เราต้องการลงในตั๋ว ที่เพิ่งได้ผลกับเราค้นหาว่าอะไรเหมาะกับคุณ
  • เอกสารอินทรีย์สามารถเติบโตได้ตลอดเวลา เป็นเรื่องยากสำหรับนักพัฒนาที่จะรู้ว่าเหตุผลใดสำคัญที่สุดในวันที่พวกเขาต้องการเขียน เรามักจะพบสิ่งที่มีความสำคัญในภายหลัง หากคุณมีกระบวนการกรูมมิ่งสำหรับเอกสารที่อนุญาตให้นักพัฒนาจัดการสวนเล็ก ๆ ของพวกเขาเองเหตุผลที่สำคัญจะเพิ่มขึ้นถึงพื้นผิว เหตุผลที่สำคัญกว่านั้นอาจเปลี่ยนไป คุณอาจตระหนักว่าการเปลี่ยนแปลงที่แตกต่างกันสองประการด้วยเหตุผลที่แตกต่างกันสองข้ออธิบายได้ดีที่สุดโดยเหตุผลเดียวที่เหมาะกับทั้งคู่ ตอนนี้มีเนื้อหาระหว่างคุณกับการตัดสินใจน้อยลง!

0

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


2
สถาปัตยกรรมและการตัดสินใจระดับสูง - อาจโอเค API เอกสาร - ไม่! บางคนในองค์กรของเราลองทำสิ่งนี้ในอดีตและมันเหมือนกันเสมอ - เอกสารระดับต่ำจะไม่ซิงค์กับโค้ด Wikis มีปฏิสัมพันธ์ไม่ดีกับ VCS ผู้คนลืมหรือไม่ใช้เวลาในการอัปเดตเป็นต้นเอกสาร API อยู่ในโค้ดหน้าฟังก์ชันที่พวกเขาอธิบาย หากคุณรู้สึกว่าคุณต้องการมันในอินทราเน็ตของคุณให้ใช้ตัวสร้าง HTML เช่น doxygen เพื่อแยกมันออกจากที่นั่น แต่ทำตัวเองเป็นที่โปรดปรานและไม่ดูแลรักษาแยกต่างหากด้วยตนเองใน Wiki
Doc Brown

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

Downvoting โซลูชันที่ใช้งานได้ ... ว้าว โอเคถ้าอย่างนั้น.
zerobandwidth

0

คิดจากมุมมองของ coder ที่จะถูกขอให้เปลี่ยนในเวลา 12 เดือน

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

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

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


0

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

การบอกว่ามันไม่เป็นไรสำหรับการออกแบบที่จะอยู่ในสมองของผู้คนทำให้ผู้พัฒนาและหางานที่แตกต่างนำพวกเขาไปกับข้อมูลที่มีค่า

การมีรหัสของคุณเป็นเอกสารการออกแบบเพียงอย่างเดียวคือการหาทางไปรอบเมืองโดยใช้แว่นขยาย แผนที่มีประโยชน์มากกว่านี้มาก (น่าเสียดายที่ไม่มี GPS เทียบเท่ากับซอร์สโค้ด)

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

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