January 17, 2023

จบไม่ตรงสายจะเปลี่ยนสายงานมาเป็น Developer ได้อย่างไร

by Matana Wiboonyasake matana.w@aware.co.th

จบไม่ตรงสายจะเปลี่ยนสายงานมาเป็น Developer ได้อย่างไร

 

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

 

ถามตัวเองก่อนเลยว่าทำไมสนใจสายงาน Developer 

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

 

อยากเป็น Developer เริ่มต้นจากอะไรก่อนดี

  1. ค้นหาความชอบของตัวเองหรือค้นหาความต้องการของตลาด เพราะสาย Developer มีหลายสายมากๆ และอาจจะเข้ากลุ่ม Community เพื่อที่จะหา Trend ในช่วงนี้ แล้วค่อยไปดู Youtube แบบผ่านตาก่อนพอให้รู้จักสิ่งนั้นคร่าว ๆ ดูให้ครบทุกอย่างในสิ่งที่อยากเรียนรู้ พอดูแล้วหากคิดว่า อันไหนที่เราชอบสามารถไปต่อได้ค่อยไปศึกษาในระดับที่ลึกต่อไป
  2. ไม่ลองไม่รู้ ลองหาคอร์สฟรีเพื่อทดลองก่อน ถ้าแน่ใจแล้วลองขยับไปลงเรียนเขียนโปรแกรมคอร์สสั้น ๆ 3 – 6 เดือนเพื่อที่จะดูว่า เมื่อเราได้เรียนและรู้จักสิ่งนี้แล้ว เราทำได้หรือไม่ ทำแล้วชอบหรือไม่ เดี๋ยวนี้มีแพลตฟอร์มการเรียนรู้มากมายที่คุณสามารถเข้าไปเรียนเพิ่มเติมจาก tutorial ต่าง ๆ พิจารณาเลือกการเรียนการสอนที่เหมาะกับตัวเอง เราเหมาะกับการเรียนแบบไหน บางคนสามารถเรียนแบบอ่านเองได้บนออนไลน์ หรือผ่านวิดีโอตัวอย่าง แต่บางคนชอบชอบฟัง lecture เรียน onsite เพื่อที่จะถาม-ตอบได้เดี๋ยวนั้นเลย บางคนชอบอ่านเอง ปรับระดับความเร็วในการเรียนได้เอง

*จุดสำคัญที่อยากแนะนำ คือ คุณควรทำ Demo Project ออกมาให้ได้ภายหลังการเรียนจบคอร์สต่าง ๆ เพราะมันนำมาการันตีได้ว่า คุณสามารถทำอะไรได้มากน้อยแค่ไหน

 

ระหว่างเรียนควรเน้นเรื่องอะไรเป็นพิเศษ

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

 

แนะนำแพลตฟอร์มที่จะช่วยให้เราได้ฝึกความเข้าใจได้มากขึ้น

 

Codewars

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

 

CodePen

CodePen สนามเด็กเล่นของคนทำเว็บ (Playground for the front-end side of the web.) Codepen จึงเป็นที่ๆเหมาะสำหรับทดลองเว็บที่เราเพิ่งเขียน หรือหาแรงบันดาลใจทำเว็บแบบใหม่ ๆ โดยใช้ HTML, CSS และ JavaScript โดยแสดงผลแบบ real-time ซึ่งสามารถดูผลตอบรับจากสมาชิกคนอื่น และแก้ไขได้ตลอดเวลา

 

Leetcode

LeetCode เป็นเว็บไซต์ที่มีบททดสอบเกี่ยวกับ Algorithm ที่ดีที่สุดเว็บหนึ่งเลยทีเดียว มีหัวข้อที่ต้องอาศัยความรู้เกี่ยวกับ Data structures เช่น Binary trees, Heaps, Linked Lists เป็นต้น ซึ่งเนื้อหาอาจจะดู Advance กว่าเว็บไซต์อื่น ๆ สักหน่อย แต่บททดสอบต่าง ๆ ก็มีประโยชน์มากหากคุณต้องการใช้เพื่อเตรียมสัมภาษณ์งานเกี่ยวกับ Software Engineering นอกจากนี้ยังมี Section เกี่ยวกับการเตรียมตัวสัมภาษณ์งาน, บทความ และ Contest อีกด้วย

 

