ได้อะไรกลับมาบ้างจากงาน Agile Thailand 2016

งานครั้งนี้เป็นอะไรที่ใหม่และแหวกแนวกับผมมาก เค้าเรียกกันว่า open space เราไม่รู้ล่วงหน้าเลยว่าจะได้รับฟังอะไรบ้างจากใคร จะมารู้จริงๆก็ในงานตอนเช้าสุด คนที่อยากแชร์เรื่องอะไรก็จะเอา topic มาแปะบนบอร์ด พร้อมกับเกริ่นหัวข้อนิดหน่อยก่อน ก่อนแยกย้ายกันไปตามเรื่องที่ต่างคนต่างสนใจ ทุก session มีเวลา 45 นาที แบ่งออกเป็น 8 ห้อง “เริ่มเมื่อพร้อมและจบเมื่ออยากจบ” “สิ่งใดเกิดขึ้นแล้วสิ่งนั้นดีที่สุด” ไม่มีอะไรตายตัวเลย ยืดหยุ่นตาม agile style สุดๆ เอาเป็นว่าครั้งหน้าอาจจะจัดอีกประมาณ ตุลา 2559 ใครสนใจลองไปหาในกลุ่ม agile66 ใน facebook ครับ

เข้าเรื่องกันเลย! ในงานมีเนื้อหาอะไรที่ผมพอจับประเด็นได้บ้าง? เอาแบบมือใหม่ๆนะครับ ผมพึ่งเคยไปครั้งแรก บางเรื่องลึกไปเอามาเขียนแล้วผมอาจจะเขียนไม่ถูกต้องบ้าง ต้องขออภัยและ ให้ feedback กันมาได้ถ้าผิดถูกตรงไหนยินดีที่จะแก้ไขครับ

หัวข้อที่ผมเข้าไปฟังก็มี…

