Pages

วันพุธ, พฤษภาคม 29, 2556

Framework สำคัญแค่ไหนใน Software Development


เห็นใน Timeline พูดเกี่ยวกับการเลือก Framework ที่ใช้ในการทำ software
ไหนๆ ก็เคยทำงาน consult เกี่ยวกับเรื่องพวกนี้
เลยจัดหน่อยซัก blog 

Framework คืออะไร ?
ถ้าถามอากู๋ ก็มีคนให้คำจำกัดความไว้เยอะพอสมควรอยู่แล้ว ...
ไม่อยากให้คำจำกัดความใหม่ แต่อยากให้มองว่ามันเปรียบเหมือน workflow ใดๆ 
ที่เพื่อให้ได้ผลสำเร็จอย่างใดอย่างหนึ่ง 

ทุก Framework มีจุดมุ่งหมายของมัน
แต่การคาดหวังให้ได้ผลสำเร็จนั้น แทบไม่แตกต่าง
ดังนั้นสิ่งที่แตกต่างกันในแต่ละ Framework ที่เห็นได้ชัด
มักจะเป็น "กระบวนการ" ในการทำงานที่ให้ Output ต่อหนึ่งหน่วยเวลาได้มากๆ นั่นเอง

"อยู่บ้านหิวข้าว จะเดินออกไปซื้อข้าว หรือโทรสั่ง หรือทำเองดี" 

ประโยคข้างบนเป็นตัวอย่างในการเลือก framework จะเห็นได้ว่า
เรารู้ทุก framework มาก่อนแล้ว จึงสามารถตัดสินใจ ได้ว่าแต่ละวิธีนั้น
มี Cost และ Learning Curve เป็นอย่างไร

การเลือก framework จึงควรศึกษาให้รอบคอบ ก่อนว่า มี Framework ไหนบ้าง
ที่ทำให้เราสำเร็จในงานนั้นๆ ได้ ตาม requirement ที่เรามี ...
การตัดสินใจจากการรู้จัก Framework เพียงแค่ตัวเดียวจึงเป็นสิ่งที่อันตรายมาก ....
เพราะเมื่อเีราลงแรงกับ Framework ที่ไม่ได้ meet กับ requirement ที่เรามี
สุดท้ายก็จะยิ่งทำให้เราเสียแรงมากขึ้น เพราะนอกจากที่

เราจะต้องคอยดูแล code เพื่อให้ทำงานตาม Framework ได้ แล้ว
เรายังจะต้องมาคอยดูแล "จุดเชื่อมต่อ" ระหว่าง code ของเรากับ Framework นั้นๆ
เพื่อให้ Framework ทำงานได้อีกด้วย ....

สรุป ...

  • Framework ส่วนใหญ่มักจะมีหลักการหรือแนวคิดมาจาก
    Design Pattern ของภาษาคอมพิวเตอร์ที่ใช้เขียน Framework นั้นๆ ...
    หรือเป็นการยืม "Pattern" มาจากภาษาคอมพิวเตอร์อื่น ...
    ดังนั้น สิ่งที่จำเป็นมากกว่าการใช้ Framework ....
    เราจึงควรรู้ Design Pattern ให้คล่องเสียก่อน
  • หลักการเลือก Framework มักจะเป็น "เข้าใจง่าย เขียนได้เร็ว"
    แต่หลังๆ จะต้องเพิ่ม " Testได้ง่าย " เข้าไปด้วย
  • Framework ที่ตายแล้ว ( Community หาย ) ไม่ได้หมายความว่าไม่น่าใช้
    แต่เป็นการบอกว่า Workflow นั้นๆ ไม่สามารถปรับปรุงไปได้มากกว่านี้แล้ว
  • ควรเลือก Framework ที่เหมาะกับงาน มากกว่าการใช้ Framework ไปตามเทรนด์
  • และคงไม่สนุกหากต้องมานั่งแก้ Framework เมื่อมี Production Issues ...
    จึงควรคิดก่อนใช้ ...