Less behavior, more case

คำเตือน blog นี้เขียนเพื่อบ่นการทำงานโดยเฉพาะ!

ช่วงนี้ประชุมเยอะ เลยคิดอะไรได้นิดหน่อยเนื่องจากพยายามจะจำกัดให้ Project ไม่โตเกินไปแต่รู้สึกจะห้ามไม่ได้เท่าไหร่ เคย Tweet ลอยๆว่าจริงๆ ควรทำระบบในรูปแบบกลับด้านจากเผื่อเหลือ ให้เป็นระบบที่ยังขาดบางอย่างอยู่ซะ แต่ก็ไม่ได้คิดต่อว่าเพราะอะไรจนช่วงนี้แหละที่ประชุมรวบรวมว่าระบบต้องทำอะไรบ้างถึงเขียนยาวๆ ได้

เนื่องจากระบบที่ทำอยู่ เป็นระบบที่ใหญ่มากประกอบด้วยการทำงานจากชั้นย่อยๆ หลายๆส่วน มีพฤติกรรมล้านแปดจาก Marketing เมื่อจะเริ่มทำเจ้าของระบบก็เอา Requirement ทั้งหมดมาแปลงเป็น Design ขนาดใหญ่เพื่อให้ระบบทำตาม Requirement/Bahavior ได้ทั้งหมดตั้งแต่เริ่มต้น!!! ซึ่ง Requirement ก็เปลี่ยนแปลงไปมาเพิ่มนู่นนี่จนปัจจุบันก็ยังไม่ได้ Finale design ที่สมบูรณ์พร้อมที่จะให้ Programmer ตาดำๆ ไปเขียนหรือแบ่งส่วนให้ชัดเจนเสียที เพราะรายละเอียดจุกจิกทั้งหลายมักจะโผล่มาจากคนนู้นทีคนนี้ทีจนมันไม่เสร็จ

ก็เลยคิดได้ว่า จริงๆแล้วถึงแม้ระบบมันจะใหญ่ขนาดไหนก็ตาม มันควรจะตัด Behavior พื้นฐานแล้วค่อยๆทำก่อน ไม่จำเป็นต้องออกแบบหรือคิดถึง Behavior ทั้งหมด เมื่อได้ชั้นต่างๆ ที่มีหน้าที่ชัดเจน มี test(case) ครอบคลุมแล้วเราถึงค่อยทำ Behavior เพิ่ม การออกแบบก็ไม่ใช่ออกแบบทั้งหมดตั้งแต่ต้น แต่ต้องทำเพื่อให้มันค่อยๆ เพิ่มได้เพราะงั้นสิ่งที่ควรทำจริงๆ คือ

  1. หาให้ได้ก่อนว่าระบบที่จะทำ พฤติกรรมหลักมันคืออะไร
  2. ออกแบบเฉพาะพฤติกรรมเหล่านั้นซึ่งก็ไม่ควรจะมีหลายชั้น ให้แต่ Component/Class มีหน้าที่ชัดเจนที่สุด
  3. อย่าเผื่ออะไรต่างๆ ให้มันมากนัก จะให้ดีลืมพฤติกรรมอื่นที่เป็น Behavior รองไปให้หมดก่อนเลยก็ได้
  4. ไม่มีอะไรที่จะสมบูรณ์แต่ต้นหรือตรงตาม Requirement ทั้งหมดหรอก
  5. ได้โปรดลงมือเขียนมันซักที

ช่วงนี้พยายามค้านๆ ให้เลิกคิดถึง Behavior ไร้สาระที่ยังไม่ต้องทำจนกว่า Behavior พื้นฐานจะเสร็จก่อนจนเบื่อและ คิดว่าจะเลิกค้านและให้ไปออกแบบกันเองมาให้หมด เหนื่อยที่จะค้าน

About llun

Just a programmer

, , ,

  • http://twitter.com/Naphob Naphob Tanatatcharat

    ลอง Agile ดูยังครับ

    • http://llun.in.th/ llun

      ลองอยู่ครับ แต่ดันได้แค่ทีมเดียวฮะๆ