Agile Manifesto by คุณกรณ์

  • หัวข้อนี้อธิบายถึงที่มาที่ไปว่า agile เกิดมาได้อย่างไร? ก็เกิดมาจากที่ว่าการจัดการ project แบบ waterfall มันทำให้ product ที่ออกไปมีความเสี่ยงที่จะให้ผลลัพธ์ที่ไม่ตรงตามความต้องการจริงๆ แล้วทำอย่างไรถึงจะ deliver งานออกไปที่ละ lot ได้เพื่อที่จะได้รับ feedback กลับมาแก้ไขให้ถูกต้องได้เร็วที่สุด ซึ่งถ้ากลับไปใช้ waterfall ผู้ใช้งานจะไม่มีทางรู้ได้เลยว่าของที่กำลังพัฒนากันอยู่นั้นตรงกับความต้องการจริงๆหรือไม่ จะรู้อีกทีก็ตอน project เสร็จซึ่งอันตรายมาก
  • เมื่อเกิดปัญหานี้ขึ้น จึงมีกลุ่มคนที่ร่วมกันคนหาแนวทางใหม่ที่ต่างจากเดิม จึงเกิด website agilemanifesto.org ขึ้นมา
  • agile ให้ความสำคัญกับปัจเจกบุคคล(individual) คนทุกคนไม่เหมือนกัน เพราะฉะนั้นการทำงานกับคนแต่ละคน “ไม่มีอะไรทดแทนได้” ดังนั้นการทำ document แบบ generalize ยาวๆ ไม่ได้ช่วยให้การสื่อสารดีขึ้น เพราะระดับความเข้าใจของแต่ละคนต่างกัน
  • การที่สมองรับรู้และถ่ายทอดออกมาเป็นตัวหนังสือสามารถถ่ายทอดข้อมูลออกมาได้แค่ 7% เพราะฉะนั้นการเอาแต่เขียน document จึงไม่ใช่สิ่งที่นำเอา requirement ออกมาถ่ายทอดได้ทั้งหมด
  • บริษัทที่มี resource pool คอยย้ายคนในทีมไปทำตรงนั้นทีละ 4 เดือน แล้วก็ย้ายไปเรื่อยๆ ทำให้ประสิทธิภาพการพัฒนาโปรเจคลดลง เพราะกว่าที่คนใหม่จะเข้าใจงานเดิมแบบไร้รอยต่อเป็นไปได้ยากมาก ทุกอย่างมันใช้เวลา มันมี learning curve แม้แต่จะทำ document ให้ละเอียดขนาดไหนก็ตามก็ทำงานแบบไร้รอยต่อ(seamless)ไม่ได้
  • ป้องกันคนไม่ให้ลาออก จ่ายน้อยกว่าปล่อยให้คนลาออก
  • ความสำเร็จของ software ไม่ได้วัดกันที่ document การที่บอกว่าเขียน requirement spec เสร็จแล้วถือว่าโปรเจคคืบหน้าไป 10%–20% ไม่มีประโยชน์
  • สิ่งที่เป็นความคืบหน้า software จริงๆก็คือ software ที่ทำออกมาได้ถูก validate ด้วยคนใช้งานแล้วว่ามันใช้งานได้จริง
  • agile ให้ความสำคัญกับการเปลี่ยนแปลงมากกว่าทำตามแผน คุณกรณ์ยกตัวอย่างว่า วันนี้วางแผนไว้ว่าจะซักผ้า แต่ฝนดันตก ผลลัพธ์ก็คือไม่ได้ซัก ถามว่า เราผิดหรือแผนผิด?…. ตอบ แผนผิด … แล้ว software วางไว้ 4 เดือนจะเสร็จ ผ่านไปไม่เสร็จใครผิด? …. เราผิด (อ้าว…)
  • agile บอกว่าไม่มีใครรู้หรอกว่าอนาคตจะเป็นยังไงต่อให้คุณเขียนแผนมาดีก็ตาม ทางที่ดีก็คือปรับแผนทุก 2 สัปดาห์
  • ถ้าเรา estimate เวลาได้ตรงตามความเป็นจริง เราก็ไม่ใช่โปรแกรมเมอร์ แต่เราเป็น estimator
  • ค่าใช้จ่ายในการ estimate แพงกว่าการลงมือทำจริง
  • ส่วนใหญ่ฝ่าย management ชอบยึดแผนแรกซึ่งในโลกความเป็นจริงการวางแผนทำไว้เพื่อประเมิน แต่ในโลก software การวางแผนมีไว้เพื่อเชือดคน ทั้งๆที่ในตอนแรกฝั่ง business ก็ไม่รู้ว่าต้องการอะไรแบบชัดเจน
  • การทำ software แบบตั้ง budget ทำให้ได้ software ที่ไม่มีประสิทธิภาพเพราะจริงๆแล้ว software เป็นอะไรที่ dynamic ทำแล้วก็ปรับแก้ให้ดีขึ้นเรื่อยๆ ไม่ต่างจากการทำงานตำแหน่งอื่นๆ แต่ถ้าจำกัดกันด้วยวงเงินเมื่อเงินหมดก็ต้องรีบปิดงาน ก็(อาจจะ)ไม่ได้สิ่งที่ตอบสนองความต้องการได้จริง
  • (ผมสรุปเอง)สุดท้ายทางออกก็คือแบ่งงานทำทีละน้อยแล้วรีบ deliver งานออกมาเพื่อ validate ความต้องการกับคนใช้งานจริงๆว่ามัน work ไหม แล้วเอากลับมาแก้ไขทำให้ software มีประสิทธิภาพที่สุด อย่าเสียเวลาทำเอกสารแบบเอาเป็นเอาตาย