ถ้าเรียนรู้ด้วยตัวเองแล้วจะหาคำตอบของแต่ละปัญหาได้อย่างไร

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

นอกจากนั้นลองไปสมัครเข้ากลุ่ม Community ใน Platform ต่าง ๆ เช่น Facebook Group, Discord, Telegram, Line ฯลฯ เพราะในนั้นมีคนเก่ง ๆ มากมายที่มาแชร์และช่วยเหลือได้ ปัญหาที่เราเจอคนอื่นอาจจะเคยเจอมาเหมือนกันและมีวิธีการแก้ปัญหาที่ดีกว่า

 

พิจารณาเลือกเรียนภาษาโปรแกรมมิง จากอะไรดี

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

 

ภาษาโปรแกรมมิงแรกที่ควรเรียน

การเขียนโปรแกรม คือ การเขียนคำสั่งให้คอมพิวเตอร์ทำงานตามที่เราต้องการ นอกจากนั้นจะเรียนไปเพื่ออะไร เรามีตารางของ  www.cdn.techinasia.com เพื่อที่จะดูว่าเราควรเริ่มเรียนภาษาอะไรเป็นอย่างแรก

 

which-programming-language-should-i-learn-first-infographic-927x1024

 

  1. ต้องการเริ่มเรียนแบบง่าย แนะนำ Python
  2. ต้องการเพิ่มความยากขึ้นมา แนะนำ Java และ C
  3. ต้องการเรียนอะไรที่ยากก่อนเลย แนะนำ C++

 

