สิ่งนี้กลายเป็นนานกว่าที่ฉันวางแผนไว้ (มันเริ่มเป็นความคิดเห็น) แต่ฉันหวังว่าความยาว / รายละเอียดที่เพิ่มเข้ามาจะเป็นประโยชน์และคุณจะพบว่าพวกเขามีความชอบธรรม
Agile ไม่ได้เฉพาะเจาะจงกับแอพ CRUD
วรรณกรรมส่วนใหญ่เกี่ยวกับความคล่องตัวดูเหมือนจะเอนเอียงไปทางแอพพลิเคชั่นทางธุรกิจประเภท CRUD ซึ่งผู้ใช้จะรับรู้ถึงสิ่งที่เกิดขึ้นเบื้องหลัง (ไม่เป็นไรเพราะรหัสส่วนใหญ่ที่เขียนอาจเป็นของคลาสนี้)
ฉันคิดว่าเป็นเพราะง่ายต่อการสร้างตัวอย่างที่ง่ายต่อการติดตามประเภทนี้ไม่ใช่เพราะวิธีการนั้นมุ่งไปที่ระบบเหล่านั้น หากคุณสร้างตัวอย่างที่ไม่ทำตามได้ง่ายคุณเสี่ยงที่จะทำให้ผู้อ่านติดขัดในการพยายามทำความเข้าใจตัวอย่างเมื่อประเด็นของคุณควรสอนผู้อ่านเกี่ยวกับแนวคิดที่คล่องตัว
เรื่องราวของผู้ใช้! = ข้อกำหนด
สำหรับแอปพลิเคชันประเภทนี้ความสัมพันธ์ระหว่างเรื่องราวของผู้ใช้ (ข้อกำหนด) และงานพัฒนาส่วนใหญ่จะตรงไปตรงมา: เพียงแค่แบ่งเรื่องราวของผู้ใช้ออกเป็นงานสองสามอย่าง
เรื่องราวของผู้ใช้ไม่เหมือนกับข้อกำหนด จริงอาจมีการทับซ้อนบางอย่างขึ้นอยู่กับความต้องการ 'ระดับสูง' แต่โดยทั่วไปจะไม่เหมือนกัน ฉันได้รับความประทับใจว่าคุณกำลังประสบกับความผิดพลาดที่เหมือนกันอดีตผู้จัดการจำนวนมากของฉันล้มเหลว: คิดถึงเรื่องราวของผู้ใช้โดยง่ายเหมือนคำพ้องความหมายสำหรับ "ข้อกำหนด" ซึ่งคล้ายกับเมื่อผู้ใช้ SVN พยายามเปลี่ยนไปใช้ Git คิดในแง่ของ SVN (จากนั้นพวกเขาพบปัญหาเนื่องจากสมมติฐานเริ่มต้นที่ไม่ดี)
IMHO ความแตกต่างที่สำคัญระหว่างข้อกำหนดและเรื่องราวของผู้ใช้คือข้อกำหนดที่ระบุในรายละเอียดว่าองค์ประกอบของระบบบางอย่างควรมีพฤติกรรมอย่างไร เป็นข้อมูลจำเพาะที่รวมถึงอินพุตเอาต์พุตข้อสันนิษฐาน / เงื่อนไขก่อนข้อยกเว้นที่เป็นไปได้และอื่น ๆ พวกเขามุ่งเน้นไปที่สิ่งที่ระบบทำ
OTOH เรื่องราวของผู้ใช้จะมุ่งเน้นไปที่ผลลัพธ์ที่คาดหวังสำหรับผู้ใช้ปลายทางโดยไม่ต้องพยายามสร้างรายละเอียดข้อมูลพฤติกรรมสำหรับส่วนประกอบของระบบ พวกเขามุ่งเน้นที่คาดว่าประสบการณ์ของผู้ใช้
สิ่งที่ฉันเคยทำและนี่คือการฝึกฝนที่ทีมของฉันนำมาใช้คือการแบ่งเรื่องราวของผู้ใช้ออกเป็นงานต่างๆ งานของคุณอาจเป็นงานที่เฉพาะเจาะจงหรือคลุมเครือตามที่คุณต้องการ / ต้องการให้เป็นงาน แต่พวกเขาตั้งใจที่จะเป็นตัวบ่งชี้ความคืบหน้าของคุณสำหรับงานที่ทำจริงเพื่อนำเรื่องราวไปสู่สภาวะที่ทำได้
ตัวอย่าง
ฉันนึกถึงสหรัฐอเมริกาที่ฉันทำงานเมื่อหลายปีก่อนที่ผู้ใช้จำเป็นต้องกำหนดกรณีทดสอบด้วยตนเองเพื่อให้ทุกคนในทีมทราบว่า TC ใดที่พวกเขากำลังทำงานเพื่อหลีกเลี่ยงความพยายามซ้ำซ้อน UI คือแอปพลิเคชันเว็บ (ภายใน) ผู้ใช้เห็นเพียงปุ่มเดียว แต่เรื่องราวถูกแบ่งออกเป็นหลายภารกิจซึ่งรวมถึงรายละเอียดการใช้งานด้านเทคนิค ฯลฯ
การเปิดเผยของผู้ใช้
แต่มีแอพพลิเคชั่นอีกประเภทหนึ่งที่โค้ดส่วนใหญ่ต้องรับมือกับการประมวลผลที่ซับซ้อนซึ่งผู้ใช้ไม่สามารถมองเห็นได้โดยตรง
เป็นไปได้หรือไม่ที่จะทำให้ผู้ใช้มองเห็นในทางใดทางหนึ่ง?
พิจารณา GPS เมื่อคุณพลาดการเลี้ยวคุณจะไม่เห็นกระบวนการคำนวณเส้นทางที่แท้จริงอีกครั้ง แต่ผู้ใช้จะได้รับข้อเสนอแนะที่เป็นประโยชน์ (เช่น "คำนวณใหม่ ... ")
คอมไพเลอร์อาจแสดงคำเตือนหรือข้อผิดพลาดหรือรวมการตั้งค่า / ตัวเลือกใหม่ใน GUI เพื่อให้ผู้ใช้เห็นว่ามีการเพิ่มสิ่งใหม่ ฉันคิดว่าผู้ใช้คอมไพเลอร์จะเป็นโปรแกรมเมอร์ใช่ไหม พวกเขาจะไม่เห็นการสนับสนุนสำหรับมาตรฐานใหม่ที่เพิ่มเข้ามาหรือไม่
ในขณะที่สนับสนุนมาตรฐานใหม่น่าจะอยู่ในระดับฟีเจอร์และจะต้องแยกย่อยเป็นเรื่องราวของผู้ใช้คุณแน่ใจหรือไม่ว่าอย่างน้อยในบางกรณีคุณไม่ได้พยายามใช้เรื่องราวเมื่อคุณควรใช้ฟีเจอร์แทน ?
การวิเคราะห์รูปภาพในรถยนต์อาจเป็นคำที่ช่วยให้ผู้ใช้ทราบว่าโอกาสที่จะเกิดอุบัติเหตุรถชนลดลง ตัวอย่างเช่น:
ในฐานะผู้โดยสารในรถยนต์ที่ขับด้วยตนเองฉันต้องการความน่าจะเป็นของยานพาหนะที่ทำให้เกิดอุบัติเหตุโดยการชนกับวัตถุที่ไม่รู้จักซึ่งใกล้เคียงกับศูนย์มากที่สุดเท่าที่จะเป็นไปได้เพื่อให้ฉันสามารถเดินทางได้อย่างปลอดภัยมากขึ้น
สหรัฐฯจับภาพสิ่งต่าง ๆ ที่คุณจะต้องระบุโดยใช้การรวมกันของข้อกำหนดด้านการใช้งานและไม่ใช้งานซึ่งรวมถึงความปลอดภัยความปลอดภัยและอื่น ๆ
อย่างไรก็ตามข้อกำหนดอาจมีเพิ่มเติมเกี่ยวกับระบบ เช่น:
ฟังก์ชั่นabc
ในองค์ประกอบA
จะต้องมีค่าเกณฑ์ความอดทนลดลงในอัลกอริทึมการเปรียบเทียบภาพเพื่อตรวจจับวัตถุที่เคลื่อนที่ช้า
สำหรับฉันแล้วนี่จะเป็นงานภายใต้เรื่องราวของผู้ใช้ที่ฉันกล่าวถึงข้างต้นโดยมีชื่อเรื่องดังนี้: ลดความอดทนในการทำงานA.abc
แล้วรวมรายละเอียดอื่น ๆ ที่เกี่ยวข้องไว้ในนั้น
สำหรับระบบจำลองสถานการณ์แบบไหลลื่นคุณอาจมีแถบความคืบหน้าที่ให้ข้อเสนอแนะเกี่ยวกับงานพื้นหลังที่ระบบกำลังทำงานหากสิ่งนี้สมเหตุสมผล (มีวิธีแจ้งผู้ใช้บางสิ่งอยู่เสมอแม้ว่าคุณอาจต้องการหลีกเลี่ยงการเป็นสแปม)
ฉันไม่รู้พอเกี่ยวกับโดเมนเฉพาะที่คุณได้กล่าวถึงเพื่อให้ได้ตัวอย่างที่ดีขึ้นและ / หรือสมจริงมากขึ้น แต่ถ้ามีสิ่งที่ต้องทำที่นี่คือคุณสามารถใช้วิธีการที่แตกต่างกันในการแสดงความคิดเห็นของผู้ใช้ ระบบอาจกำลังทำอยู่นั่นคืออาจมีวิธีทำให้สิ่งที่มองไม่เห็นปรากฏขึ้นอีกเล็กน้อย (แม้ว่าจะเป็นการเขียนบันทึกย่อประจำรุ่น) ซึ่งบันทึกว่าประสิทธิภาพของระบบเร็วขึ้นมากเพียงใดเนื่องจากความพยายามของคุณเป็นต้น)
ความสัมพันธ์ระหว่างเรื่องและงาน
ที่นี่มันยากที่จะเกี่ยวข้องกับงานและเรื่องราวของผู้ใช้
วิธีการของเราคือเพื่อให้เรื่องที่ผู้ใช้มุ่งเน้นไปที่สิ่งที่ร้องขอคือเหตุผลที่มันถูกสร้างขึ้นและสิ่งที่จำเป็นจะต้องเป็นความจริงที่จะต้องพิจารณาสหรัฐฯ "ทำ" ว่าถูกทิ้งมักจะออกของสหรัฐและซ้ายให้กับนักพัฒนา (s)
นักพัฒนาซอฟต์แวร์จะแยกแยะปัญหาที่อธิบายในสหรัฐอเมริกาเป็นชุดของงานที่พวกเขาจะทำงาน
ฉันกำลังพูดถึงสิ่งนี้ในฐานะคนที่ส่วนใหญ่ทำการเขียนโปรแกรมเซิร์ฟเวอร์ด้านหลังซึ่งอาจเป็น "มองไม่เห็น" อย่างที่คุณจะได้รับจากผู้ใช้ปลายทาง
บางครั้งฉันก็ใช้ AJAX เพื่อแสดงภาพเคลื่อนไหว "loading ... " อย่างง่าย ๆ เพื่อให้ผู้ใช้รู้ว่าพวกเขาต้องการรอสักครู่เพื่อให้สิ่งอื่นเสร็จสมบูรณ์โดยไม่รู้สึกผิด บางครั้งมันก็ง่ายอย่างนี้ งานนี้จะเหมาะสม
กระบวนทัศน์ที่แตกต่างกันการฝึกฝนและประสบการณ์
มีเทคนิคในการเอาชนะปัญหานี้หรือเป็นเพียงบางสิ่งที่เราต้องยอมรับและทำให้ดีที่สุด
นอกเหนือจากการยอมรับการเปลี่ยนกระบวนทัศน์การฝึกฝนและประสบการณ์ที่เพิ่มขึ้นอาจไม่มากที่จะพูด ฉันมักจะเห็นคนพยายามใช้ทางลัดผ่านกระบวนการ ฉันต้องการคำแนะนำโดยเฉพาะถ้าคุณเริ่มต้นใช้งาน เมื่อคุณได้รับประสบการณ์มากขึ้นคุณสามารถยืดหยุ่นได้ แต่หลีกเลี่ยงการบ่อนทำลายตัวเอง
เมื่อพิจารณาจากถ้อยคำก่อนหน้าของคุณคุณยังคงคิดถึงเรื่องราวราวกับว่ามันเป็น "ข้อกำหนดการเปลี่ยนชื่อ" ซึ่งฉันคิดว่าเป็นข้อสันนิษฐานที่ผิดพลาด ฉันคิดว่านี่เป็นอาการของปัญหาที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับความแตกต่างพื้นฐานระหว่างแนวทาง Agile และ Non-Agile
ประการที่สองฉันคิดว่าคุณควรยอมรับว่าความคล่องตัวนั้นเปลี่ยนกระบวนทัศน์เมื่อเทียบกับน้ำตกซึ่งหมายความว่าในขณะที่กระบวนการมีเป้าหมายที่คล้ายกัน (คิดว่า SVN กับ Git ถ้าช่วยได้)
พยายามปรับปรุงความเข้าใจปัจจุบันของคุณเกี่ยวกับความแตกต่างทางแนวคิดระหว่างข้อกำหนดและเรื่องราวของผู้ใช้และยอมรับว่าไม่ใช่สิ่งเดียวกัน
เรียนรู้จาก Sprints ของคุณ - ย้อนหลัง
สิ่งที่ฉันไม่สามารถความเครียดได้มากพอคือการหวนกลับมาระหว่าง Scrum Master และ Developers เมื่อสิ้นสุดการวิ่งแต่ละครั้ง นั่นเป็นสถานที่ที่พวกเขาพูดคุยสิ่งที่ "เป็นไปด้วยดี" หรือ "ไม่ดี" ในทางที่เที่ยงตรง / โปร่งใสและสิ่งที่เป็นไปได้การเปลี่ยนแปลงจะถูกนำมาใช้สำหรับการวิ่งต่อไปที่จะอยู่ "ไม่ได้เป็นไปด้วยดี" จุด .
นั่นทำให้เราสามารถปรับตัวและเรียนรู้จากประสบการณ์ของกันและกันและก่อนที่เราจะรู้ตัวเราได้ปรับปรุงอย่างมีนัยสำคัญโดยวัดจากความสอดคล้องทั่วไปของความเร็วทีมของเรา