Coding is discipline
หลังจากหมกมุ่นและงุ่นง่านอยู่กับ Drupal CVS เกือบทั้งอาทิตย์ ทำให้ผมรู้ว่า "สไตล์ลูกทุ่ง" ที่ติดตัวมาแต่กำเนิดนั้น ไม่เหมาะกับงานพัฒนาซอฟต์แวร์เป็นอย่างยิ่ง!
เรื่องนี้เป็นการวิพากษ์วิจารณ์ตัวเองนะครับ ไม่ได้พาดพิงถึงคนอื่น เพราะอยากจะโน้ตไว้ซะหน่อยว่า ตัวเองควรปรับปรุงอะไรบ้าง เพื่อจัดการชีวิตและโค้ดให้เป็นระเบียบและมีหลักการมากขึ้น จะได้ไม่ต้องหัวหมุนตลอดปีตลอดชาติ ก่อนที่จะ สมัคร CVS account ของ drupal.org ผมก็ใช้เวลาอยู่หลายวัน เพื่อศึกษา การเขียนโค้ดให้ได้มาตรฐานของ Drupal ถ้า สำหรับ WordPress "โค้ดเป็นดั่งบทกวี" (Code is Poetry) สำหรับ Drupal "โค้ดคือระเบียบวินัย!" (Code is Discipline) เลยทีเดียวครับ (แม้แต่สไตล์การคอมเมนต์ในซอร์สโค้ด ยังต้องมีรูปแบบที่แน่นอน)
พอสมัคร CVS account รอบสองผ่าน ผมก็ใช้เวลาอีกหลายวัน กว่าจะเข้าใจว่ามันทำอะไรได้บ้าง แต่ก็เป็นธรรมดาของมนุษย์ลูกทุ่งอย่างผมที่มีความอดทนไม่มากนัก และไม่เคยคิดว่าตัวเองจะเกิดมาเพื่อพัฒนาซอฟต์แวร์ (หรืออะไรคล้ายๆแบบนั้น) ผมจึงอ่านเอกสารเกี่ยวกับการใช้งานแค่คร่าวๆ ที่เหลือก็มั่วเอา! ตอนแรกเห็นคำสั่ง command line สำหรับ CVS แล้วหนาว เลยหาโปรแกรมพวก GUI มาใช้แทน (CVL) แล้วส่ง Colourise Theme เวอร์ชั่นแรก เข้าโปรเจ็คจนได้
แต่ช้าก่อน... กามนิตหนุ่ม Drupal CVS account ไม่ได้มีไว้ให้ "ฟันแล้วทิ้ง" นะจ้ะ มันมอบบทบาท ช่างแจกจ่าย (contributor) และ ช่างซ่อมบำรุง (maintainer) ให้เราด้วย นั่นหมายถึงความรับผิดชอบของเรา ในฐานะนักพัฒนา (developer) ของชุมชนโอเพ่นซอร์สแห่งหนึ่งครับ (แม้จะฟังดูน่ากลัว แต่ลึกๆก็แอบภูมิใจ) ผมส่งธีมอันแรกเข้าโปรเจ็คต์ ก็ยังไม่มีอะไรยุ่งยากเท่าไหร่ มีคนให้คำแนะนำและรายงาน bug เข้ามาบ้าง เราก็ต้องคอยติดตาม หรือบอกวิธีแก้ปัญหาชั่วคราวไป แล้วค่อยนำมาปรับปรุงในเวอร์ชั่นต่อๆไป (ก็อย่างที่บอกไปแล้ว เริ่มแบบมั่ว 5 วัน 4 เวอร์ชั่น ใส่ tag ผิด ปล่อยข้ามเวอร์ชั่นอีกต่างหาก! อยากเขกกบาลตัวเองจริงๆ)
ประเด็นสำคัญไม่ใช่แค่เรื่องการแจกจ่ายและการซ่อมบำรุงหรอกครับ มันคือ การจัดระเบียบตัวเองและโค้ดหรือไฟล์ของตัวเองด้วย ผมมีปัญหากับเรื่องนี้มาก เพราะไม่เคยทำให้มันเป็นแบบแผนมาก่อน พอต้องปะทะกับระบบจัดการซอร์สโค้ดแบบโอเพ่นซอร์ส อย่าง CVS เลยได้รู้ว่า ที่ผ่านมา ตัวเองสะเปะสะปะมาก และเสียเวลากับ การทำงานซ้ำซ้อนโดยไม่จำเป็น มิน่าล่ะ เค้าถึงมี frameworks โน่นนี่ออกมาเยอะแยะ
อีกประเด็นที่เราต้องใส่ใจไม่น้อยไปกว่าโค้ด ก็คือ ต้องใส่ใจมนุษย์ด้วย ถ้าใครเคยแงะซอร์สโค้ดของ Drupal (หรือ Opensource Software ตัวอื่นๆ) ออกมาดู จะเห็นว่าคอมเมนต์ในไฟล์เหล่านั้น ทำหน้าที่เป็นเอกสารแนะนำเพิ่มเติมด้วย ไม่ใช่แค่จดไว้กันลืมสำหรับตัวเองคนเดียว นอกจากนี้การเรียนรู้จากชุมชนก็เป็นส่วนสำคัญในการพัฒนา ผมไม่คาดว่าจะมีใครสนใจธีมที่ผมทำ แต่ก็ยังได้รับคำแนะนำดีๆ เช่น http://drupal.org/node/338007 ทำให้เราต้องเข็นตัวเองเข้าไปเรียนรู้สิ่งใหม่ๆ เพื่อพัฒนาขึ้นเรื่อยๆ
ตอนนี้สำหรับผม แม้ว่าการยุ่งเกี่ยวกับ CMS หรือ เว็บไซต์ จะเป็นงานอดิเรก แต่ถ้ายังไม่แก่เกินไป มันเป็นทางเลือกที่น่าสนใจอย่างหนึ่งของชีวิตเลยนะ เพราะยิ่งศึกษาจากโลกโอเพ่นซอร์สก็ยิ่งสนุก ความรู้มันเปิดกว้างมากๆ เราสามารถค้นหาคำตอบที่อยากรู้ได้มากมาย ขึ้นอยู่กับเวลาว่างและความพยายามของตัวเราเอง
แต่ก่อนอื่น ผมต้องจัดระเบียบชีวิตตัวเองให้ได้ด้วย!