นอกเหนือจากตารางด้านบนแล้วสำหรับการเรียนเพื่อเปลี่ยนสายงาน ควรศึกษาอะไรดี

  1. ต้องการเรียนเพื่อเขียนโปรแกรมบนเว็บและเพื่อการเติบโตต่อไปได้ในอนาคต แนะนำ JavaScript (สามารถทำได้ทั้ง Frontend และ Backend)
  2. ต้องการเขียนแอปมือถือแนะนำ Objective – C/ Swift สำหรับ iOS และ Java/ Kotlin สำหรับ Android หรือ Cross Platform ก็ได้ เช่น Flutter (Dart), React – Native (Javascript) , MAUI (C#) สำหรับทั้ง IOS และ Android
  3. ต้องการทำงานระดับองค์กร แนะนำ Java, C# หรือ GO
  4. ต้องการทำงานในสายเว็บ E-Commerce แนะนำ PHP
  5. ต้องการทำงานในสาย Data Science หรือ AI แนะนำ Python
  6. ต้องการทำงานในสาย Blockchain แนะนำ Javascript, Solidity, Rust
  7. ต้องการทำงานในสาย IOT แนะนำ C/ C++, Python
  8. ต้องการทำงานในสาย Game แนะนำ Unity(C#), Godot, Cocos (C++/ Javascript)
  9. ต้องการทำงานในสาย Data แนะนำ PL/ SQL

 

ที่สำคัญ คือ ควรเลือกเรียนภาษาใดภาษาหนึ่งเสียก่อน เพราะภาษา programming ต่าง ๆ จะมีการหยิบยืมเอาเทคนิคกันมาได้ เมื่อเราเขียนภาษาหนึ่งได้ ภาษาอื่น ๆ ที่เหลือเราก็จะเรียนรู้ได้ง่ายขึ้นด้วย

 

นอกจากการเรียนภาษา + Syntax แล้ว ควรเรียนรู้อะไรต่อ

  1. การใช้ Framework และ library ต่าง ๆ ทั้ง SQL สำหรับจัดเก็บและประมวลผลข้อมูลในฐานข้อมูลแบบเชิงสัมพันธ์ หรือตอนนี้ที่กำลังครองตลาดเลยจะเป็น React/ Vue และสำหรับคนทำเว็บไซต์ ควรฝึก Inspector tools ใน browser เพื่อให้เราตอบคำถามได้ว่า browser เราส่งข้อมูลอะไรไป-กลับกับ server บ้าง

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

 

ตัวอย่าง Framework and library ที่รองรับภาษาคอมพิวเตอร์ต่างๆ

ภาษาคอมพิวเตอร์ตัวอย่าง Framework
PHPLaravel, Laminas, Symfony, CodeIgniter, CakePHP
JavaScriptReact, VueJS, Angular, jQuery, NodeJS
JavaSpring Boot, Struts, Maven, Vert.x, Hibernate
ASP.NET CoreABP Framework, Mono, Spring.NET, ASP.NET Boilerplate, CoreFX
Node.jsExpress.js, Koa.js, Meteor.js, Socket.io
PythonDjango, Flask, Plone, Pyramid
RubyRuby on Rails, Sinatra, Hanami, Padrino, Cuba

 

  1. การใช้ Git เครื่องมือที่ช่วยจัดการเวอร์ชันของโค้ดให้กับเรา โดยจะเก็บประวัติว่าไฟล์แต่ละไฟล์ถูกสร้าง/ลบ/แก้ไขโดยใคร เมื่อไหร่ และอย่างไรเอาไว้ทั้งหมด ทำให้เราสามารถติดตามการเปลี่ยนแปลงของโค้ดได้ตลอด หรือแม้กระทั่งย้อนเวลาโค้ดกลับไปก่อนตอนที่จะพังก็ยังทำได้
  2. การใช้ Docker แพลตฟอร์มซอฟต์แวร์ที่แยกแอปพลิเคชันออกจากกัน โดยการเรียกใช้งานส่วนเฉพาะหรือที่เรียกว่า คอนเทนเนอร์ (Container) โดย Docker Container จะมีส่วนที่คล้ายกันกับ Virtual Machine (VM) เพียงเล็กน้อย ตรงที่มันจะแยก Content ของมันออกจากซอฟต์แวร์อื่นๆ ที่กำลังทำงานอยู่ในเครื่อง

Docker Container จะเก็บเฉพาะสิ่งที่จำเป็นในการเรียกใช้บริการซอฟต์แวร์เดี่ยวๆ เช่น ฐานข้อมูล (Database) หรือเว็บเซิร์ฟเวอร์ (Web Server) ซึ่งรวมถึงบริการของตัวมันเอง ตลอดจน Dependency ต่างๆ ที่จำเป็นต้องเรียกใช้ เช่น ไลบรารีซอฟต์แวร์ (Software Library) ดังนั้น จึงไม่มี service ของระบบปฏิบัติการหลัก (Underlying Operating System Services) ใน Container แต่มันจะได้รับสิ่งเหล่านี้จากเคอร์เนล (Kernel) ของระบบปฏิบัติการหลักของคอมพิวเตอร์โฮสต์แทน

 

Soft Skill ที่จำเป็นต้องมี

นอกจากทักษะทางการเขียนโปรแกรมแล้ว เราขอแนะนำ Soft Skill ที่จำเป็นต้องมีและจะเป็นประโยชน์

กับงานสายนี้ ได้แก่

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

 

ข้อจำกัดของคนที่ต้องการย้ายสายงานมาเป็น Developer

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

 

สิ่งที่สำคัญที่สุดที่จะช่วยเพิ่มความเป็นไปได้ให้กับผู้สมัคร

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

 

คำแนะนำในการหางานและการเขียนเรซูเม่

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

 

 

อ้างอิงจาก:

www.blognone.com

www.youtube.com

www.cdn.techinasia.com

www.borntodev.com

Uncategorized