ปัญหาโลกแตก ชี้นกเป็นไม้
ให้คิดกันเล่นๆ ก่อนจะไปเนื้อหาหลัก ถ้าเราเป็นทีม Business ที่จะทำซอฟต์แวร์ขึ้นมาสักตัวหนึ่ง อย่างแรกที่ทำคืออะไรครับ?
… (2 วินาที)
โอเค ทุกคนน่าจะตอบว่า ก็ต้องเก็บ Requirement สิ ว่าต้องทำอะไรบ้าง (ส่วนใครไม่ได้ตอบตามนี้ ผมจะมโนไปว่าตอบก็แล้วกันนะ)
แล้ว Requirement ที่ว่า ก็ต้องมีคุณสมบัติต่างๆ ที่ประกอบกันเป็นซอฟต์แวร์ของเราใช่ไหม หรือที่เรียกกันว่า Feature เช่น อัพโหลดรูปได้ ส่งอีเมลได้ ล็อกอินด้วยเฟสบุ๊กได้ เป็นต้น
ซึ่งในแต่ละ Feature ที่เราเขียนๆกันมา เราต้องคิดต่อใช่ไหมครับว่าจะมีการทำงานอย่างไร?
ใครตอบว่าไม่คิด ก็ให้ลองนึกดีๆ เพราะบางทีเราก็คิดแบบเร็วๆ หรือเห็นภาพตัวอย่างระบบที่เคยเห็นมาก่อน
แต่ถ้าใครคิดละเอียดๆหน่อย จะเขียนไว้หรือวาดรูปออกมาอย่างชัดเจน บางทีเราก็เรียกมันว่า Business Flow, Business Logic ก็แล้วแต่สะดวก แต่ในที่นี้ผมขอเรียกรวมๆ ว่า Flow ก็แล้วกัน
ซึ่งเราเขียนมันออกมาเพื่อให้เห็นการไหลของข้อมูล (Input) เงื่อนไขต่างๆ (Process) และผลลัพธ์ตอนจบ (Output)
โดยที่กล่าวมาทั้งหมด เป็นกระบวนการทาง Business เพื่อตอบว่า เรา “จะทำอะไร (What)”
ตัดฉากมาดูของฝั่งทีม Developer บ้าง, ทุกวันนี้เราสนใจเรื่องของฝั่ง Business หรือไม่?
… (2 วินาที)
ส่วนใหญ่ ถ้ายังทำงานแบบเดิมๆ ซึมๆ ก็มักไม่ค่อยสนใจว่า Business จะทำ Feature พวกนี้ไปเพื่ออะไร ทำไปทำไม หรือมันมีการเชื่อมโยงข้อมูลอย่างไรบ้าง
เพราะเขาเหล่านั้นมักตีขอบเขตตัวเองไว้ว่า ฉันมีหน้าที่แค่หาวิธี “ทำอย่างไร (How)” ที่จะทำ Task งานนั้นให้เสร็จ แล้วก็ก้มหน้าก้มตาเขียนโค้ดให้ได้ตามที่ Business ต้องการ ก็จบ..
การทำงานแบบนี้ มันเลยเกิดปัญหาตามมา คือ ทีม Developer ไม่เห็นหรือไม่สนใจภาพรวมทั้งหมดของซอฟต์แวร์ ไม่มีเป้าหมายร่วมกับทางทีม Business
และพบว่า บ่อยครั้งเมื่อไม่เข้าใจกันของทั้งสองทีม ก็เกิดความไม่ลงรอยกัน เพราะตีความ Requirement ไม่เหมือนกัน
และผลลัพธ์ของมัน คือ ซอฟต์แวร์ (แม้จะทำออกมาดีแค่ไหน) ไม่ตอบโจทย์ทาง Business, ไม่ตรงตาม Requirement และถูกตีกลับมาแก้ไขอยู่ร่ำไป
เสียทั้งเงิน ทั้งเวลา ทั้งอารมณ์ ความสัมพันธ์ของทั้งสองทีม และซอฟต์แวร์ก็อาจทำงานผิดพลาดอีกด้วย
คุยกันสิ ว่าอะไรคือนก อะไรคือไม้
ซึ่งถ้าคุณอ่านมาถึงตรงนี้ แล้วคิดว่า “เออ เจอปัญหาแบบนี้จริงๆ” และอยากหาทางปรับปรุงมันให้ดีขึ้น เราจะทำอย่างไรดี? Continue reading “ATDD – จะทำอย่างไรให้ชี้นกเป็นนก ชี้ไม้เป็นไม้” »