วิธีการพัฒนาซอฟต์แวร์ที่ยอดเยี่ยมด้วยวิธีการที่คล่องตัว?


61

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

  1. คุณสมบัติที่ต้องมี: หากสิ่งเหล่านี้ไม่ได้ถูกนำไปใช้ลูกค้าจะไม่ยอมรับผลิตภัณฑ์

  2. คุณสมบัติที่น่าดึงดูดใจ (คุณสมบัติพิเศษ): คุณสมบัติที่ลูกค้ามักไม่ได้คาดหวังตั้งแต่แรก แต่สร้างความตื่นเต้นและความสุขเมื่อถูกค้นพบ

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

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

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

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


12
เปลี่ยนเป็นข้อกำหนดหรือไม่ ไม่ตลก. ฉันเห็นด้วยกับ Kano Model อย่างไรก็ตามฉันได้เห็นหลายครั้งที่ บริษัท สร้างความสับสนเกี่ยวกับคุณภาพและความน่าเชื่อถือด้วยการตลาดที่ว่างเปล่าและไร้ประโยชน์ที่จะตาย เปลี่ยนสิ่งเหล่านี้เป็นข้อกำหนดที่จำเป็น วิธีการแบบเปรียวพลัสไม่ได้เป็นความประพฤติที่ไม่แน่นอน ใครก็ตามที่ใช้ agaile มีอิสระในการปรับวิธีการให้สอดคล้องกับ pruposes ที่สูงขึ้น
Laiv

8
"แต่เรา (และลูกค้า) รู้อยู่เสมอว่าอะไรคือสิ่งที่ต้องเป็น" - ไม่และนั่นเป็นเหตุผลว่าทำไมวิธีการที่คล่องตัวสามารถส่งมอบซอฟต์แวร์ที่ยอดเยี่ยม พวกเขายอมให้สิ่งนั้น คุณไม่ได้"ติดตามอย่างทารุณ"อะไรเลยและคุณสามารถเปลี่ยนลำดับความสำคัญและแก้ไขข้อกำหนดต่าง ๆ ได้ตามที่คุณต้องการ
jonrsharpe

17
"ฉันได้ทำประสบการณ์สองสามครั้งที่ความต้องการซึ่งได้รับการจัดลำดับความสำคัญสูงในตอนแรกกลายเป็นสิ่งที่สำคัญน้อยกว่าถ้าไม่ไร้ประโยชน์ในภายหลัง" - และนั่นคือประเด็นของความคล่องตัว - เพื่อตอบสนองต่อสิ่งนี้ กระบวนการเรียนรู้. กระบวนการ Waterfall ไม่สามารถเปลี่ยนลำดับความสำคัญตามคำจำกัดความ
Doc Brown

21
@DanMills: รูปแบบน้ำตกตามที่อธิบายไว้เดิมเป็นตัวอักษรเป็นคนฟาง มันเป็นตัวอย่างของการที่โครงการพัฒนาซอฟต์แวร์บางแห่งในเวลานั้นอ้างว่าไร้เหตุผล (ที่พวกเขาตั้งใจ) จะทำการวางแผนทั้งหมดก่อนที่จะดำเนินการทั้งหมดก่อนการทดสอบทั้งหมด บทความเดียวกันแสดงให้เห็นว่าการพัฒนาแบบวนซ้ำ (รวมถึงสิ่งที่เราเรียกว่าเปรียว) นั้นแพร่หลาย แต่มีการจัดการที่ไม่ดีเพราะมันเป็นการปฏิบัติตามข้อตกลงที่ตกลงกันไว้และเป็นที่ถกเถียงกันอยู่ว่า
Phil Miller

4
จะพัฒนาซอฟต์แวร์ที่ยอดเยี่ยมได้อย่างไร? จ้างนักพัฒนาที่ยอดเยี่ยม วิธีการพัฒนามีความสำคัญน้อยกว่าคนที่พัฒนา
ทำเครื่องหมาย

คำตอบ:


78

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

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

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

