ความว่องไวหมายถึงอะไร


17

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

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

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

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

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


4
ดูเหมือนว่าซ้ำซ้อนของprogrammers.stackexchange.com/questions/15928/ … ฟังดูเหมือนว่าพวกคุณไม่รู้จริง ๆ ว่าต้องทำอะไรและขาดการจัดการที่แท้จริงในการบังคับใช้กระบวนการ
sylvanaar

1
ใช่ฉันเห็นด้วยกับคุณ 100% ผู้จัดการของฉันอ่านหนังสือเกี่ยวกับความคล่องแคล่วและเพิ่งได้รับมัน (แม้ว่าจะไม่ดีมาก) ฉันใช้ TDD ที่ฝั่งเซิร์ฟเวอร์ของโครงการ แต่คนอื่นไม่ต้องการเรียนรู้หรือเห็นประโยชน์ของมัน เรามีกรอบ (ฝั่งลูกค้า) ซึ่งใช้เวลาตลอดไปและนักพัฒนายังคงเถียงว่าเขาเพียงแค่ต้องการที่จะได้รับมัน (โดยไม่มีการรบกวน)
JD01

3
แม้ว่าชื่อดูเหมือนจะซ้ำกัน แต่ฉันคิดว่าคำถามนี้มีประโยชน์ในตัวของมันเองเพราะหลายทีมอ่านคำอธิบาย "ทั่วไป" เกี่ยวกับสิ่งที่ว่องไว (และยังใช้เวลาเรียนการฝึกอบรมและจ้างที่ปรึกษา) แล้วทำงานในประเด็นเดียวกันกับ JD01 ทีมต่อไป ดังนั้นการตั้งคำถามให้เข้ากับบริบทของทีมเฉพาะนี้อาจทำให้เข้าใจถึงปัญหาและแนวทางแก้ไขเฉพาะที่คำถามโพสต์ทั่วไปอื่น ๆ จะไม่ตอบ
DXM

คำตอบ:


27

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

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

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

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

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

หากคุณไม่ปฏิบัติตามคำมั่นสัญญาของ Sprint และดำเนินการอย่างต่อเนื่องแสดงว่าคุณทำไม่ถูกต้อง Sprints เกี่ยวข้องกับภาระผูกพันหากคุณมุ่งมั่นทำงานมากเกินไปหยุดทำอย่างนั้นไม่มีทางที่คุณจะสามารถแนะนำการคาดการณ์หรือการทำซ้ำหากคุณไม่สามารถส่งมอบงานได้อย่างแม่นยำ


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

3
TDD เป็นปลาเฮอริ่งแดงฉันไม่เห็นด้วยกับศาสนาเป็นการส่วนตัวสิ่งที่ดีสำหรับการทดสอบโค้ดที่ไม่ตรงกับความต้องการของลูกค้า และเนื่องจากการทดสอบควรถูกฝังไว้และไม่มีการส่งมอบและสาธิตที่ไม่ได้ทดสอบ TDD เนื่องจากมนต์นั้นไม่มีประโยชน์เลย ถ้ามันไม่ทำงานคุณจะไม่สาธิต หากคุณไม่สาธิตให้เห็นว่าเจ้าของผลิตภัณฑ์ / ลูกค้าไม่สามารถยอมรับได้

2
ฉันเริ่มทำ TDD เป็นจำนวนมาก แต่ตอนนี้เปลี่ยนมาใช้ BDD ซึ่งสอดคล้องกับความต้องการของลูกค้ามากกว่าการทดสอบการยอมรับ แม้ว่าฉันรู้สึกว่า TDD ช่วยสร้างงานออกแบบฉันจะไม่เห็นเป็นอย่างอื่นนอกจากการทดสอบ
JD01

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

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

9

Jarrod ให้คำตอบที่ดี (+1 ถึงเรื่องนั้น) และฉันอยากจะขยายไปเล็กน้อย

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

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

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

อาจใช้เวลาสักครู่ แต่ ...

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

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

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


1
to downvoter: สนใจที่จะทำอย่างละเอียดเหรอ? ฉันนัวเนียขนบางส่วนเพราะฉันบอกว่าอย่าใช้ Scrum แบบสุ่มสี่สุ่มห้าหรืออย่างอื่นหรือไม่?
DXM

2
ใช่โง่ ฉันจะ +1 รายละเอียดของคุณ
Michael Durrant

1
+1 สำหรับ " กุญแจสำคัญในการทำความเข้าใจคือความคล่องตัวไม่ได้เกี่ยวกับกระบวนการใหม่สำหรับการทำสิ่งต่าง ๆ มันเป็นเรื่องของการเปลี่ยนแปลงอย่างต่อเนื่องและการปรับอย่างต่อเนื่องกับกระบวนการ / การปฏิบัติที่มีอยู่ "
David 'the bald ginger'

-2

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

พวกเขาควรมองลึกลงไปในวิธีปฏิบัติทางวิศวกรรมที่ใช้เพื่อสนับสนุนวิธีการเฉพาะโครงการเปรียวเลือก


2
ฉันลงคะแนนเพราะฉันไม่คิดว่านี่จะตอบคำถามเดิมได้
ไบรอัน Oakley

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

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

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