ตัดสินใจเลือก Ruby on Rails ทำโปรเจค ดีแล้วหรือ?

ผมอยากเขียนบทความนี้ให้ Geek ทั้งหลายได้อ่านครับ

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

อธิบายเรื่อง Geek ยาวไปแล้ว บางท่านอาจจะถามผมว่า ลองยกตัวอย่าง "สิ่งนั้น" ที่ผมพูดถึงมาหน่อย....ได้ครับ สมมุติว่าสิ่งนั้นคือภาษาโปรแกรมใหม่ภาษาหนึ่ง ยกตัวอย่างไอ้ที่มันแรงๆตอนนี้ละกันครับ Ruby on Rails

ผมมีโอกาสได้ศึกษา Ruby on Rails เพื่อพัฒนา Web Application มาได้สักระยะแล้วครับ ผมพบว่ามันเป็นภาษาที่มี Architecture ที่ดีมากครับ โครงสร้างของโค้ด Ruby ที่คุณเขียนจะเป็น MVC (Model-View-Control) โดยอัตโนมัติครับ(หรือจะเรียกว่าโดยบังคับดี?) ส่วนโครงสร้างของภาษาก็เข้าใจง่ายครับ ประมาณว่า อาม่าของผมก็อ่านโค้ดง่ายๆ พอเข้าใจว่ามันทำอะไร ถ้าจะให้ยกตัวอย่างนะครับโค้ด Ruby บรรทัดเดียวอาจจะมีความหมายเท่ากับโค้ด php 5 บรรทัดหรือมากกว่า บางคนเคยเขียนภาษาที่ใช้พัฒนา Web Application อื่นๆ มาก่อน เช่น php, jsp, asp เป็นต้น พอได้มาสัมผัสกับ Ruby on Rails ส่วนมากก็จะพูดเป็นเสียงเดียวกันว่า

"โอ้! Ruby ดีจังเรย โค้ดเป็นสัดเป็นส่วนดี โครงสร้างก็เยี่ยม ทำไมเมื่อก่อนเราถึงได้ใช้ php ที่แสนจะอัปลักษณ์ทำเว็บนะ รู้สึกแย่จริงๆ"

จุดมันอยู่ตรงนี้ครับ อะไรที่เป็นตัวตัดสินว่าภาษาไหนแย่กว่ากันครับ? ทำไมคนถึงคิดว่า Ruby on Rails ดีกว่า php ล่ะ สมมุตินะครับ...แค่สมมุตินะ ถ้าคนเราเริ่มเรียน Ruby on Rails ก่อน php ล่ะ จะบอกว่า php ง่ายกว่าไหม? ดีกว่าหรือเปล่า? พวก Ruby Geek ทั้งหลายก็คงบอกว่า "ไม่" สินะครับ นั่นนะสินะ พวกคุณเป็น Ruby Geek นี่ ผมจะเถียงคุณได้อย่างไรเล่าครับ...จริงไหม?

จริงๆถ้าผมเรียน Ruby ก่อน php นะครับ ตามความรู้สึกผม ผมอาจจะคิดว่า php เป็นภาษาที่ไร้สาระก็ได้ แต่ผมก็ไม่ลืมนะครับว่าภาษาแรกที่สอนการส่ง http request แบบ GET กับ POST ให้ผมก็ php นี่แหละ...เอาล่ะครับ ขอกลับมาเรื่องเดิมก่อน ผมแค่อยากจะบอกว่าเมื่อคุณเรียน Ruby ไปแล้วมีความรู้สึกว่า Ruby มันดี php มันแย่ เมื่อไร นั่นหมายความว่าสิ่งที่พัฒนาขึ้นไม่ใช่ Ruby ครับ แต่เป็นตัวคุณต่างหาก! หากให้คุณกลับไปเขียน php ที่คุณเคยเขียนเมื่อหลายปีก่อนใหม่อีกรอบ คุณก็คงไม่เขียนแบบเดิมแล้วใช่ไหมครับ? ส่วนเด็กๆที่หัดเขียนโปรแกรมโดยใช้ Ruby เป็นภาษาแรก เค้าก็ไม่รู้หรอกครับว่ามันดีกว่ายังไง หรือ MVC คืออะไร

ผมยอมรับนะครับว่าเมื่อคุณเข้าใจ Ruby on Rails ในระดับหนึ่ง คุณอาจจะอยากใช้มันทำโปรเจคทุกอย่างที่คุณได้รับมอบหมายมา แต่สำหรับผมที่เริ่มชีวิตโปรแกรมเมอร์ด้วย JavaScript, C++, C, Java, VB, php ตามลำดับ เมื่อมาเรียน Syntax ของภาษา Ruby ทำให้เรียนยากมาก จะเขียนอะไรแต่ละอย่างก็ต้อง search google เพราะว่า Syntax ของมันเรียกได้ว่าเป็นเอกลักษณ์จริงๆ พวก Geek มักจะชอบพูดเสมอว่า

"Ruby can do that just in 1 line of codes."

โอเคครับ! ผมไม่เถียง เพราะเป็นเรื่องจริงครับ แต่ไอ้เพราะ 1 line of codes นี่แหละ ผมไม่เคยเข้าใจเลยว่ามันทำอะไร ผมวัด Complexity ของ Code ที่ซ่อนอยู่ไม่ได้ ไม่รู้เลยว่ามันมีประสิทธิภาพหรือเปล่า? แต่ Geek ทั้งหลายก็บอกว่ามันดีแล้วนะครับ ผมก็คงเถียงท่านๆเหล่านั้นไม่ได้

เทอมการศึกษานี้ผมมีโปรเจคที่เป็น Web Application อยู่สามชิ้นครับ

