เริ่มต้นเขียนโปรแกรม เริ่มยังไงดี ? (2019–20 ยุคที่ AI มาแรง)

ปี 2018–19 ปีที่การเขียนโปรแกรมกำลังบูม ปี 2019–20 ปีที่ AI กำลังมาแรง …แล้วคุณเริ่มเขียนโปรแกรมหรือยัง ?

วันนี้จะมาพูดถึงเรื่องการเริ่มต้นเขียนโปรแกรมในปี 2019–20 เหมาะสำหรับผู้เริ่มต้นสนใจการเขียนโค้ด ในบล็อกนี้จะพูดถึงสกิลที่จำเป็นจริงๆและทักษะการเรียนเขียนโปรแกรม โดยหลายๆคนอาจจะมองข้ามมันไป โดยผมเชื่อว่าพื้นฐานพวกนี้จะทำให้คุณสามารถเรียนรู้/เพิ่มสกิลการโค้ดได้รวดเร็วแน่นอน

โปรแกรมมิ่งสำคัญอย่างไร ? สำคัญกับใคร ?

สำคัญอย่างไร ? โปรแกรมมิ่งไม่ได้สำคัญแค่กับสายคอมฯเท่านั้น แต่มันยังสามารถเพิ่มทักษะด้านการคิด อัลกอริทึม ให้แก่ผู้ที่เรียนได้อีกด้วย สามารถฝึกทักษะการคิดแบบขั้นตอน/กระบวนการได้ ทำให้เวลาเราจะทำอะไรต้องมีการคิด วางแผน และแก้ไขปัญหาเฉพาะได้

สำคัญกับใคร ? คนที่ต้องการพัฒนาตนเอง หรือ ไม่อยากให้ตัวเองตกยุค เพราะในยุคปัจจุบันการเขียนโค้ดก็เริ่มเข้ามามีบทบาทในชีวิตประจำวันมากขึ้นเรื่อยๆ AI ก็กำลังมา ไม่ว่าจะคนอายุเท่าไรก็สามารถเขียนโปรแกรมได้ แม้ว่าคุณจะไม่ได้เอาการเขียนโค้ดไปใช้ในสายอาชีพคุณ แต่มันก็จะฝึกทักษะกระบวนการคิดอย่างเป็นขั้นตอนให้คุณอย่างแน่นอน

สกิลที่จำเป็นสำหรับโปรแกรมเมอร์

สกิลที่จำเป็นในที่นี้ไม่ได้หมายถึงภาษาคอมที่ใช้ เฟรมเวิร์คที่ใช้ แต่เป็นสกิลพื้นฐานที่ควรจะมี หากต้องการจะอยู่ในสายโปรแกรมเมอร์ โดยประกอบไปด้วย

  • ภาษาอังกฤษ การอ่าน/การเขียน

เพราะภาษาคอมที่เราเขียนมันคือภาษาอังกฤษไงละ ถ้าเราไม่สามารถเข้าใจ Error ที่เกิดขึ้นได้ คำสั่งที่ใช้ หรืออ่าน Document ของภาษานั้นๆ (เพราะเป็นภาษาอังกฤษ) แน่นอนว่าลำบากแน่นอน หรือแม้แต่การเขียนโปรแกรม เราก็ต้องตั้งชื่อตัวแปรให้เหมาะสมกับสิ่งที่จะใช้ด้วย การตั้งชื่อตัวแปร i , j , k ในการทำงานจริงๆ บางทีคนที่มาอ่านโค้ดต่อจากเราก็จะงงๆหน่อยนะ ว่ามันจะสื่อว่าใช้งานอะไร (คอมเม้นก็ช่วยได้ในเรื่องนี้) เพราะฉนั้นถ้าเรามีทักษะภาษาอังกฤษก็สามารถตั้งชื่อตัวแปรได้ถูกต้องมากขึ้นอีกด้วย

  • อัลกอริทึม

สุดยอดสกิลที่จำเป็นต้องมี เคยมีอาจารย์ท่านหนึ่งได้บอกกับผมว่า

“syntax การเขียนโค้ดเนี่ยเรียนในห้องได้ แต่อัลกอริทึมเนี่ย คุณต้องฝึกมันบ่อยๆใช้มันประจำถึงจะเก่งได้”

มันคือคีย์เวิร์ดสำคัญที่ทำให้คุณสามารถแก้ไขปัญหาในงานต่างๆได้ เพราะเมื่อเกิดปัญหาขึ้น คุณจะค่อยๆคิดหาทางแก้ปัญหาที่เกิดขึ้นทีละขั้นตอน จนงานนั้นแก้ไขสำเร็จ โดยทางแก้ปัญหาอาจจะมีได้หลายๆทางแล้วแต่ “อัลกอริทึม” ของแต่ละคน ยิ่งอัลกอริทึมของคุณยิ่งดี คุณก็จะแก้ไขปัญหาที่ซับซ้อนหรือยุ่งยากได้ง่ายขึ้น

  • สกิลการเรียนรู้นอกห้องเรียน

