Tuesday, January 9, 2007

อะไรคือปัญหาของการเรียนการเขียนโปรแกรมภาษาจาวา

Hi ^^ ที่มา narisa.com ครับ ตอบดีมากเลยอาจารย์ minimalist

คุณคิดว่าปัญหาของการเรียนการเขียนโปรแกรมภาษาจาวาไม่รู้เรื่องมีสาเหตุมาจากอะไร แล้วเป็นเนื้อหาในส่วนใดที่มีปัญหามากที่สุด

เป็นคำถามที่เจอบ่อยมาก ๆ คำถามหนึ่ง

ปัญหาที่สร้างความลำบากในการเริ่มต้นกับ Java คือ

1. การสร้างมุมมองด้าน Object คือ ต้องสร้างหรือปรับทัศนคติให้ได้ ตีความเก่ง ๆ ตีทุกอย่างที่ขวางหน้าเป็นโลกอ็อบเจ็คต์ให้ได้

2. พื้นฐาน Object-Orientation เข้าใจศัพท์แสงและหลักการ เช่น Encapsulation, Polymorphism, Inheritance,
Override, Overload, Classification, Generalization, Specialization, Aggregation, Composition,
Navigability, Multiplicity, Realization, Visualization, Construction ฯลฯ

3. Java Syntax เช่น reserved words, การตั้งชื่อ, รายละเอียดเกี่ยวกับตัวแปรประเภทต่าง ๆ, การประกาศตัวแปร,
การสร้างเมธอด คลาส อินเตอร์เฟซ เป็นต้น

4. พื้นฐาน Java ที่จำเป็น เช่น Java Architecture (เช่น การทำงานของ JVM), Exception, Collection API เป็นต้น

5. มี API, Library และเทคโนโลยีเกี่ยวกับ Java มากมาย (อะไร ๆ ก็มักขึ้นต้นด้วย 'J') สร้างความสับสนงงงวย (จะศึกษาไป
ทางไหนดีวะ!?) ศึกษาไปศึกษามาเริ่มออกทะเล ไม่แข็งไม่เก่งอะไรสักอย่าง แต่ดันทะลึ่งเขียนโปรแกรมได้ แล้วโปรแกรมก็ดันทะลึ่ง
ทำงานได้ด้วย

6. ไม่มีคนใกล้ตัวที่เชื่อใจได้ว่าเก่ง Java จริง (สามารถจับต้องมองเห็นหน้าได้ ไม่ใช่ในเว็บบอร์ด)

7. ผู้คนมากมายพูดถึงพวก JSP, JSF, Servlet, EJB, Spring, Struts, Hibernate ฯ ก็เลยอยากใช้มั่ง อยากทำเป็นมั่ง

8. ใจร้อน อยากเรียน Part ชั้น อยากสอบเทียบ ทั้ง ๆ ที่พื้นฐานยังไม่แข็ง แถมสอบเทียบได้ก็ยังไม่รู้จะเรียนอะไรต่อหรือจะไปทำอะไรต่อ

9. ครูบาอาจารย์หลายท่านอ่านหนังสือมาสอน บางท่านไม่ได้สอน Java โดยตรง แต่สอนประกอบวิชาหลัก แล้วรายละเอียดด้าน
Java ให้นักศึกษาไปเรียนและฝึกเอาเอง แต่ตอนให้นักศึกษาทำโปรเจ็คต์ดันบังคับให้ใช้ Java

10. หนังสือ เอกสาร และตำราดี ๆ มักเป็นภาษาอังกฤษ และไม่ว่าจะเป็นภาษาไทย ยังไงก็ต้องอ่าน ดังนั้นต้องรักการอ่านก่อน

11. มีแนวคิดหรือพะวงกับ Database มากไป และเป็นพวกยึดติดกับ Database ประมาณว่า ER Diagram ยังไม่ออก ชั้นทำอะไร
ไม่ได้ จะคิดถึงคลาสสมองอีกซีกก็ชอบไปคิดถึง Table

12. ไม่มีพื้นฐานหรือประสบการณ์ด้าน Software Engineering ที่เกี่ยวกับซอฟต์แวร์แบบ Object
เพราะส่วนมากที่เรียนกันมาเป็นแบบ Waterfall Model

ประมาณนี้ครับ....

