Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

เมื่อนักพัฒนาไม่สามารถควบคุมความซับซ้อนของ code ได้ !!

$
0
0

mess-00

mess-00 จากบทความเรื่อง Why it happens to your code again and again? อธิบายการพัฒนาระบบ web application ด้วย RoR (Ruby on Rails) ซึ่งเป็น framework หลักของการพัฒนาระบบด้วยภาษา Ruby โดยในช่วงแรกของการพัฒนาระบบนั้นจะราบรื่นและรวดเร็ว ไม่ว่าจะเป็นการเพิ่ม gem หรือ library ต่าง ๆ เข้าไป ทุกอย่างมันแจ่มมาก ๆ

แต่เมื่อเวลาผ่านไปเรากลับพบว่า

ยิ่งทำการเพิ่ม feature ใหม่ ๆ เข้ามา ยิ่งทำการเพิ่ม gem หรือ libray ต่าง ๆ เข้ามา การพัฒนากลับยิ่งช้าลง การพัฒนาเป็นแบบปะผุไปวัน ๆ หรือ ทำให้มันเสร็จ ๆ ไป code ของแต่ละส่วนผูกมัดกันเหลือเกิน แก้ไขจุดหนึ่งกระทบไปอีกหลายจุด ยิ่งทำการ update version ของ gem หรือ library ด้วยแล้ว ยิ่งไปกันใหญ่ แสดงดังรูป cycle

มีหลาย ๆ คนคิดจะแก้ไขและปรับปรุงให้ดีขึ้น

แต่เมื่อเข้ามาแก้ไขกลับพบว่า การแก้ไขมันมีข้อขัดแย้งต่อโครงสร้างระบบปัจจุบันเหลือเกิน ดังนั้นมีเพียงสองทางให้เลือกคือ
  1. อย่าไปยุ่งกับมัน
  2. เขียนใหม่เถอะ
ลองถามตัวเราเองสิว่า จะเลือกทางไหน ?
โดยผลต่าง ๆ ที่เกิดขึ้นมาล้วนมีสาเหตุมาจาก ระบบงานโตขึ้นทุกวัน ความซับซ้อนของระบบก็สูงขึ้นทุกวัน จนเราไม่สามารถควบคุมและจัดการมันได้ ถ้าเราในฐานนะนักพัฒนา software ไม่สามารถควบคุมความซับซ้อนของระบบที่พัฒนาได้แล้ว ความยุ่งยาก ความวุ่นวาย ซึ่งเป็นต้นเหตุของหายนะต่าง ๆ ย่อมเกิดขึ้นอย่างแน่นอน และ หลีกเลี่ยงไม่ได้เลย

ดังนั้นนักพัฒนาที่ดีต้องมีความสามารถดังนี้

  • จัดการความซับซ้อนของระบบได้ด้วยแนวปฏิบัติที่ดี
  • รู้และเข้าใจในตัว framework และ เครื่องมือ ที่นำมาใช้เป็นอย่างดี ไม่ใช้เพราะว่าเห็นเขาใช้หรืออยากใช้
อย่าลืมว่าของที่มันดี ถ้าอยู่ในมือของคนที่ไม่เข้าใจ ถ้าอยู่ในมือของคนที่ไม่มีความสามารถ มันก็กลับกลายเป็นสิ่งที่แย่ได้เช่นกัน

คำถามคือ แล้วต้องทำอย่างไรบ้าง ?

สิ่งที่นักพัฒนาที่ดีควรต้องทำก่อนคือ การจัดการความซับซ้อนให้ลดน้อยลงไปให้ได้ นั่นคือ ต้องทำการปรับปรุงความสามารถต่าง ๆ ขึ้นมา ลองถามตัวเราเองสิว่า รู้แล้วเข้าใจสิ่งต่าง ๆ เหล่านี้หรือไม่ ? ถ้ายังศึกษาซะ
  • SOLID principles
  • Design patterns
  • Refactoring
  • Code smell
  • Testing
  • รูปแบบต่าง ๆ ของ Architecture

จากนั้นทำการศึกษาและเรียนรู้เครื่องมือต่าง ๆ

ที่มีประโยชน์ต่อการพัฒนาระบบงาน เนื่องจากเราไม่จำเป็นต้องสร้างทุกสิ่งขึ้นมาใช้เองนะ นำเครื่องมือมาช่วยจัดการความซับซ้อนบ้างก็ได้ แต่ต้องเข้าใจเครื่องมือเป็นอย่างดีนะ เพื่อเลือกเครื่องมือที่เหมาะสมกับงานและปัญหา
มิเช่นนั้นทุกสิ่งทุกอย่างที่คุณเลือกมันจะกลับมาทำร้ายคุณเอง  !!

Viewing all articles
Browse latest Browse all 1997

Trending Articles