Give & Take: Agile Software Development Workshop with IoT #2 Day 1
“วิกฤตการณ์โปรแกรมเมอร์ไทย” เป็นเวลาเกือบ 5 ปีแล้วที่ หัวข้อกระทู้นี้ได้ถูกโพสต์ลงบน Pantip และในปัจจุบันสิ่งที่เขียนไว้ในวันนั้น ยังคงตามหลอกหลอนบริษัททั้งหลายที่รับเด็กจบใหม่เข้าไปทำงาน ซึ่งแน่นอนปัญหาที่เกิดขึ้น เป็นปัญหาที่ภาคการศึกษาผลิตบัณฑิตออกมา แต่ไม่เป็นที่ต้องการของตลาด หรือสิ่งที่สอนไปนั้นเกิดจากหลักสูตรที่ต้องใช้เวลาถึง 4 ปีจึงจะสามารถปรับหลักสูตรได้ ซึ่งสิ่งที่น่ากลัวกว่าคือ สำหรับวงการไอทีนั้น การเปลี่ยนแปลงอาจเกิดขึ้นภายในระยะเวลาไม่ถึง 1–2 ปี นั่นเป็นโจทย์ที่ภาคการศึกษากับภาคธุรกิจ ต้องช่วยเหลือกันเพื่อให้คนรุ่นใหม่ที่มีความสามารถในยุคปัจจุบัน
https://pantip.com/topic/30186572
โดยทาง สยามชำนาญกิจ อยากเข้ามาช่วยแก้ปัญหาดังกล่าว จึงจัดกิจกรรม Give & Take เพื่อแชร์ความรู้และประสบการณ์ (Give) ให้กับน้องๆ และในขณะเดียวกัน ก็รับพลังและความคิดสร้างสรรค์ (Take) จากคนรุ่นใหม่ ทำให้ได้ประโยชน์กันทั้ง 2 ฝ่าย
โดย Give & Take ครั้งนี้จัดขึ้นที่ มหาวิทยาลัยพระจอมเกล้า พระนครเหนือ (KMUTNB) โดย Concept ในครั้งนี้จะเป็น Workshop 3 วันที่มีการผสมผสานระหว่าง Agile Software Development กับ IoT เอาไว้ด้วยกัน โดยมี พี่หนุ่ม เป็นหัวเรือหลัก
Agile is obsolete
อย่างที่เราพอทราบกันคร่าวๆ Agile Software Development คือ การทำให้การพัฒนาซอฟต์แวร์นั้นจากที่ใช้เวลานานแรมเดือน ถึงจะส่งมอบของให้กับลูกค้าดู ซึ่งมีโอกาสที่จะไม่ตรงกับความต้องการของลูกค้า สามารถลดเวลาให้เหลือเพียง 1–2 สัปดาห์ ก็สามารถส่งมอบให้ลูกค้าดู และปรับปรุงเปลี่ยนแปลงได้ทัน
หลายคนอาจจะมองว่า Agile นี่ ดีจริงๆ สำหรับเมื่อ 1–2 ปีที่แล้วคงใช่ แต่ … ปัจจุบันโลกได้เปลี่ยนไปแล้ว 1–2 สัปดาห์นั้นช้าเกินไป
เคยเห็นหรือไม่
Facebook สามารถขึ้น Security Check ได้ภายใน 3 ชม. หลังเกิดเหตุการณ์ใน Paris
Netflix สามารถ Deploy ขึ้น Production ได้นับ 10 ครั้งต่อวัน!!
หรือล่าสุดที่ไทย แบงค์ต่างๆ สามารถลดค่าธรรมเนียมเหลือ 0 ได้ในเพียงไม่กี่วัน หลังมีแบงค์คู่แข่งประกาศลดค่าธรรมเนียม
และอ้างอิงจากเอกสาร report ของ puppet ได้แสดงให้เห็นว่า สำหรับปัจจุบัน มาตราฐานการ deploy ขึ้น Production วันละ 10 ครั้งเป็นเรื่องปกติมาก
https://puppet.com/resources/whitepaper/state-of-devops-report
นั่นจึงเป็นเหตุผลที่บอกว่า Agile is obsolete เพราะในปัจจุบันการส่งมอบของต้องสามารถทำได้อย่างรวดเร็วแต่ในขณะเดียวกันต้องไม่ทำให้สิ่งที่มีพังตามไปด้วย
Moving fast and not breaking things
SDLC is shorter but Automation is bigger
เมื่อไม่กี่ปีก่อน Agile ยังเป็นคำที่ทุกบริษัทพูดถึงกันอยู่เลย แต่พอปัจจุบัน เทรนด์ของโลกเปลี่ยนไป ทางด้าน ML และ AI มากขึ้น ทำให้เหล่า Software Developer ต้องคิดกันว่า จะทำยังไงให้ รอบของการพัฒนานั้นสั้นลง
แต่มี Automation เข้ามาช่วยในการทำงานมากขึ้น
นั่นเป็นสิ่งที่ทำให้หลายบริษัทควรให้ความสำคัญคน และสร้างบุคคลากรทางด้าน IT มากขึ้น
และจะต้องส่งมอบของได้ ตามกรอบเวลาที่ต้องเร็วขึ้นเรื่อยๆ จนสามารถ deploy ได้ กว่า 10 ครั้งในแต่ละวัน
แต่สำหรับนักศึกษายังนึกภาพไม่ออกหรอกเนอะ ฉะนั้น เรามาเริ่มกันที่เข้าใจสิ่งที่เรียกว่า Agile ก่อนดีกว่า
Agile Software Development
Agile คืออะไร?
เป็นคำถามที่มือใหม่มักถามกัน แล้วก็จะมีคนถามกลับว่า
แล้วสำหรับคุณ มันคืออะไร?
ตอนแรกที่ผมได้ยินครั้งแรกก็ไม่เข้าใจกับคำถามที่เค้าถามกลับ ได้แต่คิดว่า อาว เฮ้ย เราไม่รู้เลยมาถาม แต่กลับได้คำถามกลับอีก…
แต่พอเรียนรู้ไปสักพักก็ถึงบางอ้อ
เพราะจริงๆ แล้ว Agile นั้นเหมือนปรัชญา
ซึ่ง Agile สำหรับพี่หนุ่ม จะเน้นในคำว่า Agility
Agility is the power of moving quickly and easily
สิ่งสำคัญคือ หากคุณจะเคลื่อนที่ไปข้างหน้าอย่างรวดเร็ว จะรู้ได้อย่างไรว่าจะไม่ทิ้งผลกระทบอะไรไว้เบื้องหลัง
Workshop 1: เขียนชื่อนั้นยากตรงไหน !?
กิจกรรมง่ายๆ ทุกคนมีกระดาษอยู่ 1 แผ่น มี ปากกาอยู่ 1 ด้าม
- ให้ทุกคนลองเขียนชื่อนามสกุลตัวเองด้วยมือที่ถนัด — เปรียบเสมือนการที่ทำสิ่งที่ถนัด และคุ้นเคยด้วยตัวคนเดียว
- ให้ทุกคนลองเขียนชื่อนามสกุลตัวเองด้วยมือที่ไม่ถนัด — เปรียบเสมือนการที่ทำสิ่งที่ไม่ถนัด เกิดการเปลี่ยนแปลงของ Process ทำให้การทำงานยากขึ้น แต่หากกระทำบ่อยๆ อาจเกิดความชำนาญได้
- ให้ตัวแทนกลุ่ม 1 คน เขียนชื่อนามสกุลจริงพี่หนุ่ม — เปรียบเสมือนความต้องการใหม่
- ให้ทุกคนจับปากกาด้วยกันแล้วเขียนชื่อนามสกุลจริงพี่หนุ่มอีกครั้ง ด้วยมือข้างที่ถนัด — เปรียบเสมือนการทำงานเป็นทีมพัฒนาซอฟต์แวร์
- เปลี่ยนให้ทุกคนจับด้วยมือที่ไม่ถนัด — เปรียบเสมือนการเปลี่ยน process เป็น agile แต่ยังให้ scope เท่าเดิม ซึ่งแน่นอนว่าใช้เวลามากขึ้น
- ให้เขียนคำว่า ธาน ให้ Quality เท่ากับมือขวา ให้ลองหาวิธีว่าจะทำยังไงให้สำเร็จ — เปรียบเสมือนการลด scope และให้อำนาจทีมในการตัดสินใจ
- ให้ทำเหมือนข้อ 6 อีกครั้งแต่กำหนดให้เวลาเพียง 1 นาที — เปรียบเสมือนการ fixed time ให้สั้นลง เพื่อให้ส่งมอบของเป็นส่วนๆ ได้
จากนั้นพี่หนุ่มก็อธิบายหลักการของ Agile Manifesto, Heart of Agile และ Journey of Mastery ซึ่งสามารถไปอ่านได้ในบทความ ถ้าช้าไม่เป็นก็เร็วไม่ได้
Workshop 2: KMUTNB-wallet
KMUTNB-wallet เป็นแอพพลิเคชั่นที่ทางคณาจารย์ของภาควิชา อยากเห็นไอเดียของเด็กๆ จึงได้ให้โจทย์นี้ เพื่อให้เด็กลองเก็บ Requirement โดย พี่หนุ่มหยิบ Fishbone diagram มาให้เด็กๆ ได้ลองทำ Refinement กัน
โดยในแผนภาพของ fishbone ประกอบไปด้วย
- วาดหัวปลาเขียนด้วยหัวข้อ
- ที่ปลายสุดของแต่ละก้างคือ Feature ที่คิดว่าจะใส่ลงไปใน Application
- แต่ละก้างจะประกอบไปด้วย Use Case ต่างๆ ย่อยลงมา
ซึ่งผลสุดท้ายของการทำ Refinement เราจะได้ Product Backlog ออกมา
เมื่อเราได้ Product Backlog แล้วขั้นต่อไปเราจะทำการหยิบ Feature มา 1 อย่าง เพื่อทำ Flow การทำงานของ Feature นั้นด้วย A-dapt Blueprint
โดยเริ่มจาก Layer Customer Visible ก่อนให้เห็น Flow การทำงานทั้งหมดแบบเป็น Process จากนั้นจึงนำส่วนที่เป็น Logic ต่างๆ ย้ายไปที่ Customer Invisible โดยมีขั้นตอนดังนี้
- เลือก Feature ที่ต้องการนำมาแปะลงใน Customer Visible
- เลือก Use Case ที่สนใจในการสร้าง Flow
- เลือก Actor ที่เราสนใจ
- เริ่มวางโครงสร้างของ Flow ให้สมบูรณ์
- ใส่เงื่อนไขลงไปใน Flow เพื่อให้เห็น Business Logic ต่างๆ ใน Use Case นั้นๆ
- Define ข้อมูลจำลองเพื่อใช้ในการทดสอบและใช้เพื่อทำ UAT (User Acceptance Test)
- ย้าย Business Logic ลงมาใน Customer invisible
เมื่อเด็กๆ สนุกสนานกับการเขียน Blueprint ของ e-wallet ไปสักพัก ก็ถึงคราวต้องบอกลา เพราะโจทย์ในครั้งนี้ไม่ใช่ e-wallet
แล้วโจทย์นั้นจะเป็นอะไร (ถ้าอยากรู้ ไม่รู้จริงๆ ขึ้นไปดู Title นะ) ติดตามชมตอนต่อไป