สำหรับบันไดขั้นแรก คือ ข้อ 1 และ 2 ครับ ถ้าสอบไม่ผ่าน แต่ข้ามไปศึกษาและทำอย่างอื่นต่อ สุดท้ายก็จะตกม้าตาย
สำหรับข้อ 2 หลายคนเข้าใจว่าไว้ไปเรียน หรือ ควรสอน ตอนปริญญาโท หรือ ตอนจะฝึกด้าน Analysis and Design แต่จริง ๆ แล้ว
ควรศึกษาก่อนศึกษา Java ด้วยซ้ำ คือแค่ศึกษาให้เข้าใจหลักการ ไม่ต้องถึงกับเขียน UML อะไรทั้งนั้น
สำหรับข้อ 3 นั้น Java Syntax จริง ๆ มีน้อยมาก ฝึกฝนแค่สัปดาห์เดียวก็พอแล้ว ไม่ต้องเอาลึกซึ้งมาก แต่ต้องได้พื้นฐานที่ดี
สำหรับข้อ 4 เอาแค่พื้นฐานและสิ่งที่จะได้ใช้บ่อย ๆ พอ พวก I/O, Thread, Swing, AWT ไม่ต้องไปศึกษา เพราะเดี๋ยวนี้
ไม่ค่อยได้ใช้โดยตรงมากนัก เอาไว้เจองานหรือโปรเจ็คต์ที่จะได้ใช้แล้วค่อยหาเวลาศึกษาก็ได้ แต่พวก Exception, Collection API
อะไรพวกนี้สำคัญ และใช้บ่อย ก็ควรมีพื้นฐานด้านนี้ไว้

แต่ก่อนผมสอน Java Programming ผมสอนหมดเลย สุดท้ายตอนหลังได้ไอเดียจาก อาจารย์ ธนชาติ นุ่มนนท์ ว่าสอนไปก็เสียเวลา
ทั้งเวลาเราและเวลาคนเรียน เช่น เรื่อง Thread ถ้าจะอธิบายให้เข้าใจละเอียดต้องใช้เวลาจริง ๆ อย่างน้อย 1 วัน หรืออย่าง I/O,
Swing ก็เช่นกัน กลายเป็นว่าทำให้คนเรียนเขาเครียดเปล่า ๆ เรียน Java แล้วรู้สึกเครียด ยาก... ทั้ง ๆ ที่เดี๋ยวนี้ศึกษา Java ไป
ก็ไปทำเว็บกันหมด I/O, Thread, Swing แทบไม่ได้ใช้เลย ดังนั้น สอน / ศึกษา เท่าที่จะได้ใช้บ่อย ๆ จริง ๆ พอ...
ศึกษาแต่พอเพียง ต้องพอเพียงอย่าโลภ คนเรียน/นักเรียน/ผู้ที่เพิ่งเริ่มศึกษา Java ส่วนมากมักคิดว่า ฉันจ่ายค่าเรียนมาแล้ว
ฉันซื้อหนังสือมาหลายบาท ฉันต้องศึกษาทุกอย่างที่มีใน Java ซึ่งในความเป็นจริงคงเป็นไปไม่ได้
เดี๋ยวนี้ผมเลิกสอน Java Programming และวิชา Programming แล้ว เพราะมักโดนด่า
เพราะวิชาด้านนี้ชอบสอนตามใจตัวเอง ตามใจนักเรียนไม่ได้... เพราะอาจโดนด่าหนักกว่า ส่วนมากมักคาดหวังว่าเรียนแล้วกลับไป
ต้องทำงานได้จริง... ซึ่งจริง ๆ แล้วคงไม่ได้ ต้องศึกษาอีกหลายอย่าง ไม่ใช่อยากเขียน Java เป็นก็ไปเรียน Java Programming
อยากเขียน EJB เป็น ก็ไปเรียน EJB Programming อย่างนี้พวกวิชา หรือตำราอื่น ๆ เขาจะมีไว้ทำไมกัน

สำหรับข้อ 5 เป็น Case ที่ผู้ที่เพิ่งเริ่มกับ Java เป็นเหมือนกันหมด ผมก็เคยเป็น เพราะมันเยอะเหลือเกิน ศึกษาออกทะเลกันหมด
ดังนั้นต้องกำหนดกรอบให้ชัดเจนว่าศึกษา Java ไปเพื่ออะไร จะเอาไปทำอะไร ทำซอฟต์แวร์หรือแอพพลิเคชั่นด้านไหน
เหมือนคนที่เพิ่งเริ่มศึกษา XML ไม่รู้ชัดเจนว่าจะเอาไปทำอะไรก็ศึกษามันหมด เดี๋ยวนี้อะไร ๆ ก็ X... อะไร ๆ ก็ ..ML เดี๋ยว XSL
XSLT XPath XXXXXXXXX...... ศึกษาไปศึกษามาจริง ๆ แค่ต้องการฝึกอ่านและเขียน Deployment Descriptor ใน J2EE
แค่นั้นเอง

