อยากเป็นโปรแกรมเมอร์ต้องทำยังไง

อยากเป็นโปรแกรมเมอร์ต้องทำยังไง

บทความนี้เป็นคำแนะนำ จากความคิดเห็นส่วนตัวของผม

จุดเริ่มต้น

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

ปล. บทความนี้ยาวนิดนึงนะครับ

สำรวจตัวเอง

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

ไม่ว่าคุณจะอยากเป็นโปรแกรมเมอร์เพราะอะไรผมอยากให้คุณถามตัวเองว่า มันคุ้มค่าพอที่จะเหนื่อยหรือไม่

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

มหาลัยไม่ได้เน้นสอนเขียนโค้ด

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

คนที่เขียนโค้ดไม่ได้แล้วบอกว่าเพราะมหาลัยไม่ได้สอนเขียนโค้ดนั้นผมคิดว่าเขาเข้าใจผิด

โปรแกรมเมอร์เป็นงานที่สบาย แต่ว่าไม่สบาย

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

โปรแกรมเมอร์เป็นงานที่รายได้ดี …ถ้าเก่ง

ใช่ครับหลายๆ คนอาจจะเห็นประกาศรับสมัครงานโปรแกรมเมอร์เงินเดือนเริ่มต้น 60 - 100k บางคนเป็นฟรีแลนซ์นั่งจิ้มๆ คอมก็มีเงินใช้แล้วไม่ต้องไปทำงานประจำ ใช่ครับโปรแกรมเมอร์เป็นอาชีพที่รายได้ดีขนาดนั้นเลยเหลาะ แต่ว่าไม่ใช่ทุกคนครับที่จะได้รายได้ดีแบบนั้น โปรแกรมเมอร์จบใหม่รายได้เริ่มต้น 15,000 ขึ้นไปขึ้นอยู่กับความสามารถ ตัวผมเองเงินเดือนเริ่มต้นก็ได้แค่ 18,000 การที่คุณเป็นโปรแกรมเมอร์ที่เงินเดือน 40k++ คุณต้องมีอะไรซักอย่าง เช่น เป็นโปรแกรมเมอร์ที่สามารถจบงานคนเดียวได้ สื่อสารภาษาอังกฤษได้ แกะ Requirement เก่ง

เป็นโปรแกรมเมอร์ที่เก่งไม่ยาก แต่ก็ไม่ง่าย

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

เทคนิคการเป็นโปรแกรมเมอร์ที่เก่งก็แค่ฝึก

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

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

การฝึกเป็นโปรแกรมเมอร์

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

คิดโจทย์

ก่อนอื่นคุณต้องเข้าใจก่อนว่าทำไมถึงต้องมีซอฟแวร์ ก็เพราะคุณมีปัญหาครับ คุณมีความต้องการ คุณมีความ need อะไรซักอย่าง เช่น มีคนทำ lazada เพราะว่ามีคนต้องการขายของ มีคนทำแอพ line man เพราะว่ามีคนขี้เกียจไปซื้อของกินเอง มีคนทำ GRAP, Uber เพราะ Taxi มัน #@$%#$@^ เพราะฉะนั้นคุณลองคิดโจทย์ดูครับ ว่าคุณมีปัญหาอะไร อยากจะแก้ปัญหาอะไร

มีคนทำ lazada เพราะว่ามีคนต้องการขายของ มีคนแอพ lineman เพราะว่ามีคนขี้เกียจไปซื้อของกินเอง

ออกแบบ

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

การเลือกใช้ภาษา

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

  • โปรแกรมเมอร์ที่เก่งๆ นั้นไม่ยึดติดกับภาษาครับ แน่นอนว่าแต่ละคนจะมีภาษาที่ตัวเอง Pro ภาษาที่ชอบที่รักหนึ่งภาษา แต่ว่าถ้าให้ไปเขียนภาษาอื่นเขาก็สามารถเขียนได้ครับ
  • ทุกภาษาเขียนโปรแกรมในโลกคล้ายๆ กันคือก็มี if - else, loop, ตัวแปร, ฟังชันคล้ายๆกัน ดังนั้นการที่เราสามารถเขียนภาษานึงจนเข้าใจวิธีคิดจนทะลุปรุโปร่งแล้วนั้น เราก็จะสามารถไปเขียนโปรแกรมภาษาอื่นได้ครับ แน่นอนว่าอาจจะต้องเปิด Google ไปด้วยแต่ทุกวันนี้มีโปรแกรมเมอร์คนไหนไม่เปิด Google ตอนทำงานบ้าง?

อย่ากลัว error

แน่นอนครับสิ่งที่โปรแกรมเมอร์มือใหม่กลัวที่สุดคือ error (ถ้ามือเก๋าจะกลัว prod issue 5555) ผลจากการกลัว error คืออะไร ไม่กล้า save ครับ เขียนโปรแกรมสำหรับบางคนแล้วไม่กล้า save กล้ว compile พอเราไม่กล้า save ไม่กล้า compile ก็ทำให้เราไม่รู้ครับว่าเราทำไปถูกหรือเปล่า ผมบอกเลยครับ เวลาเจอ error ให้ยิ้มแล้วบอกว่าได้เวลาเก็บ exp แล้ว ยิ่ง error ยาก error ยาว error เยอะนี่ยิ่ง exp เยอะครับ ทุกครั้งที่เราจัดการ error ได้หนึ่งตัวเท่ากับเรา level up ไปอีกขั้น ไม่ต้องกลัวว่าจะเจอ error ที่แก้ไม่ได้เพราะทุกอย่างที่เราทำผมมั่นใจว่ามันมีคนเคยทำมาก่อนเคยเจอปัญหาเดียวกันมาก่อน แล้วทั้งนั้นครับ