อันนี้มาจากบทความอีกอันที่ผมเคยเขียน บทความอันนี้การเรียนรู้ในห้อง VS การเรียนรู้นอกห้อง (โปรแกรมเมอร์)เมื่อมาถึงยุคที่สื่อการเรียนรู้ในอินเตอร์เน็ตมีจำนวนมากและสดใหม่กว่าความรู้ในห้องเรียน เรายังจำเป็นต้องเข้าเรียนอีกไหม…medium.com

ถ้าเกิดคิดว่าสายโปรแกรมเหมือนสายอื่นๆ ที่อาศัยเรียนในห้องเรียนอย่างเดียว วันๆอ่านแต่หนังสือ นั่งดูคนอื่นอธิบายทั้งวันโดยไม่ลงมือทำ คุณคิดผิด! เพราะสายนี้จำเป็นจะต้องเรียนรู้นอกห้องเป็นจำนวนมาก ไม่ว่าจะลงคอร์สเสริม เรียนใน youtube หาโปรเจ็คทำเล่นๆ เพื่อพัฒนาทักษะอย่างไม่มีสิ้นสุด

  • ประสบการณ์

ประสบการณ์ก็เป็นอีกสิ่งที่จำเป็นสำหรับสายเขียนโปรแกรม ยกตัวอย่างเช่นเขียนโปรแกรมจนเทพมีประสบการณ์เยอะ พอเห็นโจทย์ข้อนี้ แก้ไขได้แบบสบายๆ หรือเข้าใจการทำงานทุกๆอย่างของภาษา Python หรือจะเป็นเวลาเจอปัญหาในงานก็สามารถแก้ได้แบบง่ายๆ เพราะมีประสบการณ์มาก่อน

  • พูดรู้เรื่องและเข้าสังคม

ที่จริงข้อนี้เป็นข้อที่ตลกร้ายของโปรแกรมเมอร์มากคือเรามักจะคุยกับคนอื่นไม่รู้เรื่อง แม้แต่โปรแกรมเมอร์ด้วยกันเอง ลองฝึกพูดฝึกอธิบายให้มันเข้าใจได้ง่ายๆบ้าง เขาจะได้ไม่หาว่าเราบ้า (เรื่องจริงที่แสนเจ็บปวด)และที่สำคัญเข้าสังคมบ้าง มีงาน meeting ที่เกี่ยวกับสายงานเราก็ไปงานบ้างเพื่อรู้จักคนอื่นในสายงานเราบ้าง สายงานเราโลกมันกลม

ช่วงธันวาปี 61 ผมเจอรถชน คนที่ชนผมก็คือโปรแกรมเมอร์จ้า….โลกกลมไหมละ….

เริ่มต้นเขียนโปรแกรม เริ่มจากภาษาไหนดี ?

เว็บที่ผมใช้อ้างอิงคือ IEEE โดยที่คุณสามารถคลิกที่ภาษาคอมพิวเตอร์เพื่อดูว่าภาษาไหนเป็นที่นิยม แต่ว่ามันจะอ้างอิงจากต่างประเทศเป็นหลักนะครับ

ภาษางู (Python) มันมาแรงจริงๆ

ที่จริงแล้วหลายๆคนจะบอกว่าภาษาไหนไม่สำคัญ ขอแค่ฝึกอัลกอหรือภาษาอังกฤษแล้วเริ่มเขียนภาษาอะไรเลยก็ได้ ซึ่งมันก็จริงแต่ถ้าใครยังไม่รู้จะเริ่มยังไงจริงๆอยากจะ Follow ตามประสบการณ์คนอื่นก็ตามนี้เลย !

สำหรับผม

ผมเริ่มจาก vb ช่วง ม.3 จากนั้นไป c++ ยาวๆเลยจนมหาลัยช่วงปี 2 ก็ทำงานเขียนเว็บด้วย C# แล้วก็มาทำด้าน Machine Learning ใช้ python โดยแต่ละครั้งที่ผมเปลี่ยนภาษาคอมฯ ผมไม่ต้องไปเรียนพื้นฐานอะไรมาก เพราะเรียนพื้นฐานจาก C++ มาแน่นดีแล้ว จากนั้นก็ไปเรียน syntax ของภาษาอื่นได้เลย ทำให้ต่อยอดภาษาอื่นได้เร็วมาก

โดยจากความรู้สึกผม

