คู่มือสำหรับผู้เริ่มต้นในการจัดการการพัฒนาซอฟต์แวร์ด้วย Kanban และ Trello
เผยแพร่แล้ว: 2022-03-11ทุกคนเป็นผู้จัดการโครงการ ไม่ว่าคุณจะจัดการการพัฒนาแอปพลิเคชันใหม่และเริ่มต้นธุรกิจใหม่ ทำงานในโครงการระดับองค์กรมูลค่าพันล้านดอลลาร์ใหม่ หรือเพียงแค่พยายามทำให้สวนของคุณมีชีวิตชีวาด้วยการจัดสวนแบบ DIY คุณก็จะเป็นผู้จัดการโครงการเสมอ
ความสำเร็จของโครงการของคุณขึ้นอยู่กับหลายปัจจัย แต่สาเหตุที่พบบ่อยที่สุดประการหนึ่งที่โครงการล้มเหลวคือการขาดการจัดการหรือการจัดการโครงการ ที่ไม่ดี โดยสิ้นเชิง ไม่ว่าทีมของคุณจะเล็กเพียงใด หรือความต้องการของคุณได้รับการบันทึกไว้อย่างชัดเจนเพียงใด หากคุณไม่จัดการทีมของคุณอย่างเหมาะสม โครงการของคุณก็จะล้มเหลวอย่างแน่นอน
การจัดการโครงการแบบ Agile เป็นวิธีที่ได้รับการยอมรับอย่างกว้างขวางในการเข้าถึงโครงการพัฒนาซอฟต์แวร์สมัยใหม่ แต่ Agile หมายถึงอะไรจริงๆ?
หากต้องการเจาะลึกลงไปในหลักการของ Agile ฉันขอแนะนำให้อ่าน Ultimate Guide to Agile Project Management
ในโพสต์นี้ เราจะอธิบายพื้นฐานของการจัดการโครงการแบบ Agile ด้วย Kanban
แม้ว่าคุณจะเป็นผู้จัดการโครงการที่มีประสบการณ์และเข้าใจหลักการที่คล่องตัวทั้งในและนอก คุณควรรีเฟรชหน่วยความจำของคุณและเตือนตัวเองเกี่ยวกับแนวคิดหลัก วัฏจักรนวัตกรรมในการพัฒนาซอฟต์แวร์นั้นเร็วขึ้นอย่างต่อเนื่อง ทำให้การจัดการโครงการมีความซับซ้อนมากขึ้นในการทำซ้ำแต่ละครั้ง การกลับไปสู่หลักการพื้นฐานและการทำให้หลักการสำคัญของ Agile แข็งแกร่งขึ้นเป็นสิ่งสำคัญเสมอ ท้ายที่สุดการทำซ้ำเป็นมารดาของความรู้ทั้งหมด
Kanban เป็นหนึ่งในวิธีที่ง่ายที่สุดในการจัดการโครงการพัฒนาซอฟต์แวร์ Agile คุณสามารถจัดการทีมพัฒนาท้องถิ่นที่ทำงานจากสำนักงานเดียวกันหรือทีมกระจายอย่างง่ายดาย กระจายไปทั่วเขตเวลาต่างๆ
Kanban ไม่ใช่กระบวนการ เป็นวิธีการจัดการกระบวนการใดๆ โดยมีการเปลี่ยนแปลงเล็กน้อยในกิจกรรมการดำเนินงานของทีมที่จัดตั้งขึ้น
ในการใช้หลักการ Kanban กับงานของคุณ คุณต้องใช้กฎง่ายๆ สองข้อ:
- เห็นภาพกระบวนการของคุณ
- จำกัดงานที่กำลังดำเนินการ
เห็นภาพกระบวนการของคุณ
การแสดงข้อมูลเป็นภาพเป็นวิธีที่รวดเร็วและง่ายดายในการถ่ายทอดข้อมูลในลักษณะที่เป็นสากลและเข้าใจง่าย เมื่อดูภาพ สมองของมนุษย์สามารถประมวลผลข้อมูลได้หลายส่วนพร้อมกัน งานวิจัยบางชิ้นกล่าวว่าสิ่งนี้สามารถเร็วกว่าการอ่านข้อความถึง 60,000 เท่า
วิธีที่นิยมที่สุดในการแสดงภาพกระบวนการคือ Kanban Board บอร์ด Kanban คือกระดานที่แบ่งออกเป็นหลายคอลัมน์ในแนวตั้ง โดยแต่ละคอลัมน์จะแสดงสถานะเดียวในกระบวนการของคุณ
มาดูกันว่าบอร์ดพัฒนาซอฟต์แวร์แบบธรรมดาจะหน้าตาเป็นอย่างไร อันดับแรก เราต้องกำหนดสถานะสำหรับคุณลักษณะการพัฒนาของเรา:
- สิ่งที่ต้องทำ - ฟีเจอร์กำลังรอการพัฒนา
- การพัฒนา - คุณลักษณะถูกกำหนดให้กับนักพัฒนาและเขา/เธอกำลังทำงานอยู่
- การประกันคุณภาพ - คุณลักษณะอยู่ระหว่างการตรวจสอบ
- ปรับใช้ - คุณลักษณะได้รับการยอมรับและรวมอยู่ในการเปิดตัวแอปพลิเคชัน
จากสิ่งนี้ บอร์ดของคุณควรมีเลย์เอาต์ดังต่อไปนี้:
การแสดงภาพแต่ละงานนั้นง่ายพอๆ กับการสร้างการ์ดธรรมดา (เหมือนกับ Post-it) ที่แสดงงานที่ต้องทำ คุณสามารถตั้งชื่องาน เพิ่มชื่อนักพัฒนาที่ได้รับมอบหมาย วันที่ครบกำหนด และข้อมูลที่เกี่ยวข้องอื่นๆ ลงในการ์ดใบนี้
เมื่อคุณเพิ่มการ์ดนั้นลงในคอลัมน์บน Kanban Board คุณได้เห็นภาพว่า ตัวอย่างเช่น ผู้พัฒนารายใดรายหนึ่งกำลังทำงานอยู่ในงานเฉพาะที่ครบกำหนดในวันที่กำหนดและกำลังอยู่ในระหว่างการพัฒนา
จำกัดงานที่กำลังดำเนินการ (WIP)
การทำงานหลายอย่างของมนุษย์เป็นความเข้าใจผิด แทนที่จะให้ความสนใจกับสิ่งหนึ่งหรือสองอย่างพร้อมๆ กัน สมองของเรากำลังสลับไปมาอย่างรวดเร็ว
สิ่งนี้มองเห็นได้ชัดเจนในการพัฒนาซอฟต์แวร์มากกว่าที่อื่น นักพัฒนาสามารถทำงานกับโค้ดได้ครั้งละหนึ่งโค้ดเท่านั้น และการเปลี่ยนไปใช้คุณลักษณะอื่นจะทำให้เกิดความล่าช้าและส่งผลต่อสมาธิและประสิทธิภาพ
ไม่ได้หมายความว่าคุณต้องจำกัดจำนวนงานให้เหลือเพียงครั้งละหนึ่งงาน การพัฒนาเป็นงานที่ซับซ้อนและสร้างสรรค์ งานบางอย่างใช้เวลามากกว่าและบางงานใช้เวลาน้อยกว่าในการดำเนินการให้เสร็จ และมีความล่าช้าอยู่เสมอในขณะที่นักพัฒนาซอฟต์แวร์กำลังรอบางสิ่งหรือบางคน สิ่งสำคัญคือการจำกัดงานที่ได้รับมอบหมายให้เป็นจำนวนที่เหมาะสมซึ่งจะไม่ก่อให้เกิดความโกลาหล (โดยปกติจะเป็นงานสามถึงห้างานในแต่ละครั้ง)
สมมติว่าทีมพัฒนาของคุณประกอบด้วยนักพัฒนาสองคนและวิศวกร QA บอร์ดของคุณอาจมีข้อจำกัด WIP ดังต่อไปนี้:
- สิ่งที่ต้องทำ - ไม่ จำกัด
- การพัฒนา - ขีด จำกัด หกใบ (นักพัฒนาสองคนแต่ละคน จำกัด สูงสุดสามงาน)
- การประกันคุณภาพ - ขีด จำกัด สามใบ (วิศวกร QA 1 ใบ จำกัด สูงสุดสามใบ)
- ปรับใช้ - ไม่ จำกัด
เป็นงานของคุณในฐานะผู้จัดการโครงการเพื่อให้แน่ใจว่ารายการสิ่งที่ต้องทำได้รับการจัดลำดับความสำคัญอย่างเหมาะสมและมอบหมายงานให้กับนักพัฒนาไม่ช้ากว่าที่จำเป็น
คณะกรรมการ Kanban ที่ได้รับการจัดการอย่างถูกต้องจะช่วยให้คุณเห็นภาพสถานะโครงการของคุณได้อย่างชัดเจนในพริบตา คุณจะเห็นว่านักพัฒนาของคุณมีงานเพียงพอ คุณได้เตรียมงานใหม่ที่พวกเขาสามารถเข้าควบคุมได้เมื่องานเสร็จ และวิศวกร QA ของคุณกำลังรองานใหม่เพื่อตรวจสอบ
ใช้ Trello เพื่อจัดการบอร์ด Kanban ของคุณ
Trello เป็นแอปพลิเคชันการจัดการโครงการ Kanban บนเว็บ ช่วยให้ทำงานร่วมกันแบบเรียลไทม์ได้ง่ายระหว่างสมาชิกในทีม แม้กระทั่งทีมและโครงการต่างๆ
ในการสร้างบอร์ดใน Trello ให้คลิกรายการเมนู “สร้างบอร์ดใหม่ …” และตั้งชื่อบอร์ดของคุณ
คุณจะเริ่มต้นด้วยกระดานเปล่า ใช้กล่อง “เพิ่มรายการ …” เพื่อสร้างคอลัมน์สำหรับการ์ดคัมบังของคุณ
การคลิก “เพิ่มการ์ด…” ที่ด้านล่างของรายการใดๆ จะช่วยให้คุณสร้างงานได้อย่างง่ายดาย การ์ดแต่ละใบที่คุณสร้างควรแสดงถึงงานที่สมาชิกในทีมจะดำเนินการ
การ์ดใน Trello สามารถปรับแต่งได้หลายวิธี:
- มอบหมายสมาชิกในทีมที่รับผิดชอบในการดำเนินงาน
- รหัสสีขึ้นอยู่กับการจัดกลุ่มเฉพาะที่คุณต้องการเพิ่ม
- กำหนดวันครบกำหนด
- เพิ่มไฟล์แนบ
- เพิ่มฟิลด์ที่กำหนดเอง เช่น รายการตรวจสอบ ซึ่งคุณสามารถติดตามความคืบหน้าขององค์ประกอบขนาดเล็กที่ประกอบด้วยงาน
- สมาชิกในทีมสามารถแสดงความคิดเห็นบนการ์ด และทุกคนจะได้รับแจ้งการเปลี่ยนแปลงใดๆ ที่เกิดขึ้น