บทส่งท้าย

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

คุณสามารถบอกใครๆ ได้ว่าคุณสอบตก เพราะอาจารย์สอนไม่รู้เรื่อง แต่สุดท้ายคุณก็ยังสอบตก ในขณะที่เพื่อนของคุณสอบผ่านอยู่ดี

ของแถม

ผมไม่อยาก แนะนำภาษาที่ใช้เขียนให้ผู้อ่านฟังเพราะว่ามันสามารถ เลือกได้หลากหลาย และแล้วแต่คนจะคิดมากๆ แต่สำหรับคำที่เข้ามาอ่าน เผื่ออยากได้ Guide ผมแนะนำให้คุณศึกษา LAMP Stack (Linux Apache MySQL PHP) และเรื่องพวกนี้

  • ER - Diagram, Flowchart, Activity Diagram เป็นแผนภาพสำหรับใช้ออกแบบระบบ ออกแบบฐานข้อมูลต่างๆ
  • PHP สำหรับเชื่อมต่อกับฐานข้อมูลคิดซ่ะว่าเป็นสมองของเรามีหน้าที่คิด เลือกเฟรมเวิร์คซักตัวที่ชอบ
  • Javascript สำหรับทำให้หน้าเว็บของเราขยับนู่นนี่นั่นได้ อาจจะเป็นเหมือนมัดกล้ามเนื้อบนใบหน้าของเรา Javascript อันนี้จำเป็นมากเพราะสามารถเอาไปใช้ต่อยอดได้เยอะ ในปัจจุบัน
  • Bootstrap เป็น front end สำหรับตกแต่งหน้าเว็บไซด์ของเราให้สวยงามขึ้น เป็นเหมือนเครื่องสำอางราคาแพง แบบแค่ใช้ก็ดูดีขึ้นแล้ว 5555 จริงๆ มีหลายแบรนด์ แต่แบรนด์นี้มีคนใช้เยอะที่สุด คนใช้เยอะ = มีคนช่วยแก้บัคเยอะ
  • MySQL เป็นฐานข้อมูลพื้นฐานที่จะทำให้คุณได้เรียนรู้คำสั่งประเภท SQL ซึ่งเรียกว่าใช้กันทั้งโลก (เพราะโลกนี้มันมีแค่ NoSQL ไม่ก็ SQL 55555)
  • phpMyAdmin เป็น DBMS (โปรแกรมจัดการฐานข้อมูล) สำหรับ MySQL นั่นเหลาะสามารถใช้งานง่าย และ free เป็นพื้นฐานสำหรับใช้งาน DBMS อื่นๆ
  • Visual Sutdio Code เป็น Text Editor เอาไว้เขียนโปรแกรมนั่นเหลาะครับ เป็นเหมือนไม้กายสิทธิ์ คู่กายของโปรแกรมเมอร์เอาไว้ เสกโค้ดต่างๆ ขึ้นมา ถ้าเราใช้คล่องก็จะมีประโยชน์กับเรามากๆ ซึ่งจริงๆ มันก็มีมากมายหลายค่ายมากๆ ถ้าใครคอมแรงๆ ลง Atom แล้วลง package power mode ก็ช่วยให้เขียนโปรแกรมสนุกขึ้นเยอะนะครับ

ประมาณนี้ครับถ้าคุณเข้าใจ และสามารถใช้เครื่องมือพวกนี้ได้ซัก 60%++ คุณก็จะสามารถทำเว็บๆ นึงให้งานได้แล้วครับ และอีกเหตุผลนึงที่ผม แนะนำให้คุณใช้ LAMP Stack คือมันง่ายที่สุดแล้วครับ แค่คุณคลิ๊กลงโปรแกรมประเภท MAMP XAMPP WAMP …AMP คุณก็จะได้ environment ที่เหมาะกับการเขียนโค้ดแล้วครับ

แต่ว่าถ้าคุณชอบความลำบาก หรืออยากเริ่มอะไรยากๆ ผมแนะนำให้ลอง

  • เปลี่ยน PHP เป็นภาษาอื่นเช่น Go, Java, C#, Node.js หรือคุณจะลองใช้ Noob Engine ดูก็ได้นะอิอิ ภาษาพวกนี้ค่าตัวเริ่มต้นแพงกว่า PHP พอสมควร
  • Javascript ลองใช้พวก Framework ดังๆ Angular (เรามีสอนนะ อิอิ Angular), React, Vue ซักตัวนึง ยกเว้น jQuery (น่าจะต้องรู้ไว้ใช่ว่าอยู่แล้ว) ถ้าคุณเขียนได้ซักหนึ่งตัว เชื่อผมเถอะ อนาคตสบาย

สู้ๆ ครับผมสามารถเขียนโปรแกรมได้ ทุกคนก็สามารถทำได้

Share: Twitter Facebook
Freeweed's Picture

About Freeweed

Freeweed is a programmer, freelance, thinker, dreamer, weed smoker and more.

Thailand, Bangkok noob-studio.github.io