เป็นวิธีที่คล่องตัวมากเกินไปสำหรับการแก้ตัวที่สะดวกสำหรับคาวบอย


73

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

อย่างไรก็ตาม ...ในการทำงานอย่างมืออาชีพของฉันฉันมักจะจบลงที่ บริษัท ที่ใช้วิธี "เปรียว" เป็นข้ออ้างว่าทำไมไม่ใช้ความพยายามในการออกแบบด้านหน้า เมื่อข้อกำหนดเป็นที่เข้าใจกันดี

ฉันอดไม่ได้ที่จะคิดว่าถ้าวิธีการแบบเปรียวไม่ได้อยู่ใกล้ฉันจะนั่งอยู่ที่นี่ด้วยสเปคระดับสูงที่ดีและไม่ต้องกลับไปที่หน้าจอและฟังก์ชั่นเดิมทุกวันที่สอง และไม่เคยคิดเช่นนั้น

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

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


6
Downvotes เอ๊ะ ... ฉันจะพบว่าผู้เปลี่ยนใจเลื่อมใสบางคนได้รับการป้องกันเล็กน้อยโดยเฉพาะอย่างยิ่งเมื่อพวกเขาเห็นความว่องไวและคาวบอยในประโยคเดียวกัน และฉันยังไม่ได้บรรจุถุงเปรียวมันเป็นวัวที่ทำให้ฉันรำคาญ
sipwiz

2
สิ่งนี้อาจมีบางสิ่งที่เกี่ยวข้องกับสาเหตุที่มีผู้ลงนามดั้งเดิมหลายรายเข้าสู่ Agile Manifesto กำลังแสดงความไม่พอใจสำหรับคำว่า "agile" ตามที่ใช้ใน บริษัท ส่วนใหญ่ แต่ตอนนี้พวกเขากำลังพูดถึงสิ่งต่าง ๆ เช่น "ฝีมือซอฟต์แวร์"
Darcy Casselman

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

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

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

คำตอบ:


87

ฉันดีใจที่มีชื่อ

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


17
หินของ Dilbert (เสมอ) ..
TheVillageIdiot

20

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

[BDUF: การออกแบบขนาดใหญ่ด้านหน้า]


3
มันจะไม่มีทางเป็นไปได้ที่จะขัดขวางวัวไม่ว่าจะเป็นวิธีการใด อย่างไรก็ตามอย่างน้อยด้วยน้ำตกพวกเขาจะต้องผลิตเอกสารความต้องการอย่างน้อยหนึ่งเอกสาร sepcification และอื่น ๆ ด้วยความคล่องแคล่วพวกเขาสามารถหนีไปได้ด้วยการต่อสู้โดยตรงในรหัส
sipwiz

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

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

1
Huperniketes ถูกต้องปัญหาไม่ได้อยู่กับวิธีการ ปัญหาคือกับทีมผู้บริหารที่ให้วัวทำงานแผนก
Jeff Siver

7
@sipwiz: แม้ในน้ำตกคาวบอยจะปังตรงเข้าไปในรหัส ในที่สุดพวกเขาต้องการทำเอกสารอะไรก็ตามที่พวกเขาเขียนเป็นข้อกำหนดการออกแบบ
TMN

13

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

อย่างไรก็ตามความมหัศจรรย์ในวิธีการแบบAgileบางอย่างเช่นScrumก็คือพวกเขาจะให้การมองเห็นที่ชัดเจนเกี่ยวกับปัญหาภายในองค์กร รวมถึงปัญหาภายในทีม!

คุณจะได้รับโอกาสในการแก้ไขเมื่อเกิดขึ้น

หากปัญหาอยู่ที่คาวบอยก็จะปรากฏให้เห็นอย่างชัดเจนหลังจากการทำซ้ำครั้งแรก หากปัญหาอยู่ที่อื่นคุณจะเห็นมันในไม่ช้า


12

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


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

+1: @TMN, @CodexArcanum: ฉันก็มีประสบการณ์เช่นเดียวกัน ไม่มีแชมป์ผู้ใช้ การขายกำหนดคุณสมบัติใหม่ให้กับการจัดการผลิตภัณฑ์จากนั้นส่งต่อไปยังการพัฒนา
Jim G.

7

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


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

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

