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 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 มักจะชอบพูดเสมอว่า
โอเคครับ! ผมไม่เถียง เพราะเป็นเรื่องจริงครับ แต่ไอ้เพราะ 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 ยิ่งนัก ประกอบกับเวลาที่สั้นมากเลยตัดสินใจใช้ภาษานี้ครับ
เวลาที่ผมเลือกเทคโนโลยีที่มาใช้ทำโปรเจค ผมจะคำนึงถึงสิ่งต่อไปนี้ครับ
- ความชำนาญของตนเองและเพื่อนร่วมทีม
- เวลาที่ใช้ในการเรียนรู้เืทคโนโลยีใหม่
- ระยะเวลาในการทำโปรเจค
- การสนับสนุน (เช่น help support)
- โปรเจคจะไป Deploy ที่ environment แบบไหน (Hosting ส่วนมากในไทยไม่ Host Ruby นะครับ ถ้าทำเว็บที่ใช้ในประเทศไทยแล้วไป Host ที่เมืองนอก บอกได้เลยว่าดับครับ ดับ!)
- อายุและความสำคัญของงาน (งานที่มีอายุสั่น ไม่ต้อง Maintainance ไม่ใช่ Critical System ก็ไม่ต้องไปลงแรงกับมันมากครับ)
- ความต้องการของลูกค้า
- ความเข้ากันได้ของ 3rd party Plugins ต่างๆ