การสร้างภาพเป็นทุกสิ่งใน Kanban ดังนั้นนี่คือลักษณะของการ์ดบนกระดาน:
เพียงแค่ดูที่การ์ดโดยไม่เปิดมุมมองโดยละเอียด คุณจะเห็นว่า:
- งานในการตั้งค่า GitHub Code Repository กำลังรอดำเนินการในรายการ To-Do
- งานมีกำหนดส่งภายในวันที่ 27 มกราคม
- งานมีคำอธิบาย
- มีหนึ่งความคิดเห็นเกี่ยวกับงาน
- มีรายการตรวจสอบสองรายการ และไม่มีรายการใดที่เสร็จสมบูรณ์ในขณะนี้
- งานถูกกำหนดให้กับผู้ใช้ DS ผู้ที่จะรับงานต่อไป
- งานอยู่ในกลุ่มของการ์ดสีเขียว ซึ่งหมายความว่าจำเป็นต้องมีก่อนเริ่มโครงการ
ประมาณการเวลาและความซับซ้อนของงานพัฒนา
การวางแผนและการจัดการโครงการเป็นไปไม่ได้หากปราศจากความเข้าใจถึงความพยายามและเวลาที่จำเป็นในการทำงานให้เสร็จสิ้น อย่างไรก็ตาม สิ่งที่ยากที่สุดอย่างหนึ่งที่ต้องทำในการพัฒนาซอฟต์แวร์คือการพิจารณาว่าจะใช้เวลานานแค่ไหนในการส่งมอบผลิตภัณฑ์หรือคุณลักษณะซอฟต์แวร์ใหม่
Scrum หนึ่งในหลักการของ Agile ที่ได้รับความนิยมมากที่สุด อาศัยการประมาณค่าอย่างมาก ไม่ว่าจะอิงตามเวลาหรือ "จุดที่ซับซ้อน"
ทีมงานควรใช้เวลาอย่างมากในการกำหนดขอบเขตงาน
นี่เป็นเพราะว่า Scrum นั้นอิงตามช่วงเวลาที่กำหนดไว้เมื่อคาดว่างานบางกลุ่มจะเสร็จสิ้น ในการวางแผนการจัดส่ง คุณต้องมีความเข้าใจอย่างถ่องแท้เกี่ยวกับงานทั้งหมดที่วางแผนไว้สำหรับกล่องเวลานั้น
Kanban ไม่ได้พึ่งพาการจัดส่งตามเวลาที่กำหนด และคุณสามารถวางแผนการจัดส่งรายวันได้หากต้องการ อาศัยการเพิ่มประสิทธิภาพโฟลว์ ซึ่งหมายความว่าโฟกัสของทีมคือการทำให้เสร็จและล้างคอลัมน์ WIP โดยเร็วที่สุด
ทีมงานไม่ได้ใช้เวลาประเมินงานล่วงหน้ามากนัก นักพัฒนาจะรับรายการถัดไปจากสิ่งที่ต้องทำ ให้เสร็จโดยเร็วที่สุด และรับงานอื่น
นี่ไม่ได้หมายความว่าทีมไม่ควรประเมินปริมาณงานของพวกเขา
คุณสามารถใช้การโทรรายสัปดาห์หรือรายวันเพื่ออัปเดตและยืนยันวันที่ครบกำหนดได้
อย่างไรก็ตาม สำหรับทีมขนาดเล็ก สิ่งสำคัญกว่าคือต้องมั่นใจว่านักพัฒนากำลังทำงานในภารกิจที่มีลำดับความสำคัญสูงสุดในช่วงเวลาใดก็ตาม และไม่มีคอขวด บังคับให้นักพัฒนาต้องหยุดงานชั่วคราว
ในที่สุด โครงการของคุณจะเติบโตและคุณจะต้องเริ่มประมาณปริมาณงานพัฒนาอย่างละเอียดมากขึ้น เมื่อคุณมาถึงสถานการณ์นี้ ให้ใช้เวลาอ่านคู่มือของเราสำหรับการประมาณต้นทุนซอฟต์แวร์ในการจัดการโครงการแบบ Agile
แนวทางการจัดการที่ต้องมี
จนถึงตอนนี้ คุณได้เรียนรู้เกี่ยวกับความสำคัญของการแสดงภาพกระบวนการของคุณและจำกัด WIP และวิธีใช้ Trello เพื่อจัดการโครงการของคุณ
โครงการซอฟต์แวร์ไม่สามารถจัดการได้ด้วยการ์ดและคอลัมน์เท่านั้น ดังนั้น การนำแนวทางปฏิบัติที่ดีที่สุดของ Agile มาใช้จึงเป็นสิ่งสำคัญเช่นกัน:
จัดประชุมทีมเป็นประจำ
ทำอย่างน้อยทุกสัปดาห์เพื่อตรวจสอบสิ่งที่ทำเสร็จแล้ว ปรับแต่งและจัดลำดับความสำคัญของงานในมือ (รายการสิ่งที่ต้องทำ) หากจำเป็น วิธีนี้จะทำให้ทั้งทีมได้รับการอัปเดตพร้อมกัน และสามารถแชร์ไอเดียได้ ในการประชุมเหล่านี้ จำเป็นต้องมีผู้มีส่วนได้ส่วนเสียในโครงการ (ลูกค้า, CTO ของบริษัท หรือใครก็ตามจากทีมผลิตภัณฑ์ที่สามารถตัดสินใจและตอบคำถาม) เพื่อให้ข้อเสนอแนะที่ไม่ใช่ด้านเทคนิคในท้ายที่สุดรับรองการสื่อสารอย่างต่อเนื่องกับสมาชิกในทีมแต่ละคน
สิ่งนี้จะทำให้งานประจำวันของทุกคนง่ายขึ้นมาก ให้การประชุมหรือการซิงค์เหล่านี้สั้นและเรียบง่าย เพียงแค่อัปเดตอย่างรวดเร็วในโปรแกรมแชทที่คุณชื่นชอบ มีประโยชน์ในการเช็คอินทุกวัน ซึ่งอาจใช้เวลาประมาณ 15 นาทีในแต่ละวันที่คุณมีกับทีมของคุณ ในการประชุมนี้ สมาชิกในทีมทุกคนพูดไม่กี่วินาทีโดยระบุว่า:
- สิ่งที่พวกเขาทำงานเมื่อวานนี้
- สิ่งที่พวกเขาวางแผนที่จะทำงานในวันนี้
- พวกเขากำลังเผชิญความท้าทายหรือคอขวดอะไร
จดบันทึกในระหว่างการโทรและให้ความสนใจเพื่อค้นหาปัญหาที่อาจเกิดขึ้น (ตัวบล็อก โฟกัสผิดที่งาน ความท้าทายทางเทคนิคที่ไม่คาดคิด) และทำงานกับทีม
Bootstrap โครงการพัฒนาซอฟต์แวร์ของคุณ
แม้ว่าโครงการพัฒนาซอฟต์แวร์ทุกโครงการจะแตกต่างกัน แต่ก็มีงานบางอย่างที่คุณจะพบในเกือบทั้งหมด นี่คืองานบางส่วนที่คุณควรวางแผนเมื่อเริ่มโครงการพัฒนาซอฟต์แวร์:
ตั้งค่าการกำหนดเวอร์ชันของโค้ดและที่เก็บ
การติดตามการเปลี่ยนแปลงและการตรวจสอบโค้ดมีความสำคัญอย่างยิ่ง โดยเฉพาะอย่างยิ่งเมื่อทำงานร่วมกันในโครงการที่หลายคนจะอัปเดตโค้ดเดียวกัน
หนึ่งในบริการยอดนิยมสำหรับการกำหนดเวอร์ชันโค้ดคือ GitHub GitHub คือ Git บนเว็บหรือที่เก็บการควบคุมเวอร์ชันที่มีฟังก์ชันการควบคุมเวอร์ชันแบบกระจายและการจัดการซอร์สโค้ด (SCM) ของ Git
มีการควบคุมการเข้าถึงและคุณลักษณะการทำงานร่วมกันหลายอย่าง เช่น การติดตามจุดบกพร่อง คำขอคุณลักษณะ การจัดการงาน และ Wiki สำหรับทุกโครงการกำหนดนโยบายการสำรองฐานข้อมูล
การใช้บริการเช่น GitHub จะทำให้มั่นใจได้ว่ารหัสของคุณได้รับการสำรองข้อมูลเป็นประจำ
ฐานข้อมูลมักจะไม่เป็นส่วนหนึ่งของระบบการกำหนดเวอร์ชันของคุณ และคุณควรตั้งค่าการสำรองฐานข้อมูลเป็นประจำเช่นกัน
กระบวนการพัฒนามักเกิดข้อผิดพลาด และทำผิดพลาดได้ง่ายและอัปเดตข้อมูลที่ไม่ถูกต้องในระหว่างการพัฒนา การสำรองข้อมูลจะช่วยคุณประหยัดปัญหาหากเกิดปัญหาดังกล่าวตั้งค่าเครื่องมือการทำงานร่วมกันและการแชร์ไฟล์
เอกสารโครงการ ข้อมูลจำเพาะด้านฟังก์ชัน ไฟล์การออกแบบ และเอกสารและไฟล์อื่นๆ ที่ใช้ในระหว่างการพัฒนาโครงการจะได้รับการอัปเดตอย่างต่อเนื่อง และควรแจกจ่ายให้กับทีมของคุณ
คุณสามารถใช้บริการต่างๆ มากมายเพื่อแชร์ไฟล์เหล่านี้ Google ให้วิธีแก้ปัญหาที่ง่ายและคุ้มค่าสำหรับปัญหานี้ ใช้ Google ไดรฟ์, Google เอกสาร, Google ชีต และแอปอื่นๆ ของ Google เพื่อแชร์และทำงานร่วมกันในไฟล์ตั้งค่าเซิร์ฟเวอร์การพัฒนาและทดสอบแยกต่างหาก
กระบวนการพัฒนาต้องดำเนินต่อไปตลอดเวลา
นักพัฒนาไม่ควรรอผลการทดสอบแอปพลิเคชัน และพวกเขาควรทำงานที่ได้รับมอบหมายต่อไปในขณะที่การประกันคุณภาพตรวจสอบฟังก์ชันการทำงานที่เสร็จสมบูรณ์
ในขณะเดียวกัน ลูกค้าควรสามารถตรวจสอบสถานะปัจจุบันของแอปพลิเคชันได้ตลอดเวลาโดยไม่ต้องรอทีมพัฒนา การมีเซิร์ฟเวอร์ทดสอบเฉพาะที่อัปเดตเป็นประจำจะช่วยขจัดปัญหาคอขวดในกระบวนการนี้ และรับประกันว่าทีมของคุณจะทำงานได้อย่างต่อเนื่องกำหนดเวลาที่แน่นอนสำหรับการโทรแบบทีมรายสัปดาห์และกำหนดเวลาที่แน่นอนสำหรับการโทรหรือแชทของทีมรายวัน
ให้สมาชิกในทีมของคุณกำหนดเวลาในปฏิทินสำหรับการโทรและการประชุม ซึ่งจะทำให้ทีมของคุณมีกำหนดการที่สม่ำเสมอโดยไม่มีการหยุดชะงักของงาน
ซื้อกลับบ้าน
การจัดการโครงการเป็นกิจกรรมที่ซับซ้อนและมักมีความเครียดสูง การเพิ่มโครงสร้างและทำให้สถานะโครงการมองเห็นได้และแม่นยำตลอดเวลาช่วยบรรเทาความเครียดนี้ได้มาก การใช้วิธีการ Kanban และหลักการ Agile ร่วมกับเครื่องมือที่เหมาะสมจะช่วยให้คุณประหยัดเวลาได้มาก
จากที่กล่าวมา ไม่มีเครื่องมือหรือวิธีการใดที่จะชดเชยเวลาที่คุณในฐานะผู้จัดการโครงการต้องอุทิศให้กับการจัดการโครงการ
และเพียงเพราะโครงการมีขนาดเล็ก ไม่ได้หมายความว่าต้องใช้เวลาของคุณน้อยลง ความคิดนี้เป็นสูตรที่ยอดเยี่ยมสำหรับอาการปวดหัวครั้งใหญ่
รายการตรวจสอบง่ายๆ ที่จะช่วยคุณตรวจสอบว่าโครงการของคุณได้รับการจัดการอย่างเหมาะสมหรือไม่:
- กระบวนการของคุณได้รับการมองเห็นอย่างถูกต้องหรือไม่?
- WIP สำหรับสมาชิกในทีมแต่ละคนถูกจำกัดและย่อให้เล็กสุดหรือไม่?
- ทีมของคุณมีกำหนดการประชุมอย่างสม่ำเสมอ ไม่ว่าจะเป็นรายสัปดาห์หรือรายวัน?
- บอร์ด Kanban ของคุณอัพเดทเป็นประจำหรือไม่?
- คุณมีที่เก็บรหัสในสถานที่หรือไม่?
- คุณได้กำหนดเวลาสำรองฐานข้อมูลหรือไม่?
- คุณได้ตั้งค่าเครื่องมือสื่อสารและการทำงานร่วมกันของทีมแล้วหรือยัง?
- สภาพแวดล้อมการพัฒนาของคุณแยกจากการทดสอบ การยอมรับ และการผลิตหรือไม่
โปรดทราบว่ารายการนี้ยังห่างไกลจากความชัดเจนและเสร็จสิ้น มันเป็นเพียงจุดเริ่มต้น
โปรดแสดงความคิดเห็น แบ่งปันเคล็ดลับและแนวทางปฏิบัติกับผู้จัดการโครงการที่เพิ่งเริ่มต้นเส้นทางที่ไม่มีวันสิ้นสุดในการเสริมศักยภาพทีมพัฒนาซอฟต์แวร์
