Screen Shot 2558-08-24 at 3.14.40 PM
อ่านเจอบทความเรื่อง Make the Magic go away เขียนโดยคุณ Robert C. Martin หรือ Uncle Bob
ทำการอธิบายถึงการใช้งาน framework ต่าง ๆ ไว้อย่างน่าสนใจ

โดยก่อนที่จะนำมาใช้ เราควรเข้าใจมันก่อน !!
จะเข้าใจมันได้อย่างไร นั่นคือ คุณต้องเขียนขึ้นมาเองก่อน
จากนั้นจึงกลับไปดู framework ต่าง ๆ ว่ามันเหมาะกับงานของเราหรือไม่ ?
และเราสามารถอยู่ได้ หรือ พัฒนาระบบได้โดยไม่ต้องพึ่ง framework ได้ไหม ?

ดังนั้น จึงขอนำมาแปลในส่วนที่น่าสนใจดังนี้

ในบทความยกตัวอย่างของ rxJava

เป็น framework ขนาดเล็ก และ มีประโยชน์ต่อการพัฒนาระบบงานอย่างมาก
โดยที่ทุก ๆ อย่างสามารถถูก observe หรือ โดนเฝ้าติดตามการเปลี่ยนแปลงได้
และสามารถจัดการส่วนต่าง ๆ ผ่าน callback

คำถาม มันคือวิธีการใหม่ ๆ หรือไม่ ?
คำตอบ คือ ไม่
เนื่องจากมันเป็นแนวคิดของพวก data flow และ functionnal language
เป็นแนวคิดหนึ่งที่อยู่ในหนังสือ Design Pattern ของ GOF (Gang of Four)
นั่นก็คือ Observer pattern

แต่วิธีการนี้ไม่ได้รับความนิยมมากนัก
เนื่องจากมันทำงานแบบ indirect
หรือทำงานแบบไม่ตรงไปตรงมาน
ส่งผลให้ยากต่อการ debug/trace และ ทดสอบ

แต่ไม่ได้บอกว่า rxJava มันไม่ดีนะ

Framework ต่าง ๆ เกิดจากจุดอ่อนของภาษาโปรแกรมนั้น ๆ

ไม่ว่าจะเป็น rxJava, Spring, Hibernate, JSF, Spring และอื่น ๆ อีกมากมาย
ถูกสร้างมาเพื่อพยายามปรับปรุงตัวภาษาโปรแกรมนั่นเอง
ให้มันง่ายต่อการพัฒนาระบบงานน

ยิ่ง framework มีมากเท่าไร มันหมายถึง จุดอ่อนของภาษานั้น ๆ ก็เยอะเช่นกัน

แต่ถ้าสร้าง framework แล้วมันได้ผลออกมาไม่ดี หรือ ไม่เหมาะสม
จะทำให้เกิดการสร้างภาษาใหม่ ๆ ขึ้นมา
ดังนั้น ภาษาใหม่ ๆ เกิดขึ้นมาเพื่อชดเชย และ แก้ไขจุดอ่อนเหล่านั้นนั่นเอง

โดยที่ภาษา และ framework ใหม่มักจะบอกว่า

  • มีความเร็วกว่า
  • พัฒนาได้เร็วกว่า
  • เขียนได้ง่ายกว่า
  • สร้างระบบได้ง่ายกว่า
  • ออกแบบมาได้ดีกว่า

แต่เมื่อนำมาใช้งานจริง กลับไม่แตกต่าง
แถมบางครั้งยากกว่าเดิมอีก (Magic มันเยอะมากมาย)
ส่วนการออกแบบระบบก็ยังแย่อยู่เหมือนเดิม

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

แต่ส่วนใหญ่ มักจะไม่เข้าใจะนะสิ !!
จึงทำให้เกิดปัญหามากมายตามมา

ดังนั้น ก่อนจะเลือกใช้ framework หรือ ภาษาอะไร
ให้ลองคิดก่อนว่า ระบบของเราต้องการใช้งานอะไรบ้าง ?
ใช้เพียง framework หรือ วิธีการง่าย ๆ มันเพียงพอหรือไม่ ?
หรืออาจจะไม่ต้องใช้ framework เลยหรือไม่ ?

บางครั้งคุณเพียงเขียน code ขึ้นมาใช้เองก็ได้

ลองคิดดูหน่อยสิว่า
Code ที่คุณไม่ได้เขียนเอง
Code ที่คุณไม่ได้ควบคุมเอง
Code เหล่านั้นอาจจะไม่น่าไว้ใจก็ได้นะ !!

สรุปแล้ว ก่อนนำอะไรไปใช้งาน

อย่าเพิ่งวิ่งเข้าหาพวกภาษา และ framework ที่แจ่มๆ
แต่ให้ทำความเข้าใจความต้องการของระบบงานก่อนว่ามีอะไรบ้าง

จากนั้นจึงไปดูว่า
เราสามารถสร้างส่วนการทำงานนั้น ๆ ขึ้นมาได้เองหรือไม่
สร้างให้มันเรียบง่าย ตามความต้องการ
ไม่ต้องมาเผื่อโน่น นี่ นั่น (นักพัฒนาชอบการเผื่อ !!)

จากนั้นจึงกลับมาดู และ พิจารณา framework อีกรอบ
ว่ามันยัง ดี และ เหมาะสมกับงานของเราหรือไม่ ?

ลองกลับไปดูสิว่า

เราพัฒนาระบบงานโดยนำเอาภาษา และ framework เป็นตัวตั้งต้นหรือไม่ ?
ถ้าใช่ แนะนำให้ปรับเปลี่ยนการคิดก่อนเลย
ไม่เช่นนั้น คุณจะถูกล้อมกรอบความคิดอย่างแน่นอน