รถยนต์จะไม่ได้รับการคิดค้นถ้าผู้ผลิตในเวลานั้นจะเป็น "ว่องไว" เพราะลูกค้าทุกคนที่ร้องขอคือม้าที่เร็วกว่า

สิ่งนี้ไม่ได้ทำให้ความว่องไวไม่ดีแม้ว่า มันเป็นเหมือนคอมมิวนิสต์ ความคิดที่ดีที่แทบจะไม่ได้ผลเพราะคนเป็นแค่คนทำสิ่งต่าง ๆ และวิธีการ / อุดมการณ์ / ศาสนากล่อมพวกเขาเป็นความคิดที่พวกเขากำลังทำดีตราบใดที่พวกเขาจะผ่านการเคลื่อนไหวและ / หรือปฏิบัติตามกฎ

[แก้ไข]

Slebetman:

มันเป็นเรื่องน่าขันที่วิวัฒนาการมาจากอุตสาหกรรมยานยนต์ (เช่นโตโยต้า)

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

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

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

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

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

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

ดังนั้นสิ่งที่เลวร้ายลงและข้อสรุปก็คือว่า Agile ดูด

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


4
มันเป็นเรื่องน่าขันที่วิวัฒนาการมาจากอุตสาหกรรมยานยนต์ (เช่นโตโยต้า) ทำในสิ่งที่เป็นต้นฉบับ: วิธี "โตโยต้า" ของโตโยต้าไม่ได้นิยาม "ลูกค้า" ว่าเป็นคนที่ซื้อรถ แต่เป็นแผนกออกแบบผลิตภัณฑ์ / การตลาด เป็นหน้าที่ของแผนกผลิตภัณฑ์หรือฝ่ายการตลาดที่จะติดตามแบบจำลองการออกแบบผลิตภัณฑ์เช่น Kano งานของ Agile คือการนำไปใช้และสร้างผลิตภัณฑ์จริง ๆ หากคุณพบว่าตัวเองกำลังผสมวิธีการเจ้านายของคุณจะไม่เข้าใจบทบาทของงานจริงๆ หากคุณเป็นผู้เริ่มต้นและไม่มีทางเลือกให้แยกจากกัน
slebetman

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

5
+1 คำอธิบายที่ดีที่สุดของความคล่องตัวในโลกแห่งความเป็นจริงที่ฉันเคยเห็นมานาน
Paul Smith

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

3
@Kik ​​ฉันได้ทำทั้งสองอย่างใน บริษัท เดียวกันและผลลัพธ์แตกต่างกันอย่างมาก แม้ว่าวิธีการแบบเปรียวจะทำงานได้ไม่ดี แต่ก็ชัดเจนว่าใคร / สิ่งที่เป็นปัญหาและสามารถแก้ไขได้ น้ำตกไม่ใช่และไม่ใช่ความคิดที่ดีจริง ๆ แล้วคนที่ 'ประดิษฐ์มัน' ทำเช่นนั้นในกระดาษอธิบายว่าทำไมมันถึงเป็นความคิดที่แย่มากแต่ผู้คนไม่สามารถอ่านสิ่งทั้งหมดได้
JimmyJames

74

ดูเหมือนจะไม่มีแม้แต่สถานที่สำหรับคุณภาพที่น่าดึงดูดในความคล่องตัว

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

สิ่งเดียวกันนี้เกิดขึ้นใน Agile หากความต้องการของคุณหยุดที่ต้องห้ามคุณจะได้รับ Fiat หากคุณมีเรื่องราวเพื่อความเป็นเลิศคุณจะได้รับ Ferrari ทุกสิ่งที่เปรียวจริงๆบังคับใช้คือการที่คุณทำต้อง haves แรก ไม่ได้สร้างสปอยเลอร์ที่เด็ดสุด ๆ เป็นเวลาสองปีแล้วหายไปตามกำหนดเวลาของเครื่องยนต์

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


5
จริงมากเครื่องมือไม่เชื่อเรื่องพระเจ้าและไร้ศีลธรรม หากใครรู้กระบวนการที่พิสูจน์แล้วว่าได้ผลมากกว่าสิ่งที่คุณใส่โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง
Mindwin

