รับเปรียว
ฉันอยากจะแนะนำต่อไปนี้:
การแก้ไขไฟล์เดียวกัน
ก่อนอื่นให้ใช้ Git (หรือระบบการสร้างเวอร์ชันที่เกิดขึ้นพร้อมกัน) ตราบใดที่คุณกำลังแก้ไขส่วนต่าง ๆ ของไฟล์เดียวกันคุณจะไม่เกิดข้อขัดแย้ง หากคุณได้รับความขัดแย้งพวกเขาจะถูกทำเครื่องหมายอย่างชัดเจนเช่นนี้
การพยายามจัดการโครงการที่มีนักพัฒนาหลายคนโดยไม่มี Git ก็เหมือนกับการพยายามทำพุดดิ้งโดยไม่ต้องใส่ชามพุดดิ้ง เป็นไปได้ แต่มันจะยุ่งสวยเร็ว
ดังที่ได้กล่าวไว้ในความคิดเห็น Git ไม่ใช่ยาครอบจักรวาล แต่เมื่อรวมกับการทดสอบอัตโนมัติมันช่วยได้อย่างมาก
รายการคุณสมบัติทั้งหมด
ประการที่สองแบ่งโครงการเป็นคุณลักษณะที่ผู้ใช้มองเห็นได้ ตัวอย่างเช่น "เมื่อผู้ใช้สมัครสมาชิกพวกเขาควรได้รับอีเมล" หรือ "ผู้ใช้สามารถเพิ่มรายการ" เกี่ยวข้องกับผู้มีส่วนได้ส่วนเสียทั้งหมดที่นี่ ทำให้ทุกคนอยู่ในห้องและให้ทุกคนตะโกนคุณสมบัติของพวกเขา
เหล่านี้ควรเป็นคุณสมบัติที่ผู้ใช้มองเห็นคุณสามารถพูดคุยเกี่ยวกับกลยุทธ์การใช้งานในภายหลัง
เขียนคำแนะนำทั้งหมดบนบัตรดัชนีแม้เป็นคนโง่ หาเหตุผลเข้าข้างตนเองอย่างรวดเร็วรายการเพื่อลบรายการที่ซ้ำกันและวางไพ่ทั้งหมดบนโต๊ะขนาดใหญ่หรือแม้แต่พื้น
เพิ่มในการ์ดเพิ่มเติมที่จำเป็น สมมติว่าแอปพลิเคชันของคุณจะส่งข้อความเตือนทาง SMS คุณอาจไม่รู้วิธีการทำเช่นนั้นดังนั้นคุณจึงมีคำถาม เขียน "ตรวจสอบพอร์ทัล SMS" บนการ์ด เช่นเดียวกันกับสิ่งแปลกปลอมที่มีขนาดใหญ่อื่น ๆ คุณจะต้องคลายการแพ็คเหล่านี้ในภายหลัง คุณสมบัติเหล่านี้อาจไม่ทำให้คุณวิ่งเร็วครั้งแรก
ตอนนี้จัดเรียงบัตรของคุณเป็นกลุ่มสับพวกเขาเกี่ยวกับได้รับความรู้สึกสำหรับพวกเขา นี่คือขอบเขตโครงการของคุณ
วางแผนโป๊กเกอร์
วางแผนการเล่นโป๊กเกอร์ ยังคงอยู่กับทุกคนร่วมกันมอบการ์ดนักพัฒนาทั้งหมดที่พูดว่า "1 คะแนน", "2 คะแนน" ฯลฯ จนถึงสูงสุด "4 คะแนน" นอกจากนี้ยังมีการ์ด "เพิ่มเติม" จุดนั้นมีค่าประมาณหนึ่งชั่วโมง
ผ่านรายการคุณลักษณะหนึ่งต่อหนึ่ง เมื่อคุณอ่านฟีเจอร์ทุกคนจะต้องเล่นการ์ด หากมีคนหนึ่งเล่น 1 และอีกคนเล่น 4 มีปัญหาด้านการสื่อสารอยู่ที่นั่น บุคคลหนึ่งเข้าใจคุณลักษณะเพื่อหมายถึงบางสิ่งที่แตกต่างจากบุคคลอื่น มีการสนทนาและหาสิ่งที่ตั้งใจจริงและจดบันทึกไว้ในการ์ด
หากคุณยอมรับว่าสถานที่นั้นเป็น "มากกว่า" สถานที่นั้นจะใหญ่เกินไป คุณต้องแยกฟีเจอร์นั้นออก ทำสิ่งนี้ในลักษณะเดียวกับเมื่อก่อน
เมื่อคุณมีข้อตกลงให้เขียนตัวเลขลงบนการ์ดด้วยปากกาสีอื่น
คะแนนดีกว่าชั่วโมง
การใช้คะแนนแทนที่จะใช้เวลาหลายชั่วโมงทำให้ Macho "ดูสิว่าฉันสามารถเขียนโค้ดได้เร็วแค่ไหน" สิ่งที่นักพัฒนาของเรามีส่วนร่วมบ่อยครั้งมันแตกต่างกันเล็กน้อย แต่ฉันพบว่ามันใช้งานได้ค่อนข้างดี
ตอนนี้เขียนวิ่ง
การวิ่งนั้นเป็นการพุ่งเข้าหาเป้าหมายอย่างรวดเร็ว ตัดสินใจเกี่ยวกับระยะเวลาในการวิ่งบางที 5 หรือ 10 วัน คูณจำนวนวันด้วยจำนวนนักพัฒนาด้วยจำนวนคะแนนต่อวัน
สมมติว่า 6 คะแนนต่อวันต่อผู้พัฒนาเริ่มแรก นี่เป็นจำนวนที่ทำได้ หากคุณมี 5 คนนั่นคือ 5 * 5 * 6 = 150 คะแนน เมื่อใช้ร่วมกับนักพัฒนาและผู้บริหารทั้งหมดให้เลือกคุณสมบัติจากรายการสูงสุด 150 คะแนน นั่นคือการวิ่งของคุณ
ไม่เคยถูกล่อลวงให้บีบเกินกว่าที่จะพอดี การสัญญามากเกินไปทำให้ทุกคนเจ็บปวดในระยะยาวรวมถึงคุณด้วย
คุณจะต้องคำนึงถึงการพึ่งพาที่นี่ ตัวอย่างเช่นการตั้งค่าสภาพแวดล้อมจะต้องรวมอย่างชัดเจนในการวิ่งครั้งแรก นี่เป็นเรื่องง่ายที่จะทำเมื่อทุกคนมีอยู่จริง คุณมีสมองอยู่ 6 ห้องในห้องทุกคนพูดว่า "นี่ขึ้นอยู่กับสิ่งนี้" ฯลฯ จากนั้นคุณสามารถสับไพ่รอบ ๆ เพื่อแสดงการพึ่งพา
เมื่อคุณมีการวิ่งของคุณไม่มีอะไรสามารถเพิ่มเข้าไปได้มันถูกล็อคไว้เป็นเวลา 5 วัน การคืบของฟีเจอร์จะเน้นทีมสร้างความเสียหายขวัญกำลังใจและทำให้ทุกคนช้าลง ในที่สุดคืบจะถ่วงโครงการ ในฐานะหัวหน้าทีมคุณต้องปกป้องทีมของคุณจากการคืบของฟีเจอร์ หากคำขอคุณสมบัติใหม่เข้ามาจะต้องเพิ่มคำขอในการวิ่งครั้งต่อไป หากการวิ่งครั้งต่อไปเต็มแล้วต้องมีสิ่งอื่นออกมา
ไม่เคยถูกล่อลวงให้บีบตัวเป็นพิเศษ สัญญามากเกินไปจะช่วยให้คุณมีความสุขกับลูกค้าประมาณ 1 วันตามด้วยความเครียดของทีม 4 วันและในที่สุดลูกค้าที่ไม่มีความสุขมักจะไม่พอใจเมื่อทีมไม่สามารถส่งมอบตรงเวลา
ตอนนี้ไปที่มัน
แจกการ์ดถามว่าใครต้องการทำอะไร คุณมีทัศนวิสัยที่ชัดเจนเกี่ยวกับสิ่งที่กำลังทำอยู่และคุณสามารถนับคะแนนที่ลดลงเหลือศูนย์ได้ มีจุดเริ่มต้นในแต่ละวันเพื่อให้ทุกคนรู้ว่าใครกำลังทำอะไรอยู่และทำอะไรไปบ้าง
นักพัฒนาที่มีแรงจูงใจ 5 หรือ 6 คนทำงานร่วมกันเป็นหน่วยในเป้าหมายที่จัดการได้อย่างชัดเจนสามารถบรรลุเป้าหมายได้ในระยะเวลา 5 วัน
รักษาทัศนวิสัย
ตรวจสอบให้แน่ใจว่าทุกคนสามารถเห็นสถานะของโครงการ Bluetack ไพ่ทั้งหมดเข้ากับกำแพง ด้านซ้ายมีการ์ดที่ยังไม่สามารถใช้งานได้ ด้านขวาเป็นการ์ดที่ทำเสร็จ
เมื่อนักพัฒนาซอฟต์แวร์กำลังทำงานกับการ์ดพวกเขาก็ถอดมันออกจากผนังแล้ววางมันไว้บนโต๊ะ สิ่งนี้จะรักษาทัศนวิสัยและป้องกันไม่ให้ผู้คนเหยียบย่ำกันและกันมากเกินไป
มีทางเลือกทางเทคโนโลยีในการทำดัชนีบัตร แต่ไม่มีอะไรจะดีไปกว่าการแสดงกระดาษขนาดใหญ่เกี่ยวกับสถานะโครงการบนผนัง
ถ้าเป็นไปได้ให้ทุกคนอยู่ในห้องเดียวกันตลอดระยะเวลาของโครงการ มีผู้มีส่วนได้ส่วนเสียมากที่สุดทุกวัน
มอดไหม้
คุณสามารถทำกราฟคะแนนของคุณที่กำลังดำเนินไปสู่ศูนย์ในแผนภูมิที่ถูกเผา หากแนวที่ดีที่สุดของคุณข้ามศูนย์ก่อนที่คุณจะถึงเวลาที่กำหนด หากไม่ใช่คุณอาจต้องแจ้งให้ลูกค้าทราบทันทีก่อนที่คุณจะเข้าใกล้กำหนดส่ง
หากคุณกำลังจะล้มเหลวล้มเหลวก่อน
คุณสามารถทำการเบิร์นด้วยซอฟต์แวร์ แต่ฉันชอบกระดาษชิ้นใหญ่บนกำแพง วาดและเขียนไปทั่ว
การทดสอบอัตโนมัติ
เมื่อคุณมีนักพัฒนาหลายคนทำงานในสิ่งเดียวกันในเวลาเดียวกันพวกเขาอาจจะทำลายรหัสของกันและกันเป็นครั้งคราว การสื่อสารและทัศนวิสัยช่วยในเรื่องนี้ แต่คุณอาจต้องการแนะนำเทคโนโลยีบางอย่างเพื่อช่วยในการค้นหาปัญหา
การทดสอบหน่วยเป็นกระบวนการของการเขียนการทดสอบสำหรับแต่ละส่วนของ codebase ของคุณ (แต่ละวิธีนึกคิด) การทดสอบหน่วยของคุณควรทำงานบ่อยครั้งด้วยการบันทึกทุกครั้งหากเป็นไปได้ มีเครื่องมือมากมายที่สามารถช่วยได้เช่น Karma หรือ Rspec
การทดสอบตั้งแต่ต้นจนจบเกี่ยวข้องกับการทดสอบโครงการของคุณโดยรวมให้ถือว่า internals เป็นกล่องดำ ทำการทดสอบตามความต้องการทางธุรกิจระดับสูงของคุณเช่น: "ผู้ใช้สามารถลงทะเบียน" หรือ "ผู้ใช้สามารถดูรายการสินค้า" ไม้โปรแทรกเตอร์เป็นตัวอย่างที่ดีของกรอบการทดสอบตามเว็บตั้งแต่ต้นจนจบ
มีหนังสือทั้งเล่มที่เขียนเกี่ยวกับการทดสอบ แต่อย่างน้อยก็มีการทดสอบตอบรับบางอย่างที่สามารถช่วยให้แน่ใจได้ว่าไม่มีอะไรเสียหายเมื่อคุณทำงานในโครงการของคุณ
หลีกเลี่ยงหนี้สินทางเทคนิคและทำให้เสร็จ
หนี้ทางเทคนิคเป็นแนวคิดที่อธิบายสิ่งต่าง ๆ ที่จะต้องแก้ไขในภายหลัง แหล่งที่มาของตราสารหนี้โดยทั่วไปคือคุณลักษณะที่ทำเครื่องหมายว่าทำเสร็จแล้ว แต่ไม่เคย "ทำเสร็จแล้ว" คุณลักษณะที่ทำเสร็จแล้วจะถูกตรวจสอบใน Git ได้รับการอนุมัติจากผู้มีส่วนได้เสียและมีการทดสอบ
อย่าตรวจสอบคุณสมบัติของคุณจนกว่าจะเสร็จสิ้น อย่านวดกราฟ สิ่งนี้ทำร้ายทุกคนในระยะยาวรวมถึงคุณด้วย
นี่คือเหตุผลหนึ่งว่าทำไมในตอนแรกเราเสนอราคา 6 คะแนนต่อผู้พัฒนาต่อวันเท่านั้น เสร็จแล้วใช้เวลาทำงานพิเศษ แต่รู้สึกดีและทำให้ทีมเพิ่มขึ้น