สำหรับข้อ 6 จะลอกข้อสอบเพื่อน แน่ใจแค่ไหนว่าเพื่อนเราเก่งจริง!? เดี๋ยวนี้คนเขียน Java 'ได้' มากมาย แต่หลายคนในนั้นอาจ
เขียนไม่ 'เป็น' จริง ๆ ก็ได้ ดังนั้นการจะถาม ศึกษา อ่าน หรือ ฟังใคร ต้องใช้หลัก 'กาลามสูตร' ของพระพุทธเจ้าให้ดี

สำหรับข้อ 7 และ 8 ต้องอย่าใจร้อน ค่อยเป็นค่อยไป คนฉลาดย่อมเคยเป็นคนโง่มาก่อน ผู้รู้ย่อมเคยไม่รู้มาก่อน อย่าใจร้อน อย่าเห็นแก่งาน
อย่าเห็นแก่เงิน อย่าเร่งรีบอวดโชว์ใคร อย่าเร่งรีบวิ่งตามใคร ค่อย ๆ ศึกษาและฝึกฝนไป วันนี้มองไปข้างหน้าอาจเห็นแต่หลังคนอื่น
วันหน้าอาจเป็นคนอื่นที่ต้องมาเห็นหลังเราแทน

สำหรับข้อ 9 เป็นความจริงในหลายสถาบันการศึกษา อาจารย์หลายท่านจากหลายมหาวิทยาลัยก็เคยเล่าให้ฟัง (อาจารย์น่ารักและ
น่าชื่นชมมาก ที่เปิดเผยและจริงใจ) ที่หลายท่านยังไม่ชำนาญกับ Java เลย แต่ต้องสอน เพราะอาจารย์เองก็ต้องวิ่งตามโลกให้ทัน
หลายท่านน่าสงสารเพราะหลายเหตุผล เช่น บุคลากรด้านนี้มีน้อยมาก เงินเดือนน้อย เทอมหนึ่ง ๆ อาจารย์บางท่านต้องสอนไม่ต่ำกว่า
ห้าวิชา แล้วจะเอาเวลาที่ไหนไปศึกษาไปวิจัยเพิ่มเติม อาจารย์หลายท่านท้อและเหนื่อยกับการสอน Java Programming (เหมือนที่
ผมก็เคยเป็น) เพราะมันต้องปรับหลักสูตรให้สอดคล้องกันไปด้วย ถึงจะ 'Work'

สำหรับข้อ 10 ต้องฝึกเป็นคนรักการอ่าน ชอบศึกษา และต้องศึกษาภาษาอังกฤษ ไม่ต้องถึงกับไปลงเรียนภาคอินเตอร์ฯ ให้เปลืองตังค์
คนที่จะอยู่รอดกับ Java ได้ต้องรักการศึกษาแบบกัดไม่ปล่อย ปล่อยเมื่อไหร่โดนกระแสเทคโนโลยีพัดตกเหวตาย ดังนั้นใครที่ไม่ชอบ
อ่านหนังสือ ไม่ชอบศึกษาเรียนรู้อะไรใหม่ ๆ ไม่ชอบภาษาอังกฤษ... วันนี้อาจยังใช้ Java อยู่ แต่อีกไม่นานจะหย่าขาดจาก Java แน่ ๆ
เชื่อสิ ไม่มีใครบังคับด้วย แต่คุณเองล่ะที่จะทนตัวเองไม่ได้ และเบื่อ เปลี่ยนไปทำอย่างอื่นแทน

สำหรับข้อ 11 และ 12 เป็นพื้นฐานที่สำคัญ ต้องปรับ ต้องจูน ต้องเข้าใจกระบวนการ

======================================

ประมาณนี้ครับ (ยาวอีกละ)

ป.ล. เดี๋ยวนี้มหาวิทยาลัยไม่ใช่แหล่งความรู้ และถ่ายทอดวิชาความรู้อีกต่อไป แต่เป็น 'ธุรกิจ' ด้านการศึกษาชนิดหนึ่ง
แข่งกันเข้าไป...

minimalist (ณรงค์)
3 มกราคม 2550

# comment by myself
- อือ ผมชอบข้อ 7 นะ เราพยายามหาความรู้เรื่องนั้นเรื่องนี้มากเกินไป ทำให้ ไม่ได้เรื่องซักกะอย่างเลย
เหมือนตัวเองมากเลย อยากรู้นั้น นี่ไปหมดทุกอย่างแต่ มันไม่ได้เรื่องซักกะอย่าง เลยครับ ^^'
- ต่อไปจะศึกษาแต่เรื่องที่ชอบครับ
- แล้วก็อีกอย่างที่โดนมาก ข้อ5 ครับ มีเยอะจริงๆ นะ เลยไม่รู้จาเริ่มตรงใหนดีอ่ะ - -

No comments:

Post a Comment