21
และด้วยความคล่องตัวคุณอาจขยายโครงการ Fiat ของคุณและรับ Ferrari หรือโครงการ Ferrari ยังคงได้รับ Fiat (ที่มีค่าที่ไม่ใช่ศูนย์) แม้ว่าโครงการจะล้มเหลว
user253751

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

13
@MartinMaat ฉันเห็นด้วยกับคุณเกี่ยวกับความจริงที่ว่า PO ที่ไม่ดีนั้นทำเพื่อผลลัพธ์ที่ไม่ดี แต่ฉันได้เห็นเอกสารข้อกำหนดที่ไม่ดีมากมายในน้ำตก งานที่ไม่ดีเป็นงานที่ไม่ดี ... ในกระบวนการใด ๆ
nvoigt

28

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

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

ดูเหมือนจะไม่มีแม้แต่สถานที่สำหรับคุณภาพที่น่าดึงดูดในความคล่องตัว

ไม่มีอะไรจะเพิ่มเติมจากความจริง

กระบวนการแบบเปรียวมักเน้นประเด็นเหล่านี้:

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

ไม่มีอะไรป้องกันคุณจากการให้ "ความสุข" ในระดับความสำคัญสูง มันขึ้นอยู่กับคนที่รับผิดชอบในการกำหนดลำดับความสำคัญ

ตอนนี้มันเป็นความจริงที่คนจำนวนมากไม่ต้องการเสี่ยงและอาจไม่ให้ความสำคัญกับ แต่ในโครงการที่ไม่คล่องตัวซึ่งจะยังคงเป็นเช่นนั้น


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

9

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

ฉันทำงานภายใต้ทั้ง Agile และกระบวนการ BDUF (Big Design Up Front) และในขณะที่คุณสามารถได้รับคุณสมบัติที่แปลกใหม่และน่าสนใจจากทั้งสองกระบวนการใน BDUF ไม่น่าแปลกใจที่คุณต้องวางแผนล่วงหน้า นั่นหมายความว่าจะต้องมีการเสนอนวัตกรรมโดยทั่วไปหรืออย่างน้อยก็ต้องได้รับการสนับสนุนจากผู้ที่มีอิทธิพลในกระบวนการออกแบบ

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

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

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


9

ซอฟต์แวร์ที่ยอดเยี่ยมมาจากสองสิ่ง:

  • ให้สิ่งที่ลูกค้าต้องการ

  • เป็นมืออาชีพ

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

ส่วนหนึ่งของงานของเราคือการรักษามาตรฐานที่ลูกค้าไม่เคยมีประสบการณ์เว้นแต่สิ่งที่ผิดไปอย่างมาก

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

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

น้ำตกยังคงใช้งานอยู่ในร้านค้ามากมายจนถึงทุกวันนี้ ร้านค้าเหล่านี้ประสบความสำเร็จเพราะความต้องการของพวกเขาเปลี่ยนน้อยกว่า 2% ในหนึ่งปี

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

คนงี่เง่าคนใดสามารถสร้างสะพานที่มีงบประมาณไม่ จำกัด มืออาชีพสร้างสะพานที่แทบไม่เคยล้มลง

ดังนั้นฉันจึงเชื่อว่าไม่ควรมุ่งเน้นไปที่ความต้องการที่จะเป็นทาส

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


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

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

4

ตกลง,

ใน Agile โปรแกรมเมอร์อาจสร้างซอฟต์แวร์ แต่ท้ายที่สุดก็คือเจ้าของผลิตภัณฑ์ที่สร้างผลิตภัณฑ์ (โดยใช้นักพัฒนาซอฟต์แวร์)

ดังนั้นเกี่ยวกับ "คุณสมบัติที่น่าดึงดูด" ซึ่งขึ้นอยู่กับเจ้าของผลิตภัณฑ์

หากเจ้าของผลิตภัณฑ์กำหนด "การออกแบบที่เซ็กซี่" นั่นอาจเป็นข้อกำหนดได้ นักพัฒนาไม่ควรกังวลเกี่ยวกับตัวเลือกเหล่านี้

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