ถ้าช้าไม่เป็นก็เร็วไม่ได้ by คุณหนุ่ม@สยามชำนาญกิจ

  • ความเชี่ยวชาญเกิดจากการทำอะไรซ้ำๆ ฝึกฝนต่อเนื่อง การฟังอะไรแล้วกลับไปทำเลยคิดว่าจะเทพขึ้นไหม ตอบว่าไม่.. ทุกอย่างก็ต้องกลับไปฝึก เริ่มต้นอาจจะช้าลงด้วยซ้ำ แต่ทำไปเรื่อยๆจะทำให้ไวขึ้นเอง
  • agility = skill + discipline
  • agile ทำให้ไว แต่ถ้าไม่เคยทำ agile เริ่มแรกถ้าเอาไปใช้ มันต้องช้ากว่าเดิมแน่นอนกว่าจะเข้าใจ และเอามาทำได้จริงมันต้องใช้เวลา
  • ความเร็วในทีม = คนที่ช้าที่สุด
  • พื้นฐานสำคัญมากนักกีฬาทุกคนฝึกซ้อมพื้นฐานตลอดกว่าจะได้ลงสนามฝึกรวม
  • tester สมัยนี้ต้องเอา automate มาใช้ได้แล้ว
  • เท่าที่พูดมา ทุกอย่างช้าลงหมดเพราะต้องกลับไปที่พื้นฐานของแต่ละคนในทีม ซึ่งเป็นสิ่งที่ทุกคนละเลย ทุกวันเข้าไปทำงานต่างฝ่ายก็ทำงานของตัวเอง ไม่มีใครมีเวลากลับไปทำเรื่องพื้นฐาน คำถามคือฝั่ง management รอได้ไหม?
  • คนส่วนใหญ่กระโดดเข้ามาใช้ framework โดยไม่เข้าใจพื้นฐาน มันจะไปต่อได้จริงไหม?
  • คุณหนุ่มยกตัวอย่างว่าหลายๆครั้งโปรแกรมเมอร์ไม่เข้าใจ business ที่ทำเลย ที่โปรแกรมเมอร์รู้ก็คือว่าจะตะบี้ตะบันเอา angular ไปยัดในโปรเจคใหม่ได้ยังไง แต่พอถามว่าทำไมต้อง angular พวกเขาก็กลับตอบว่าไม่รู้(ขาดพื้นฐาน)
  • automation สำคัญมาก อะไรที่มันทำงานแทนเราได้ ต้องเอามาทำ ไม่อย่างนั้นกระบวนการ agile ก็ไม่สำเร็จ
  • ใครเขียนโปรแกรมคนนั้นต้อง test เอง ไม่ใช่หน้าที่ tester มา report defect log
  • เมื่อมี requirement เข้ามาสิ่งแรกที่ต้องคิดคือ เราจะทดสอบมันยังไงว่า work และจะ demo/review มันยังไงกับคนที่ใช้งานมันจริงๆ
  • unit test เป็นเรื่องที่โปรแกรมเมอร์ต้องทำ
  • ถ้าจะเอา agile ไปใช้ในองค์กร ให้เริ่มทีละทีมทำให้ดีที่สุด อย่าไปปรับทีเดียวทั้งองค์กร
  • ฝ่าย management ต้องรู้ว่าเอา agile ไปใช้แล้วจะช้าลงแค่ไหน?
  • คนใหม่เข้ามาอย่าปฏิเสธประสบการณ์ของเขา ให้รับฟังเผื่อเอามาใช้
  • ฝากให้คนที่มาฟังกลับไปตั้งคำถามว่าทำไมต้องมาใช้ agile
  • (ผมสรุปเอง) สุดท้าย session นี้จะบอกว่าการเอา agile ไปใช้ต้องใจเย็นๆ ในตอนเริ่มต้น productivity คุณอาจจะลดลงด้วยซ้ำเพราะทุกคนต้องกลับไปที่พื้นฐาน แต่ถ้าทำอย่างมีวินัย และเพิ่มทักษะไปเรื่อยๆทีมคุณจะแข็งแกร่งขึ้นเองและเมื่อนั้นมันถึงจะไปได้ไว

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

..ณัฐวุฒิ สิงห์ถม..