ใครอยากเป็น อาชีพโปรแกรมเมอร์ ก็ควรรู้เรื่องเหล่านี้

อาชีพโปรแกรมเมอร์

คนจบสาย IT ComSci ComEng ที่ชอบเรื่องการ Coding ก็มักจะเลือกทำสายงานการเป็น อาชีพโปรแกรมเมอร์ ซึ่งมันก็มีนิยามเรียกที่หลากหลายไม่ว่าจะเป็น Deverloper ทำมาระดับซีเนียร์ หรือ มาเป็น Software Engineer หน้าที่จริงๆ ก็เป็นการ Coding เพื่อให้งานออกมาสำเร็จ

ผมเองก็คงทำงานสายนี้มาพอสมควร เลยอยากลองเรียบเรียงตามความเข้าใจในอาชีพนี้ดูนะครับ

มาทำความเข้าใจ อาชีพโปรแกรมเมอร์ พร้อมกัน

ประเภทของโปรแกรมจะแบ่ง 3 แบบ

  • โปรแกรมให้บริการด้านข้อมูล
  • โปรแกรมเกม
  • โปรแกรมเชื่อมต่อกับอุปกรณ์

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

งานพัฒนาซอฟแวร์ หลักแบ่งเป็นหลายส่วน แต่โปรแกรมเมอร์จะมีหน้าที่หลักๆ อยู่ 2 ส่วน คือ Front End และ Back End

ซึ่งไม่ว่าจะเป็นการพัฒนาซอฟแวร์ที่เป็นเว็บไซต์ หรือ โปรแกรมมือถือ หลักๆ ก็จะมี 2 หน้าที่นี่เป็นหลัก

Front End

หน้าที่ของ Front End คือ การทำหน้าตาให้ดูหน้าใช้ พวกสี การจัดเมนู หรือ ที่ยุคใหม่เรียกว่า UX/UI นั้นแหระครับ สำหรับคนพัฒนาเว็บไซต์อาจจะเป็นเรื่องของการใช้พวก HTML Jquery CSS มาทำให้หน้าตาดูหน้าใช้ ปัจจุบันก็จะมีพวก JS Framework ต่างๆ มาช่วยพัฒนาหน้าตาให้ใช้ทำงานได้ง่ายขึ้น ดีขึ้น เร็วขึ้น ซึ่งก็แล้วแต่ว่าคนที่ไปคุยงานมาเขาจะเครื่องมือไหนในการทำงาน

อย่างโปรแกรมบนมือถือ ก็แล้วแต่ว่าอยากใช้อะไรพัฒนา จะทำโดยตรงกับ Xcode , Android  หรือ ใช้เครื่องอย่าง React หรือ Ionic เข้ามาช่วยพัฒนาเพื่อให้ทำครั้งโปรแกรมทีเดียวทำได้หลาย Platform พร้อมกันเลยก็ได้

ซึ่งหน้าที่ของ Front End จะมีหน้าที่ทำให้หน้าตาสวยใช้งานได้ง่ายแล้ว ก็ยังต้องเชื่อมต่อกับคนทำ Back End ด้วยข้อมูลในการส่งเข้าไปให้ถูกต้องกับการทำงาน และ รอรับข้อมูลจาก Back End เพื่อทำงานต่อด้วย

Front End นอกจากทักษะ Coding แล้ว ก็ต้องใช้ความ Creative เพื่อชิ้นงานออกมาดี คนใช้แล้วชอบอีกด้วย

Back End