3

ประสบการณ์ของผมเห็นด้วยกับความคิดเห็นข้างต้น - มีอะไรซ่อนเร้นอยู่ในเปรียวซึ่งติ๊การพัฒนาซอฟต์แวร์ที่ดี - แต่มีหลายแง่มุมของวิธีเปรียวมักจะเป็น (mal-) ได้รับการฝึกฝนที่นำไปสู่ซอฟแวร์ซึ่งเป็นเพียง "ดีพอ ."

  • เปรียวให้ความสำคัญกับการทำให้บางสิ่งบางอย่างทำงานโดยเร็ว; อย่างไรก็ตามนี่หมายถึงการทำให้สมมติฐานและมุมตัดง่ายขึ้นโดยเฉพาะในโครงสร้างพื้นฐานที่ผู้ใช้มองไม่เห็น ไม่มีอะไรผิดปกติเกี่ยวกับเรื่องนี้หากค่าใช้จ่ายในการแก้ไขข้อสมมติฐานที่ทำให้เข้าใจง่ายต่ำ อย่างไรก็ตามทั้งหมด - บ่อยเกินไป - "หนี้ทางเทคนิค" นี้จะไม่ถูกลบออกก่อนที่ผลิตภัณฑ์จะเข้าสู่การผลิต;
  • เปรียวบอกกล่าวว่าในตอนท้ายของการวิ่งคุณควรมีบางสิ่งที่ใกล้เคียงกับ shippable มากที่สุดเท่าที่จะทำได้เพื่อให้ผู้ถือหุ้นและผู้จัดการโครงการสามารถตัดสินใจได้ว่า "สิ่งที่พวกเขามี" นั้นดีพอที่จะเข้ามา การผลิต อีกครั้งไม่มีอะไรผิดปกติกับเรื่องนี้ถ้าคุณได้หักล้าง "หนี้ทางเทคนิค" ทั้งหมดของคุณ (หรือทำให้คุณสงบลงด้วยจำนวนเงินที่คุณมีและอยู่ที่ไหน) อย่างไรก็ตามจากประสบการณ์ของฉันหนี้ทางเทคนิคที่มากเกินไปจะเข้าสู่การผลิตโดยมีผู้จัดการสัญญาว่า "เรา จะทำความสะอาดได้เมื่อแรงกดดันในการส่งออก "ซึ่งเปลี่ยนเป็น" กำลังการผลิตอย่างรวดเร็วเราต้องระมัดระวังอย่างมากเกี่ยวกับสิ่งที่เราเปลี่ยนตอนนี้ "ซึ่งในที่สุดกลายเป็น" คุณไม่เคยบอกฉันว่าเราได้รับสิ่งนั้น! เราจะต้องทำให้ดีขึ้นในครั้งต่อไป! " บทเรียนของ Ben Frankin เกี่ยวกับ "ความขมขื่นของคุณภาพไม่ดียังคงอยู่หลังจากลืมความหวานในราคาถูกไปนานแล้ว" ดูเหมือนจะไม่มีทางเรียนรู้
  • อย่างไรก็ตามแม้จะมีผู้จัดการที่ไว้ใจได้และนักพัฒนาที่มีวินัย แต่ก็ยังมีปัญหาที่พบบ่อยว่าการวิเคราะห์การออกแบบและการตรวจสอบการออกแบบที่เหมาะสมน้อยเกินไปเกิดขึ้นก่อนที่จะเริ่มการวิ่งซึ่งคาดว่าจะเริ่มดำเนินการ ความล้มเหลวในการพิจารณาทางเลือกอย่างรอบคอบคำอุปมาอุปมัยและการออกแบบ UI มีขนาดใหญ่ - โดยปกติแล้วมันจะมีราคาแพงเกินไปหลังจากที่เริ่มโครงการ ความล้มเหลวของทีมจูเนียร์ในการศึกษาผลิตภัณฑ์ของคู่แข่งอย่างระมัดระวังหรือจัดลำดับความสำคัญของคำจำกัดความและการนำเทคโนโลยีโครงสร้างพื้นฐานเช่น I18N, กรอบการแจ้งเตือน, การบันทึก, ความปลอดภัยและกลยุทธ์การกำหนดเวอร์ชัน API (ตัวอย่าง) มาใช้ ผลผลิตที่ลดลงและจะก่อให้เกิดหนี้สินทางเทคนิคมากกว่าหากพวกเขาเพิ่งใช้เวลา 2-5 ครั้งแรกในการฝึกอบรมการวิเคราะห์การออกแบบและการสร้างต้นแบบ กล่าวโดยย่อทีมของ Agile ต้องต่อต้านใบอนุญาตในการแฮ็ค
  • ฉันมีผู้จัดการระดับสอง (จากนักพัฒนากว่า 100 คน) ที่ท้อใจนักพัฒนาของเขาจากการสละเวลาเขียนการออกแบบที่วางแผนไว้แม้ในระดับพื้นฐานที่สุด เหตุผลของเขา - "ฉันต้องการคนที่จะพูดคุยกัน" - ซึ่งเป็นเรื่องน่าขันเพราะพวกเขาอยู่ใน 5 โซนเวลาที่แตกต่างกันและ 3 ประเทศ จำเป็นต้องพูดมีนิ้วชี้มากมายเกี่ยวกับทีมที่จะต้องทำงานหลายคืนและวันหยุดสุดสัปดาห์ในโครงการเมื่อพวกเขาคิดว่าทุกคนคิดว่าคนอื่นรับผิดชอบการใช้ฟังก์ชั่นบางอย่าง (หรือ การนำไปใช้ใหม่เนื่องจากผู้ผลิตและผู้บริโภคออกแบบไม่ได้ขัดกัน)

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


