มือใหม่หัดเขียนโปรแกรม เริ่มต้นอย่างไรดี
เลือกภาษาอะไรดี
ภาษาโปรแกรมในปัจจุบันมีหลากหลายภาษามาก ทุกภาษามีข้อดีข้อด้อยและข้อจำกัดต่างกัน การเลือกภาษาที่จะเขียนมีปัจจัยหลายอย่างประกอบ
- Application ที่ต้องการจะทำ เช่น Win App หรือ Web App หรือ Mobile App เราคงต้องเลือกสักอย่างเพื่อจะได้โฟกัสได้ถูกที่ตอนเริ่มต้น
- เป้าหมายงานที่ต้องการจะทำในอนาคต สำหรับคนที่มีเป้าหมายจะทำงานบริษัท หากมีบริษัทในใจแล้ว ก็ต้องคำนึงว่า บริษัทเป้าหมายที่ต้องการเขาใช้ภาษาอะไรในการทำงาน ต้องเลือกให้ถูก (ผิดภาษาเขาอาจไม่รับเน้อ) ส่วนคนที่คิดจะเป็นฟรีแลนซ์ แนะนำให้เลือกภาษาตามเทร็นด์ (หัวข้อถัดไป)
- เทร็นด์ หรือ ความนิยมในตัวภาษา จะบอกเราว่า ภาษานี้จะมีอนาคตแค่ไหน เนื่องจากการเขียนโปรแกรมเดียวกันมันสามารถสร้างได้จากหลายภาษา เช่น Web App สามารถสร้างจาก PHP ASP หรือ JAVA ...... ได้ ถ้าภาษาไหนมีแนวโน้มจะไม่เป็นที่นิยมในอนาคต ก็ไม่ควรเลือกเรียนภาษานั้นๆ
- ชุมชน หรือ Community ในสมัยนี้เวลาที่ติดขัดอะไรมันไม่ยากเหมือนสมัยผมอีกแล้ว เพราะสมัยนี้มีอินเตอร์เน็ตที่สามารถเข้าถึงได้ง่าย การศึกษา เรียนรู้ ตอบข้อสงสัยต่างๆ หรือแม้กระทั่งติดขัดอะไร สามารถหาได้จากอินเตอร์เน็ต หรือสอบถามได้จากชุมชน ยิ่งชุมชนมีความแข็งแกร่ง มีสมาชิกเยอะ นั่นหมายความว่า ภาษานั้นๆมีอนาคตกว่า
- เครื่องมือที่ต้องใช้ อันนี้คือต้นทุนแบบหนึ่ง ที่เราจะต้องจัดหามาในตอนเริ่มต้น ยกตัวอย่างเช่น จะเขียน IOS App ก็คงต้องมีเครื่องคอมพิวเตอร์ Apple ในการเขียน หรือ Web App ซึ่ง Server PHP หาง่ายกว่า ASP
เริ่มต้นก้าวแรก
นี่คืออีกคำถามที่พบบ่อยว่าเริ่มต้นอย่างไรดี ผมสรุปในแบบของผมที่ผมใช้แนะนำบ่อยๆ นะครับ
หลังจากเลือกภาษาได้แล้ว สิ่งที่ต้องศึกษาเป็นอย่างแรกคือการเรียนรู้ syntax ของภาษานั้นๆ เพราะแต่ละภาษาจะมีรูปแบบการเขียนเฉพาะตัว ซึ่งเราต้องเขียนให้ถูกหลักภาษานั้นๆ สิ่งที่ต้องเรียนรู้จริงๆในตอนเริ่มต้น คือ รูปแบบวิธีการเขียนของแต่ละภาษา การใช้คำสั่งพื้นฐานต่างๆ เช่น if case for while หรือฟังก์ชั่นพื้นฐาน เช่น echo print กฏเกณฑ์การสร้างโปรแกรมเพื่อให้ได้โปรแกรมอย่างง่าย (Hello World นั่นแหละครับ) ก้าวที่สอง
จะเป็นโปรแกรมเมอร์ ต้องสร้างโปรแกรมได้ โปรแกรมจะเล็กหรือใหญ่ไม่สำคัญ สำคัญที่โปรแกรมนั้นต้องทำงานได้ แก้ปัญหาได้ และ มีคนใช้ (ขาดข้อหนึ่งข้อใด มันก็คือไฟล์ขยะ) ตอนเริ่มต้น เรามักจะไม่รู้ว่าจะต้องเขียนโปรแกรมอะไรดี คำแนะนำจากผมคือ
- สร้างโปรแกรมเพื่อแก้ปัญหาให้ตัวเอง โดยมองว่าเรามีปัญหาอะไนในชีวิตบ้าง แล้วเลือกสร้างโปแกรมเพื่อแก้ปัญหานั้นๆ เช่น 30 แล้ว ยังไม่มีเมีย สร้างแอปหาคู่มันซะเลย ถ้าสุดท้ายเราได้คู่จากโปรแกรมที่เราสร้าง นั่นหมายความว่าเราเขียนโปรแกรมได้แล้ว การสร้างโปรแกรมเพื่อแก้ปัญหาให้ตัวเอง เราจะมีตัวเองเป็นคนตรวจสอบว่าโปรแกรมที่เราสร้าง สามารถใช้งานได้จริงหรือไม่ มีข้อผิดพลาดหรือไม่ หรือจะปรับปรุงยังไงได้
- จากที่ผมบอกไปข้างต้นว่าความสำเร็จของโปรแกรมมันวัดจากการที่มีคนใช้ ดังนั้นสำหรับมือใหม่ (ผมก็ใช้วิธีนี้มาตั้งแต่ตอนเริ่มต้น) ผมแนะนำให้เขียนโปรแกรมแจกมันซะเลย เพราะมันให้ประโยชน์หลายข้อ
- แน่นอนว่าถ้ามีคนนำโปรแกรมของเราไปใช้จริง ก็จะหมายความว่าเราสามารถเขียนโปรแกรม (เพื่อให้คนอื่นใช้) ได้ ข้อนี้สำคัญที่สุด เพราะการเขียนโปรแกรมคือการแก้ปัญหาของคน(อื่น) หรือคนที่จ้างเราเขียนนั่นแหละครับ
- มีคนรู้จักเราเพิ่มขึ้น ยิ่งมีคนใช้โปแกรมของเรามากเท่าไร มีการบอกต่อมากเท่าไร เราก็จะมีคนรู้จักมากขึ้น ส่งผลให้มีโอกาสได้งานมากขึ้น
- ทักษะที่จะขาดไม่ได้ของการโปรแกรมเมอร์คือ อัลกอริทึม การไม่เข้าใจสิ่งนี้จะทำให้เราเขียนโปรแกรมได้อย่างจำกัด หรือ เขียนได้ยากขึ้น ยกตัวอย่างเช่น ถ้าเราเก่งคณิตศาตร์ เราก็สามารถเขียนโปรแกรมจำพวก Photoshop ได้ แต่ถ้าเราไม่เก่ง สิ่งที่เราทำได้อาจเป็นแค่โปรแกรม Paint (การประมวลผลรูปภาพอาศัยการคำนวณทางคณิตศาตร์ในการทำงาน) แต่ทักษะเหล่านี้สามารถฝึกฝนได้ ยิ่งถ้าเรามีประสบกรณ์มากขึ้นเท่าไร ทักษะด้านนี้ก็จะพอกพูนมากขึ้นเป็นลำดับ
- ทักษะที่สำคัญอีกอย่างของโปแกรมเมอร์คือ ตรรกะ เพราะการเขียนโปรแกรมมีได้แค่ 2 อย่างเท่านั้นคือ จริง หรือ เท็จ และ ตรรกะของคอมพิวเตอร์ คงที่ ทุกกรณี (ไม่เหมือนคนที่ ตรรกะ แปรผันตามปัจจัยภายนอก) ดังนั้นการเขียนโปแกรมจึงจำเป็นต้องมีตรรกะที่ชัดเจน เพราะการใช้ ตรรกะผิด อาจทำให้ผลลัพท์ผิดได้
- ทักษะสุดท้าย คือ ทักษะด้านภาษาอังกฤษ เนื่องจากคนออกแบบโปรแกรมส่วนใหญ่ใช้ภาษาอังกฤษ การใช้ภาษาอังกฤษได้คือสิ่งสำคัญที่จะทำให้เราได้รับข้อมูลเพิ่มเติมจากชุมชนที่แข็งแกร่งกว่า เช่น Stack overflow ซึ่งเบื้องต้นทักษะทางภาษาที่สำคัญคือ อ่านออก คำแนะนำสำหรับผมคือ หมั่นอ่านครับ แล้วแปลไปทีละตัว ซึ่งวิธีที่ง่ายกว่าก็ใช้การแปลของ Google เข้าช่วย ถึงภาษาที่ได้มันจะแปลกๆสักหน่อย แต่ก็พออ่านรู้เรื่อง ซึ่งถ้าเราฝึกฝนบ่อยๆ อีกหน่อยก็จะอ่านได้เอง