หน้าที่ของคนทำ Back End คือ การทำให้ Flow ของการทำข้อมูลใช้งานได้งานได้อย่างถูกต้อง และ นำส่งข้อมูลให้กับ Front End ได้อย่างถูกต้อง ซึ่งจะเป็นเรื่องของการทำตัวบริการขั้นตอนต่างๆ ให้ถูกต้องตาม ตามความต้องการของลูกค้า จะพูดถึงการลงข้อมูลในฐานข้อมูล การบันทึกลงฐานข้อมูล หรือ การอัพเดทข้อมูลต่างๆ ในฐานข้อมูลเป็นหลัก นอกจากนั้นต้องทำความเข้าเกี่ยวกับ Business Logic ของลูกค้าว่า ข้อมูลที่ได้มาต้องทำอะไรบ้าง เช่น บริการเปิดสมุดบัญชีของธนาคาร service ที่เราต้องทำอาจจะเป็น ดึงข้อมูลจาก Table A มาก่อนว่า คนนี้เคยมีสมุดบัญชีของเรารึยัง ถ้ายังก็ให้เพื่อข้อมูลลง Table B ได้เลย แต่ถ้าเคยมีแล้ว ก็ให้เพิ่มข้อมูลบางอย่างลง Table C ก่อน จากนั้น ถึงลงใน Table B ได้ ซึ่งข้อมูลตรงนี้ตรงนี้จะได้มาจาก SA (System Analysis) เขาอาจจะเขียนมา หรือ มาอธิบายให้เราฟัง ก็แล้วแต่ที่ หรือ แผนของแต่ละคนเป็นยังไง

นอกจาก Service ที่ต้องทำโดยตรงแล้ว บางทีอาจจะต้องทำส่วนของ Webservice เพื่อรองรับการทำงานของเว็บอื่นให้มาเชื่อมต่อกับระบบเราอีกด้วย

Back End นอกจากทักษะ Coding แล้ว ต้องทำความเข้าใจเกี่ยวกับ Service ให้มากๆ จะได้เข้าใจ Flow ของข้อมูล

ใครอยากเป็นสายไหนก็ลองเลือกดูเอาเองว่า เราชอบแนวทางไหน

เราควรเลือกภาษาอะไรในการเขียนดี?

php java c# python ios android mysql oracle ฯลฯ

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

การเป็นโปรแกรมเมอร์ที่ดีควรเป็นอย่าไร?

เปิดใจเรียนรู้สิ่งใหม่เสมอ

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

ภาษาอังกฤษ

สิ่งสำคัญที่สุดคือ ต้องอ่านให้ได้ เพราะว่าเวลาติดขัดคนที่ช่วยเราได้ส่วนใหญ่จะเป็นคนต่างประเทศ ดังนั้น อ่านเข้าใจก็ช่วยแก้งานของเราได้ แต่การก๊อปโค้ดมาแก้ได้จริง อย่าลืมปรับโค้ดด้วยว่ามันมีประสิทธิภาพด้วย เวลาเขียน email ก็ต้องเขียนเป็นภาษาอังกฤษ (ซึ่งบางทีส่วนใหญ่เป็นคนไทย จะเขียนภาษาอังกฤษทำไมก็ไม่รู้ แต่หัดเขียนไปเถอะดีแล้ว)

เขียนโค้ดให้สะอาด

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

เรียนรู้เรื่อง Soft skill

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

ข้อเสียของการเป็นโปรแกรมเมอร์

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

การจ้างงานโปรแกรมเมอร์

  • บริษัทจ้างทำงานเอง ได้สวัสดิการจากบริษัทโดยตรงปกติเงินเดือนจะไม่เยอะมาก
  • เป็นเอาท์ซอสของบริษัทที่มาจ้างอีกที ได้สวัสดิจากต้นสังกัดที่อยู่ปกติเงินเดือนจะสูงกว่าที่ประจำ

สายอาชีของการเป็นโปรแกรมเมอร์

โปรแกรมเมอร์ >>>  ซีเนียร์ >>> SA >>> BA >>> Project Manager >>> CTO

วิธีหาเงินทางอื่นจากการเป็นโปรแกรมเมอร์

  • เป็น Freelance ให้โปรเจคอื่นๆ
  • เขียนเกมให้คนอื่นเล่น (ติดโฆษณา หรือ ซื้อไอเทม)
  • เขียนโปรแกรมดีๆ ให้คนอื่นใช้

สรุป

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

ปล.เดี๋ยวไว้จะเอาโค้ดที่เขียน Ionic Framework ที่เคยเขียนเล่นมาแชร์นะ ให้มือใหม่ที่สนใจอยากพัฒนามือถือได้เรียนรู้กัน