1

TL; DR

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

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

ค่าคีย์ของการพัฒนาแบบว่องไวตามที่กำหนดโดยแถลงการณ์แบบเปรียว(1)คือ

  • บุคคลและการมีปฏิสัมพันธ์เหนือกระบวนการและเครื่องมือ
  • ซอฟต์แวร์ทำงานผ่านเอกสารที่ครอบคลุม
  • การทำงานร่วมกันของลูกค้ามากกว่าการเจรจาสัญญา
  • ตอบสนองต่อการเปลี่ยนแปลงมากกว่าการทำตามแผน

ดังนั้นการพัฒนาที่คล่องตัวไม่ได้ป้องกันไม่ให้คุณสร้างซอฟต์แวร์ที่มีคุณภาพสูง การพัฒนาแบบ Agile ช่วยให้คุณสามารถส่งมอบซอฟต์แวร์คุณภาพสูง

แต่เรา (และลูกค้า) รู้อยู่เสมอล่วงหน้าว่าข้อกำหนดที่ต้องมีคืออะไร

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

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

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

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

ฉันอยากจะพูดถึงคุณภาพแบบย้อนกลับ - คุณลักษณะที่นำไปสู่ความไม่พอใจ - ของโมเดลคาโน

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

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

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

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


1

ฉันค่อนข้างช้าไปงานปาร์ตี้นี้ แต่ฉันต้องการแบ่งปันมุมมองอื่นในเรื่องนี้:

แต่จะนำไปใช้เพื่อสร้างความพึงพอใจในผลิตภัณฑ์ซอฟต์แวร์คุณภาพสูงได้อย่างไร

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

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

ฉันได้ทำประสบการณ์สองสามครั้งที่ความต้องการซึ่งได้รับการจัดลำดับความสำคัญสูงในการเริ่มต้นกลายเป็นสิ่งที่สำคัญน้อยกว่าถ้าไม่ไร้ประโยชน์ในภายหลัง

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

ข้อสรุป

วิธีการพัฒนาซอฟต์แวร์ที่ยอดเยี่ยมด้วยวิธีการที่คล่องตัว?

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