2
@ Craig ฉันไม่เห็นด้วยว่าการออกแบบที่ดีเป็นไปไม่ได้ การรู้ถึงความสลับซับซ้อนทุกอย่างของระบบที่อยู่ข้างหน้าอาจจะเป็นไปไม่ได้ แต่ก็ไม่ได้หมายความว่าการออกแบบที่ตรงข้ามกับสิ่งที่ทราบจะไม่สามารถผลิตขึ้นมาได้ ฉันหมายถึงแม้แต่ประโยคเดียวตามบรรทัดของ "แอพนี้จะถูกเขียนเป็นแอป MVC โดยใช้เฟรมเวิร์กเอนทิตีสำหรับ teh DAL" จะเป็นสิ่งที่ นอกเหนือจากที่ฉันเห็นชาวไร่ที่มี 180 หน้าของข้อกำหนดและคุณไม่สามารถบอกฉันว่ารายละเอียดไม่เพียงพอที่จะสร้างการออกแบบที่ดีงาม
sipwiz

ในที่สุด, ประสบการณ์ของฉันคือจำนวนหน้าไม่สัมพันธ์กับประโยชน์ของ spec. สิ่งที่เขียนมีความสำคัญไม่มาก มันขึ้นอยู่กับระบบทั้งหมดว่าหน้า 180 ดีหรือไม่ถ้าฉันสร้าง Windows ฉันคิดว่ามันเบาไปหน่อย
เครก

3
นอกจากนี้ฉันคิดว่าคุณต้องจำไว้เปรียวไม่ได้หมายความว่าไม่มีสเป็ค
เครก

6

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

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

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

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

(โดยวิธีการที่ฉันเกลียดการเรียกทางเลือก (s) เพื่อ Agile "น้ำตก" เพราะกระบวนการน้ำตกดูเหมือนจะเป็นชาวฟางที่ทุกคนโจมตี แต่คนน้อยมากที่เคยใช้จริงโดยไม่ต้องทำซ้ำใด ๆ )


4
ความล้มเหลวในการพัฒนาไม่ได้เป็นผลมาจากการเลี้ยงวัว ความล้มเหลวในการพัฒนาเป็นผลมาจากการจัดการที่ไม่มีอยู่
Huperniketes

@Huperniketes นั่นเป็นข่าวที่ยอดเยี่ยม โปรแกรมเมอร์ไม่เคยถูกตำหนิ! ช่างเป็นอาชีพในอุดมคติที่เราเลือก!
Oddthinking

@ คิดคิดหยุด จำกัด ตัวเองกับการคิดเลขฐานสอง โปรแกรมเมอร์สามารถถูกตำหนิอย่างแน่นอนหากไม่สามารถปฏิบัติงานในระดับอาชีพได้ แต่โปรแกรมเมอร์ไม่ควรตำหนิสำหรับความล้มเหลวของโครงการ นั่นเป็นความรับผิดชอบของผู้จัดการโครงการ
Huperniketes

@Huperniketes บางทีคุณสามารถชี้แจงเพิ่มเติมได้ไหม ตอนแรกคุณพูดว่า "การพัฒนาล้มเหลว" แต่จากนั้นย้ายไปที่ "โครงการล้มเหลว" ฉันยอมรับว่าผู้จัดการโครงการอาจต้อง "พกพากระป๋อง" ถ้านักพัฒนาคนใดคนหนึ่งของพวกเขาทำงานต่ำกว่าความคาดหวัง แต่ก็ยากที่จะเห็นว่าคาวบอยไม่สามารถส่งมอบได้จะไม่เป็นสาเหตุของโครงการที่ล้มเหลว
Oddthinking

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

5

Agile นั้นใช้ได้ตราบใดที่มันทำงานให้กับทีมของคุณ

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

ฉันชอบความคิดหลายอย่างที่อยู่เบื้องหลังความคล่องตัว แต่ความล้มเหลวที่ฉันเห็นครั้งแล้วครั้งเล่าก็คือผู้จัดการกำลังผลักดันกระบวนการ "ความคล่องตัว" ที่เข้มงวดซึ่งต้องเผชิญกับแนวคิดความคล่องตัวทั้งหมดซึ่งทีมควรจะเป็นตัวของตัวเอง -organizing

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

สำหรับทีมที่ดีดูเหมือนว่าจะทำงานได้ดี (จากนั้นอีกครั้งกระบวนการส่วนใหญ่ดูเหมือนจะทำงานได้ดีเมื่อคุณมีทีมที่ดีตลกว่ามันใช้งานไม่ได้หรือไม่)

