มันต้องเป็นการผสมผสานที่ลงตัวของคำตอบทั้งหมด ในท้ายที่สุดเมื่อคุณกำลังพูดถึงกลุ่มคนที่มีสมาร์ท (พัฒนา) คุณต้องให้พวกเขาเหตุผลพฤติกรรมที่มีความสำคัญและให้พวกเขาควบคุมเพียงพอมากกว่าวิธีการที่พฤติกรรมที่จะดำเนินการที่พวกเขามีการลงทุนในการทำมันขวา เอกสารจากด้านบนนั้นมักจะไม่ค่อยมีคนฉลาดเพราะถ้าพวกเขาไม่เห็นด้วยว่าปัญหาเป็นปัญหาพวกเขาก็มีแนวโน้มที่จะใช้เวลาทำงานกับเอกสารมากกว่าที่จะปฏิบัติตามกฎ
นี่เป็นกลยุทธ์บางส่วนของฉัน:
กระทำการเปลี่ยนแปลง:
ก่อนอื่นทีมต้องยอมรับว่าจะส่งมอบเมื่อใดและต้องทำอะไร สิ่งที่สำคัญอย่างยิ่งคือการตั้งค่าการสร้างที่เหมาะสมดังนั้นผู้คนจึงไม่ยอมแพ้เพราะพวกเขาไม่รู้ว่าจะใส่อะไร และฉันทามติเกี่ยวกับเวลาที่ต้องเช็คอินบ่อย ๆ ว่า "อย่าทำลายโครงสร้าง" เป็นกฎที่ดีอย่างเห็นได้ชัด แต่มีการตรวจสอบอย่างไรและใครได้รับแจ้งเกี่ยวกับเรื่องนี้ พื้นฐานอื่นคือ "มันไม่ได้ทำถ้าไม่ได้เช็คอิน"
นักพัฒนาส่วนใหญ่ที่ฉันรู้มีความสุขมากกว่าที่จะตรวจสอบในรหัสถ้า:
- กระบวนการเช็คอินนั้นง่าย
- กระบวนการซิงโครไนซ์เป็นเรื่องง่าย (แยกจากการเปลี่ยนแปลงจากผู้พัฒนารายอื่น)
- การดูการเปลี่ยนแปลงและการย้ายระหว่างเวอร์ชันเป็นเรื่องง่าย
สิ่งหนึ่งที่ฉันสังเกตเห็นเมื่อเร็ว ๆ นี้คือเช็คอินนั้นบ่อยขึ้นและเจ็บปวดน้อยลงเมื่อเราส่งต่อไปยังเครื่องมือ CM ใหม่ ทีมของเราเป็นผู้บุกเบิก Rational Team Concert ก่อนหน้านี้เคยใช้ Clearcase ฉันไม่ได้ตั้งใจที่จะโฆษณาเครื่องมือ แต่คลื่นเช็คอินสตรีมมิ่งใหม่ (สำหรับฉัน) ที่มีการผสานเล็ก ๆ และรวดเร็วจำนวนมากทำให้การเช็คอินเร็วขึ้นและบ่อยขึ้น
การปล่อยให้นักพัฒนารับผิดชอบการกำจัดความเจ็บปวด CM โดยทั่วไปจะเพิ่มจำนวนการเช็คอินที่เกิดขึ้น
ยึดมั่นในสถาปัตยกรรม - ไม่เขียนปัญหาแบบในมุมมองและตัวควบคุม
ฉันวางมันลงในกลุ่มทั่วไปของ "ทำสถาปัตยกรรมอย่างถูกต้อง" ฉันเห็นด้วยกับใครก็ตามที่บอกว่ารีวิวเพียร์ - แรงกดดันจากเพื่อนนั้นยอดเยี่ยมสำหรับเรื่องนี้ หนึ่งในวิธีที่ฉันเห็นคนทั่วไปเข้ามามีส่วนร่วมในการปฏิบัติที่ดีที่สุดในพื้นที่นี้คือเมื่อเพื่อนของพวกเขาถามพวกเขาว่าทำไมพวกเขาถึงทำอย่างอื่น (ไม่ใช่วิธีที่ถูกต้อง) โดยทั่วไปคำถาม "ทำไม" จะนำผู้คนไปสู่เส้นทางของการตระหนักถึงตัวเองว่าทำไมพวกเขาควรทำมันแตกต่างกัน เมื่อผู้คนมีเหตุผลที่เข้าใจกันดีสำหรับการปฏิบัติที่ดีที่สุดมันง่ายกว่ามากที่จะยึดมั่น
นอกจากนี้หากมีพิธีการบางอย่างเชื่อมโยงบุคคลกับการตัดสินใจมันจะง่ายกว่าในการกำหนดบั๊กในพื้นที่นั้น ... ดังนั้นหากผู้รับผิดชอบในการแก้ไขข้อบกพร่องในพื้นที่ที่มีการออกแบบที่ผิดพลาด พวกเขาสามารถก้าวไปสู่สิ่งใหม่ที่น่าตื่นเต้นและสามารถเป็นแรงผลักดันครั้งใหญ่
หลีกเลี่ยงการ Hardcoding
ฉันจะเริ่มต้นด้วยมาตรฐานการเข้ารหัสที่ชัดเจนและบูรณาการการตรวจสอบมาตรฐานการเข้ารหัสในบทวิจารณ์เพื่อน การเข้ารหัสฮาร์ดเป็นหนึ่งในสิ่งเหล่านั้นที่สามารถเป็นช่องทำเครื่องหมายในวาระการตรวจสอบจากเพื่อน
ฉันกลัวว่าเรื่องแบบนี้เป็นสิ่งหนึ่งที่ฉันได้เห็นมันกลายเป็นบทบาทของทีมที่นำไปสู่การบังคับใช้กฎ ในทีมที่ฉันใช้งานโดยทั่วไปเราจะไม่ยอมให้ใครบางคนย้ายไปจนกว่าพวกเขาจะแก้ไขความคิดเห็นจากการตรวจสอบโค้ดของเพื่อน และ "ไม่มีการเข้ารหัสยาก" เป็นความเห็นทบทวนบ่อย
โดยทั่วไปแล้ว
เกือบทุกแนวปฏิบัติที่ดีที่สุดฉันคิดว่าคุณต้องเลือกการต่อสู้ของคุณ ไม่มีทีมใดที่จะสมบูรณ์แบบได้อย่างสมบูรณ์ แต่คุณสามารถจับตาดูจุดปวดหลักของคุณและเริ่มจัดการกับพวกมันในกลุ่ม ฉันคิดว่ามันจะกลายเป็นบทบาทของผู้นำในการรู้ว่าอะไรคือจุดเจ็บปวดสำหรับทีมเทียบกับการเล่นโวหารที่น่ารำคาญของบุคคลใดบุคคลหนึ่ง
หากทีมของคุณไม่ได้ทำตามแนวปฏิบัติที่ดีที่สุดฉันคิดว่าคำถามแรกต้องเป็น หากคำตอบคือ "น้อยที่สุด" ก็อาจไม่คุ้มค่ากับเวลา แนวปฏิบัติที่ดีที่สุดบางข้อเกี่ยวข้องกับระบบประเภทเฉพาะมากที่สุด - แม้ว่าโดยรวมจะดี แต่อาจไม่คุ้มค่ากับการต่อสู้สำหรับระบบที่การฝึกไม่ได้เกิดขึ้นบ่อยครั้งหรือเป็นส่วนสำคัญของระบบ
หากคำตอบของ "ความเสียหายเท่าไหร่?" คือ "ALOT !!!" จากนั้นคุณสามารถเริ่มสร้างเคสเพื่อแสดงให้ทีมเห็นว่าความเจ็บปวดและความทุกข์ทรมานทั้งหมดจะถูกลบออกได้โดยการกำหนดจุดที่เฉื่อยชานี้ในแนวทางปฏิบัติที่ดีที่สุด คนส่วนใหญ่มีความสุขที่จะหลีกเลี่ยงความเจ็บปวดและความทุกข์ทรมานและมันเปลี่ยนบทสนทนาจาก "ทำเช่นนี้เพราะฉันบอกให้คุณ" เป็น "เราตัดสินใจทำเช่นนี้เพราะดีกว่า"