ชิ้นแรกเป็นงานกลุ่มครับ ต้องใช้ Ruby on Rails ครับ(เลือกไม่ได้ คือ จริงๆเลือกได้ครับ แต่ต้องใช้ Ruby on Rails ครับ เพราะเป็น Social norm ไปแล้ว) ปัญหาเยอะมาก เพราะคนในกลุ่มรวมถึงผมด้วย ไม่มีใครชำนาญ Ruby เลยสักคน จะทำอะไรทีก็เสียเวลาสุดๆ

ชิ้นที่สองเป็นโปรเจคกลุ่มอีกเหมือนกันครับ แต่บังเอิญโค้ดเป็นอยู่คนเดียว เลยเลือกใช้ php ครับ เพราะกว่าจะเรียนรู้ Ruby ให้กระจ่างพอเอาไปเขียนโปรเจค(ให้ดี)ได้ ก็อีกนานครับ เลย Deadline ส่งงานพอดี โปรเจคนี้เน้นการใช้ Database ครับ ไม่เน้นเว็บ

โปรเจคสุดท้าย ต้องเีขียนโปรแกรมดึงข้อมูลออกมาจากเว็บครับ เป็นงานกลุ่มอีกเช่นกัน มีเวลาสองอาทิตย์ เลือกใช้ JSP Servlet ครับ เพราะทุกคนในกลุ่มชำนาญ Java ยิ่งนัก ประกอบกับเวลาที่สั้นมากเลยตัดสินใจใช้ภาษานี้ครับ

เวลาที่ผมเลือกเทคโนโลยีที่มาใช้ทำโปรเจค ผมจะคำนึงถึงสิ่งต่อไปนี้ครับ
  1. ความชำนาญของตนเองและเพื่อนร่วมทีม
  2. เวลาที่ใช้ในการเรียนรู้เืทคโนโลยีใหม่
  3. ระยะเวลาในการทำโปรเจค
  4. การสนับสนุน (เช่น help support)
  5. โปรเจคจะไป Deploy ที่ environment แบบไหน (Hosting ส่วนมากในไทยไม่ Host Ruby นะครับ ถ้าทำเว็บที่ใช้ในประเทศไทยแล้วไป Host ที่เมืองนอก บอกได้เลยว่าดับครับ ดับ!)
  6. อายุและความสำคัญของงาน (งานที่มีอายุสั่น ไม่ต้อง Maintainance ไม่ใช่ Critical System ก็ไม่ต้องไปลงแรงกับมันมากครับ)
  7. ความต้องการของลูกค้า
  8. ความเข้ากันได้ของ 3rd party Plugins ต่างๆ
สุดท้ายผมเชื่อเสมอนะครับว่า

คนส่วนมากจะตามกระแสและยัดเยียดเทคโนโลยีใหม่ๆเข้ามาใช้ในโปรเจคทั้งๆ ที่ไม่พร้อม แต่คนฉลาดจะเลือกเทคโนโลยีที่เหมาะสมกับโปรเจคนั้นๆ

...จบครับ...

10 comments:

  1. แบบที่เขียนมานี่เค้าไม่น่าจะเรียกว่า Geek นะครับ
    น่าจะเรียกว่า Evangelist มากกว่า
    หรือบางคนก็บอกว่าเป็นพวก Zealot
    ถ้าภาษาไทย เค้าบอกว่าเป็นพวก "สาวก"
    แล้วก็มีอยู่ทั่วไปนะครับ
    ทั้ง for Windows, for Mac, for Ruby, for Java, for Microsoft, etc.

    ReplyDelete
  2. คุณนี่ก็ php geek แหละนะ :)

    ReplyDelete
  3. ขอบคุณสำหรับข้อแนะนำนะครับ

    ReplyDelete
  4. ยอดเยี่ยมมากเลยครับ บทความของคุณนี้มันกินใจจริงๆ

    ReplyDelete
  5. นี่ก็นานแล้วเนาะ ป่านนี้เจ้าของบทความน่าจะเปลี่ยนทัศนคติไปเยอะแล้วมั้ง :D

    ReplyDelete
  6. ผมเข้าใจครับ เรื่องข้อจำกัดทางความรู้มีผลกับการทำงาน และเลือกเครื่องมือ

    คงไม่มีใคร เลือกลองเครื่องมือใหม่ๆ หรอกครับยิ่งถ้าไม่มีเวลาพอที่จะศึกษา ยิงบอกลาได้เลย

    แต่ยังไงก็ควรศึกษาไว้นะครับ :-P


    ปล. ผมเคยเขียนทั้ง 2 ภาษา มาแล้วทั้ง PHP และ Ruby ยังไงผมก็เลือก Ruby นะ.



    ReplyDelete
  7. รับเขียน Ruby on Rails
    087-8242032
    kun_a44@hotmail.com

    ReplyDelete
  8. ขออนุญาตฝากลิงค์นะคะ
    ขั้นตอนง่ายๆ กับการสมัครเล่นบาคาร่าออนไลน์ คาสิโนออนไลน์ที่มีความมั่นคงให้สมาชิกไว้วางใจได้ เปิดบริการตลอด 24 ชั่วโมง ที่นี่เลยค่ะ
    https://www.111player.com

    ReplyDelete
  9. นักรบต้องเลือกอาวุธ ถ้านักธนูไปเลือกใช้ดาบใหญ่ ก็จะขาดประสิทธิภาพทั้งเรื่องพละกำลัง ทั้งเรื่องความคล่องตัวจากเดิม ดังนั้นควรเลือกสิ่งที่เหมาะกับตัวเอง

    ReplyDelete
  10. อ่านบทความ / เรียน Ruby on Rails ไปพร้อมกันกับเรา Symbolet
    www.symbolet.com

    ReplyDelete

Related Posts Plugin for WordPress, Blogger...