สำหรับทีมอื่น ๆ จากประสบการณ์ของฉันมันไม่เคยช่วยคนเลวทำดีกว่า แต่ บางครั้งก็ทำหน้าที่ช่วยคนที่มีประสิทธิผล

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

(ถ้าคุณไม่ได้คิดออกมาจากข้างบนฉันไม่ใช่แฟนตัวยงของ "Capitol-A Agile" อย่างน้อยในทางกลับกันฉันไม่คิดว่ามันจะกระตุ้นคาวบอยด้วย)


3

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

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


3

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


1
อย่าลืมความหวาดระแวง "if (var! = null)" ตรวจสอบโรยทั่วรหัส ...
Jörgen Sigvardsson

3

ฉันกำลังทำงานในร้านค้าที่เป็นกรณีนี้ยกเว้นว่าจะทำอย่างไรกับวัฒนธรรมองค์กรมากกว่ากับวัวแต่ละตัว

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

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


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

2

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


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

การสร้างต้นแบบ ....
sipwiz

2

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

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

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

ทีนี้ผู้พูดไม่เก่งของ Agile, XP, Scrum และอื่น ๆ พูดถึงความเปราะบางของวิธีการนั้น ๆ การโต้แย้ง: ทำไมใช้วิธีการที่สามารถก่อวินาศกรรมโดยบุคคลหนึ่งที่ขาดวินัยในการปฏิบัติตามกฎทั้งหมด? คำถามคือคำถามที่ถูกต้อง อย่างไรก็ตามนั่นคืออาการไม่ใช่สาเหตุ หากชุดเมทริกของกระบวนการมีความถูกต้องและมีความหมาย (ซึ่งเป็นส่วนที่ยาก) จะมีการกำหนดทดสอบและส่งข้อเสนอแนะในเวลาที่กำหนดเนื่องจากฉันคิดว่าเราจะค้นพบวิธีการเฉพาะนั้นมีส่วนเกี่ยวข้องกับความสำเร็จเพียงเล็กน้อย (การพูดโดยสังเขปฉันได้เห็นโครงการที่ประสบความสำเร็จโดยใช้วิธีการมากมายและล้มเหลวเป็นสองเท่าโดยใช้วิธีการเดียวกัน)

แล้วเมตริกคืออะไร? พวกเขาแตกต่างจากโครงการไปยังโครงการทีมงานเป็นทีมและเป็นครั้งคราว มีประโยชน์เมื่อตารางการส่งมอบมีความสำคัญสิ่งที่ฉันใช้เป็นการส่วนตัวคือทักษะการประมาณและคุณภาพ นักพัฒนาส่วนใหญ่สามารถประมาณงานที่ต้องใช้เวลาไม่เกินหนึ่งสัปดาห์ ดังนั้นวิธีหนึ่งคือการแบ่งโครงการออกเป็นงานหนึ่งสัปดาห์นักพัฒนาและติดตามผู้ทำการประเมิน เมื่อโครงการดำเนินไปพวกเขาอาจเปลี่ยนการประมาณของพวกเขา หลังจากงานเสร็จสมบูรณ์หากปิดมากกว่า 10% (1/2 ต่อวัน) เราปฏิบัติเช่นนี้เป็นข้อบกพร่อง - เราระบุว่าเหตุใดการประมาณการจึงปิด (เช่นตารางฐานข้อมูลไม่ได้ถูกพิจารณา) ระบุ การดำเนินการแก้ไข (เช่นเกี่ยวข้องกับ DBA ในการประมาณค่า) แล้วไปต่อ การใช้ข้อมูลนี้เราสามารถสร้างตัวชี้วัดเช่น # ของข้อบกพร่องการประมาณต่อสัปดาห์, # ของข้อบกพร่องต่อนักพัฒนา

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

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


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

1

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

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

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


เปรียวโดยไม่ต้องทดสอบอัตโนมัติกำลังถามอาการปวดหัว
Steven A. Lowe

1

มันตลกดีที่ไม่มีใครคิดว่าตัวเองเป็นนักเขียนโคบาล ฉันพนันได้หลายโปสเตอร์หรือเป็นหนึ่ง;)


1
ฉันสงสัยว่าพวกเราส่วนใหญ่เริ่มเป็นคาวบอย
David Thornley

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

1

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

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

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


0

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

  • ไม่ถูกต้อง - ล้มเหลวในการจับความต้องการ

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

  • แยกออก - พวกเขาจะไม่รวมข้อเสนอแนะที่มีคุณค่าจากระบบทำงาน (แม้ว่าจะเลวลง)

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