ถ้าเริ่มฝึกเขียนโปรแกรมมือใหม่ภาษา python จะง่ายสุด แต่คนที่เขียน python เป็นภาษาแรก อาจจะงงถ้าไปจับพวกภาษา C (ประกาศ Type ฟังก์ชั่น, Type ของตัวแปร) เลยจะแนะนำให้เป็น C,C++ เป็นภาษาแรกเพราะได้ฝึกอัลกอริทึมเยอะสุด (เล่นท่ายากไม่ได้) แถมพวก C,C++ มันเป็นระเบียบกว่าเพราะแยก main , function ประกาศประเภทตัวแปรไว้ชัดเจนกว่าและมี pointer นรกด้วย

ซึ่งภาษาที่เราเลือกตอนแรก ควรจะเป็นภาษาที่ฝึกอัลกอริทึม แก้ปัญหา (แต่ไม่ควรมีปัญหามากไป) เพราะเมื่อเราได้ภาษาแรกแล้ว การจะต่อยอดเป็นภาษาต่อไปก็ไม่ใช่เรื่องยากเลย และเมื่อเรียนพื้นฐานเสร็จแล้ว ควรเรียนขั้นแอดว้านด้วยนะ เช่น พวก Sort(การจัดเรียงข้อมูล) , Tree(การจัดเรียงแบบต้นไม้), Search(การค้นหาข้อมูล) ซึ่งตัวอย่างที่ยกมาก็จะอยู่ในวิชาเรียนที่ชื่อว่า “Data Structure” ซึ่งแม้ในปัจจุบันจะมีอะไรที่สำเร็จรูปแล้ว แต่ก็ควรมีพื้นฐานในเรื่องพวกนี้ด้วยเพราะบางครั้งเราสามารถนำความรู้พวกนี้มาประยุกต์ใช้ได้กับงานของเรา

แล้วคุณมีจุดหมายปลายทางแล้วหรือยัง ?

ที่จริงแล้วข้อนี้เป็นจุดที่ทำให้หลายๆคนหลงทางหรือพัฒนาสกิลยังไม่ถูกจุด ที่จริงแล้วตอนเราเริ่มสนใจการเขียนโปรแกรมเราน่าจะมีสิ่งที่อยากจะทำในใจแล้วเพราะฉนั้นมาพัฒนาสกิลด้านนั้นให้ถึงที่สุดเลยดีกว่า และที่สำคัญความชอบของเรานั้นเปลี่ยนได้ตลอด ไม่ต้องกลัวการเปลี่ยนแปลงนะ มันยิ่งทำให้ให้เรามีประสบการณ์มากยิ่งขึ้นไปอีก

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

ยกตัวอย่างเช่น

ฉันอยากเป็น web dev ขั้นเทพที่สามารถเขียนเว็บ facebook ได้ด้วยตัวเอง ! : ให้เขียนภาษาที่ใช้กับ web จริงๆจัง เช่น PHP , Ruby , C# , Java , JS

ฉันอยากจะเขียน AI ที่ฉลาดที่สุดในโลก ฉลาดยิ่งกว่า alpha go ที่มันอยู่ในปัจจุบัน ! : งั้นก็เขียนภาษาที่มี tool ด้าน AI รองรับเยอะๆ เช่น Python , R, C, matlab

ฉันอยากทำแอพมือถือ อยากทำแอพเหมือน Line, What app หรือสร้างเกมมือถือ : งั้นก็เขียนภาษาที่ใช้กับ mobile app ที่ได้รับความนิยมโล้ด เช่น Java, Kotlin ,swift , object-C

ฉันอยากเทพสุดๆ ทำได้ทุกอย่างบนโลกของโปรแกรมเมอร์ ! : งั้นก็ฝึก algorithm ให้เก่งๆก็พอแล้วละ ภาษาไม่เกี่ยงอยู่แล้วละ 🙂

ห้ามหยุดศึกษาหาความรู้ใหม่ๆ เพราะเทคโนโลยีมันออกมาใหม่ในทุกๆวัน

แล้วฉันจะเริ่มต้นเรียนจากที่ไหนดี ?

ตรงนี้ขอแยกเป็น 2 กรณี

  1. คุณเก่งภาษาอังกฤษ
  2. คุณไม่เก่งภาษาอังกฤษ

ที่แยกเพราะว่าถ้าคุณไม่แม่นภาษาอังกฤษ การที่คุณฝืนไปเรียนคอร์สที่เป็นภาษาอังกฤษคุณก็จะไม่เข้าใจแบบ 100% อยู่ดี คุณก็จะมีแต่คำถามในหัว แต่เดียวนี้คอร์สภาษาไทยก็ไม่ได้แย่แล้ว ไม่ต้องกังวลไป

ขอขอบคุณ : https://medium.com/mmp-li/%E0%B9%80%E0%B8%A3%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%95%E0%B9%89%E0%B8%99%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1-%E0%B9%80%E0%B8%A3%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B8%A2%E0%B8%B1%E0%B8%87%E0%B9%84%E0%B8%87%E0%B8%94%E0%B8%B5-2018-19-dc5075055908

ใส่ความเห็น