1
   > How to develop excellent software with agile methods?
  • เมื่อผลิตซอฟต์แวร์เฉพาะสำหรับลูกค้า:
    • หาลูกค้าที่ต้นทุนไม่สำคัญเพราะฟีเจอร์ "น่ายินดี" มีค่าใช้จ่ายเพิ่มเติมและลูกค้าต้องตัดสินใจว่าเขาต้องการจ่ายเงินสำหรับเรื่องนี้หรือไม่
  • เมื่อผลิตซอฟต์แวร์ผลิตภัณฑ์ :
    • ฟีเจอร์ "รื่นรมย์" นั้นดีในการดึงดูดลูกค้าใหม่และค่าใช้จ่ายในการใช้ฟีเจอร์ "น่ายินดี" นั้นไม่สำคัญหากผลิตภัณฑ์ขายมากกว่า 1,000 ครั้ง
  • ในสภาพแวดล้อมที่ดีที่สุด (ถูกที่สุด) ดีที่สุด "คุณจะไม่ได้รับเงินในการใช้คุณสมบัติ" น่ายินดี "

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


1

คุณยกระดับคะแนนที่ดี แต่ฉันไม่เชื่อว่าปัญหาเหล


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

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

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

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


สิ่งที่ความคล่องตัวสามารถทำได้ (ช่วย) คือนำปัญหาเหล่านี้มาสู่พื้นผิว

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

หากคุณพบว่าตัวเองอยู่ในสถานการณ์ที่ฟังก์ชันการทำงานส่วนใหญ่ที่ส่งมอบประกอบด้วย delighters แทนที่จะต้องมีฟีเจอร์มันจะง่ายกว่ามากในการแจ้งปัญหา (และง่ายต่อการตรวจสอบสาเหตุ) เมื่อคุณส่งมอบซอฟต์แวร์ที่ทำงานหรือใกล้ทำงานทุก 2-3 สัปดาห์กว่าเมื่อส่งมอบเป็นเดือนหรือเป็นปี

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

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

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


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


1
  1. Must-be qualitiesมักจะยากที่จะตรวจสอบ ผู้คนมีพวกเขาในจิตใต้สำนึก การทำซ้ำแบบว่องไวและการมีส่วนร่วมของลูกค้าช่วยในการค้นหาสิ่งที่จำเป็นที่สุด นั่นคือพลังของเปรียวและมันเป็นเรื่องโง่ที่จะละเลยมัน
  2. One-dimensional qualitiesนั่นหมายถึงสัญญาที่จะต้องปฏิบัติตามได้รับการสนับสนุนโดย Waterfall ตกลงจนกว่าพวกเขาจะไม่เปลี่ยนแปลง การเป็นคนคล่องแคล่วช่วยได้ แต่ไม่ทรงพลัง
  3. Attractive qualitiesเป็นคุณสมบัติที่ดี พวกเขาอาจกลายเป็นสิ่งที่ไม่ควรพลาดในรุ่นต่อไป แต่ในรุ่นปัจจุบันพวกเขาไม่ได้อยู่ในข้อตกลง - มิฉะนั้นพวกเขาจะเป็นคุณสมบัติหนึ่งมิติ วิธีการที่คล่องตัวที่สมมติว่าการมีส่วนร่วมของตัวแทนลูกค้าสนับสนุนคุณสมบัติเหล่านี้ได้เป็นอย่างดี สำหรับเราสามารถเปลี่ยนขอบเขตเบา ๆ ในระหว่างการทำงาน เราสามารถต่อรองในการปรับปรุงสถานที่แห่งหนึ่งสำหรับการชดเชยในที่อื่น ในน้ำตกเป็นไปไม่ได้ในทางปฏิบัติ หากไม่มีความล่าช้าขององค์กรเราสามารถเพิ่มฟีเจอร์เท่านั้นได้ฟรี เป็นไปได้ถ้ามีการเพิ่มเวลาพิเศษลงในงบประมาณก่อนหน้านี้

ดังนั้นกระบวนการที่คล่องตัวสามารถรองรับโมเดลของ Kano ซึ่งบางอันทำหน้าที่ได้อย่างยอดเยี่ยมและดีกว่าโครงการน้ำตกที่ดีที่สุดอย่างแน่นอน

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

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