ถ้าพูดถึงนักพัฒนาซอฟต์แวร์ (Software Developer) หรือที่ใครหลายคนเรียกกันสั้น ๆ ว่า Developerแน่นอนว่าคนที่ทำอาชีพเหล่านี้ต้องคลุกคลีกับธุรกิจที่ต้องใช้เทคโนโลยี ไม่ว่าจะเป็นการเก็บหรือวิเคราะห์ข้อมูล รวมไปถึงการพัฒนา Application เพื่อตอบโจทย์ในการบริการหรือขายผลิตภัณฑ์ให้กับลูกค้า วันนี้ JobThai จะพาไปพูดคุยกับ คุณแก้ว มัทนพล คงอุทัยกุล Technical Lead จาก NocNocแพลตฟอร์มออนไลน์ที่ครบเครื่องเรื่องวัสดุและอุปกรณ์ตกแต่งบ้าน
ถ้าสงสัยว่า Developer เขาทำงานกันยังไง ไปดูพร้อมกันเลย!
ผมเรียนจบจากคณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย สาขาวิศวกรรมคอมพิวเตอร์ครับ ตั้งแต่จบมาผมก็ทำงานสาย Developer มาตลอดเลย ตอนแรกก็เป็น Developer แล้วก็มาเป็น IT Consultant ตอนนี้มาเป็น Technical Lead อยู่ที่ NocNoc ครับ
แบ่งเป็น Front-End กับ Back-End ถ้า Back-End สิ่งที่เขาต้องทำก็คือเข้าไปอยู่กับ Data จำนวนมากบางทีต้องอยู่กับตรรกะและการคิดคำนวณต่าง ๆ บางทีต้องเข้าไปติดต่อสื่อสารระหว่างระบบต่าง ๆ ทั้งภายในและภายนอก อย่าง NocNoc ต้องมีการสื่อสารกับขนส่งต่างๆ หรือว่าการทำพวก Online Payment ที่เป็นพาร์ทเนอร์ของเรา เพราะงั้นส่วนนี้เขาก็จะมีความยากในแบบของเขา
ส่วน Front-End เขาก็จะมีความละเอียดอ่อนในแบบของเขา เพราะเขาต้องทำหน้า UI ให้มันเหมือนกับสิ่งที่ทีมได้ดีไซน์เอาไว้ บางทีก็ต้องทำปุ่มให้มันตรงกับดีไซน์แบบเป๊ะ ๆ ตรงตามพิกเซล แต่ว่าถ้าเกิดเราชอบอะไรสวย ๆ งาม ๆ อยู่แล้วเนี่ย เวลาเราทำตรงนี้ มันก็จะทำให้บางคนรู้สึกมีความฟินกับผลงานตัวเอง
ผมขอสโคปมาในทีม Product นะครับ เพราะว่า NocNoc ของเรา Developer จะอยู่ในทีม Product เราก็จะมี Product Manager ที่เขาจะเป็นคนคิด Product ของเขาขึ้นมา จะทำเป็นตัว Business Requirement มันก็จะเป็นตัวที่บอกว่า Product ของเขาเนี่ย ในแง่ธุรกิจมันต้องทำอะไรได้บ้าง ก็ลิสต์เป็นข้อ ๆ ออกมา แล้ว Product Manager เขาจะไปคุยกับ Designer เพื่อที่จะสร้าง Product Design ทำให้สิ่งที่อยู่ในหัวที่เป็นข้อ ๆ เขียนมาออกมาเป็นหน้าตา หลังจากนั้นเขาก็จะเอาสิ่งนี้ไปคุยกับ Developer เพื่อให้ Developer วิเคราะห์ บอกมาว่ามันเป็นไปได้ไหม ยากไปรึเปล่า ต้องใช้เวลานานแค่ไหน หรือต้องใช้เทคโนโลยีอะไร จะเอาเข้ามาเชื่อมต่อกับระบบเก่าของเราได้ยังไง
Developer ของ NocNoc นอกจากจะต้อง Coding แล้วก็ต้องวิเคราะห์ในส่วนนี้ด้วย หลังจากที่เราวิเคราะห์เสร็จแล้ว ก็จะได้เป็น Technical Requirement เขาจะบอกว่าเราต้องทำ Database ไหม ต้องมีระบบอะไร ติดต่อกับอะไรบ้าง หลังจากนั้น Developer ถึงจะเริ่ม Coding ครับ เขาก็จะ Code แล้วก็ทดสอบ Code เหมือนกับว่าเขาต้องเอางานของเขาขึ้นไปอยู่บน Server จริงที่ให้ทุกคนสามารถเข้ามาใช้งานได้
โดยวิธีการนำขึ้น Server ก็คือ เราเขียนโปรแกรมของเราขึ้นมาเป็น Code เราก็ต้องทำการ Build ซึ่งก็คือการแปลง Code ตัวหนังสือให้ออกมาเป็นโปรแกรม ถ้าเกิดเป็นโปรแกรมที่เราใช้ ก็เป็นเหมือนตัวที่เราสามารถ Double Click เปิดขึ้นมาได้ ส่วนนี้เรียกว่าการ Build พอมันเป็นโปรแกรมที่อยู่บน Cloud บน Server เราต้องมีกระบวนการอีกกระบวนการนึงก็คือการ Deploy ซึ่งก็คือการเอาสิ่งนั้นขึ้นไปวางไว้อยู่บน Server แล้วก็สามารถเปิด Public ให้คนเข้ามาใช้งานได้ หลังจากได้ตัวนี้ขึ้นมา ทุกคนโอเคกับคุณภาพของงานแล้ว มันก็จะมีการ Deploy ขึ้นไปในขั้นถัดไป จะเป็น UAT ให้ผู้ใช้งานเข้ามาลองใช้ หรือว่า Deploy ขึ้นไปที่ Production เลยก็มี
ขอแบ่งออกเป็นหลาย ๆ ส่วนแล้วกันครับ ส่วนแรกจะเป็นส่วนของการใช้ Tools ที่ Developer ทุกคนต้องใช้ก็จะเป็น IDE หรือที่เราเรียกว่า Integrated Development Environment ตัวนี้ก็จะเป็น Tools ที่ช่วยให้เราเขียนโปรแกรมอีกทีนึง Tools ตัวนี้ในแต่ละภาษา ในแต่ละ Tech Stack มันก็จะมีความนิยม มี Tools ที่ต่างกันออกไป อย่างพวก Java ก็จะมี IntelliJ IDEA หรือ Eclipse หรือบางคนก็จะใช้ VS Code ตรงนี้ก็จะอยู่ที่ความชื่นชอบของแต่ละคน
ต่อมาก็จะเป็น Logical Skill ครับ การคิดคำนวณ พวก Logic วิธีการคิดที่มีตรรกะ มีเหตุผลครับ แล้วก็จะเป็นเรื่องของหลักในการ Coding และโครงสร้างในการ Coding ครับ Programmer ที่ดีเขาจะมีแพทเทิร์นในการเขียนโปรแกรมแตกต่างกันออกไป โปรแกรม 1 โปรแกรม Programmer 2 คนอาจจะเขียนออกมาได้ไม่เหมือนกัน ซึ่งเขาก็จะมีหลักการ เช่น ต้องเขียนให้อ่านง่าย เข้าใจง่าย สามารถเอา Code มาใช้ซ้ำได้ และเปิดให้ Code ของเราสามารถ Extend เพื่อที่จะเพิ่มความสามารถของมันได้ในอนาคต ส่วนสุดท้ายของ Skills ที่ผมคิดว่าต้องมีก็จะเป็นความรู้พื้นฐานเกี่ยวกับเทคโนโลยี เช่น พวก Network Standards ที่ใช้ในการติดต่อกันของโปรแกรมต่าง ๆ แล้วก็จะเป็นส่วนของ Security ตรงนี้ก็เป็นเรื่องสำคัญที่ควรจะต้องรู้ครับ
Soft Skills ที่ต้องมีแน่ ๆ เลยก็คือการสื่อสาร เพราะว่าเราต้องทำงานเป็นทีมอยู่แล้ว การสื่อสารให้ทุกคนเข้าใจตรงกันก็เป็นส่วนที่มีความสำคัญมาก พอพูดถึงการสื่อสาร สิ่งที่ขาดไม่ได้เลยก็จะเป็นภาษาครับผม นอกจากจะทำให้เราสามารถพูดคุยสื่อสารกับคนทั้งในทีม นอกทีม อย่างลูกค้า ถ้าเขาเป็นคนต่างชาติ เราก็สามารถใช้ภาษาพูดคุยสื่อสารกับเขาได้ มีเรื่องของความสามารถในการเข้าถึงแหล่งความรู้ต่าง ๆ ด้วย เพราะว่าแหล่งความรู้ส่วนใหญ่ในคอร์สออนไลน์ หนังสือ ส่วนมากเป็นภาษาอังกฤษ ถ้าเรามีความรู้ที่เป็นภาษาอังกฤษ เราก็จะสามารถพัฒนาตัวเองได้รวดเร็วขึ้นด้วยครับ
นอกจากนี้ก็ยังมีเรื่องของทักษะการนำเสนอ แล้วก็ทักษะการวาดภาพเพราะว่าบางครั้ง ส่วนใหญ่โพสต์ของเราบางทีมันมีความซับซ้อน เกี่ยวโยงกับระบบอื่น ๆ การที่เราสามารถวาดภาพ วาดแผนผัง แล้วก็สามารถอธิบายการทำงานของระบบของเราได้ก็จะทำให้เราสามารถพูดคุย สื่อสารกันได้อย่างเข้าใจตรงกัน ลดความผิดพลาดในอนาคตได้ด้วยครับ
มีหลายครั้งนะครับที่เราเห็นว่า Developer ต้องอยู่กับงาน บางทีอยู่กับงานงานหนึ่งใช้เวลาหลายชั่วโมง เพราะฉะนั้นต้องเป็นคนที่มีความสามารถในการพุ่งชนกับปัญหา เข้าไปแก้ปัญหา มีความขี้สงสัย ชอบตั้งคำถาม ชอบหาคำตอบ คนที่สามารถอยู่กับปัญหา ไม่กลัวปัญหา ก็จะเป็นคนที่สามารถอยู่กับงาน Developer ได้อย่างมีความสุข ชอบเรียนรู้ด้วยตัวเอง อย่างที่บอกไปว่าเรามี Material เยอะมากในโลกออนไลน์ เพราะฉะนั้นคนที่สามารถเรียนรู้ด้วยตัวเอง ก็จะเป็นคนที่พัฒนาในสายงานนี้ได้รวดเร็วครับ
ใน NocNoc ถ้าเป็น Developer เราจะมีเริ่มตั้งแต่ Junior, Middle แล้วก็ Senior หลังจากนั้นเราก็จะเปิดโอกาสให้เขาได้เลือกสายเป็น People Manager หรือจะเป็นสายที่เป็น Specialist หรือ Individual Contributor ถ้าเป็น People Manager ก็จะเป็นคนที่คอยดูแลคนในทีม คอยดูแลน้อง ๆ ดูแลเรื่องของสารทุกข์สุขดิบต่าง ๆ ตั้งแต่เรื่องที่ไม่ใช่เรื่องงาน ไปจนถึงเรื่องงาน หรือว่าเรื่องที่เป็นเชิงเทคนิค ส่วนที่เป็น Specialist หรือ Individual Contributor คนนี้จะเป็นคนที่รู้ลึกรู้จริงในส่วนที่เขาทำ เป็นแบบอย่างของคนต่าง ๆ ในบริษัท ส่วนใหญ่จะเป็นเรื่องเชิงเทคนิคครับ อย่างเช่น Front-End เขาก็จะรู้หมดเลยว่า แนวทางปฏิบัติที่ดีที่สุดในการเขียนโปรแกรมของเขาควรจะเป็นยังไง แล้วก็ให้คนทั้งในบริษัท แล้วก็นอกบริษัท สามารถที่จะเดินตามแนวทางของเขาได้
ในเรื่องของความคาดหวังตามตำแหน่งของ Developer กับ Technical Lead เนี่ยก็จะมีความแตกต่างกันอยู่ในระดับหนึ่ง อย่าง Senior Developer เราก็คาดหวังว่าเขาต้องส่งมอบงานได้ ต้องสามารถที่จะให้คำปรึกษาให้คำแนะนำกับคนในทีมของเขาได้ ต้องมีความรู้ความสามารถในเทคโนโลยีที่เขาใช้ แต่พอมาเป็น Technical Lead จากที่ต้องคุยกับทีมใดทีมนึงแค่ทีมเดียว ก็จะขยับเป็น 2-3 ทีมขึ้นไป เราก็ต้องคุยกับคนที่มากขึ้น ต้องมีความรู้ในเทคโนโลยีต่าง ๆ ที่แต่ละทีมใช้เพิ่มขึ้นมา แล้วก็ต้องเรียนรู้ธุรกิจ รู้การทำงานต่าง ๆ มีความเข้าใจถึงการเชื่อมต่อกันของงานในแต่ละทีมด้วย เราก็ต้องตรวจดูจนแน่ใจว่างานในแต่ละทีมสามารถที่จะเอามาเชื่อมกันได้อย่างราบรื่น
งานที่คนซึ่งเคยเป็น Developer มาก่อนทำแล้วจะได้เปรียบ ก็เป็นพวกสายงานข้างเคียงอย่าง Business Analyst, Product Manager, Quality Assurance หรือพวก Designer เท่าที่ผมสังเกตนะครับคนในสายงานนี้เขาจะมีความท้าทายที่คล้าย ๆ กันอย่างหนึ่งก็คือ บางครั้งเขาต้องทำความเข้าใจกับระบบที่เขาทำงานด้วย เพราะงั้นถ้าเรามีความรู้ในเชิงเทคนิคอยู่แล้ว มันก็ทำให้เราออกแบบงานหรือทำความเข้าใจระบบต่าง ๆ ได้ง่ายขึ้นครับ
ถ้าถามความเห็นของผม Demand ของงานสาย Tech ยังมีอยู่ค่อนข้างเยอะ เหตุผลก็คือเมื่อก่อนเราอาจจะคิดไม่ถึงว่าการที่เราเดินออกไปซื้อของ มันจะเป็นดิจิทัลได้ยังไง แต่ว่าตอนนี้เราก็เจอมันอยู่ทั่วไปรอบตัวเรา นอกจากนี้อยากจะเสริมนิดนึงว่า Demand เยอะ แต่ว่าเวลาที่เรารับคนเข้ามา เรามองหาคนมาขับเคลื่อนธุรกิจของเรา บางที่ก็ไม่ได้มีความสามารถที่จะรับคนที่เป็น Junior มาก ๆ เข้ามาได้ เนื่องจากช่วงนี้มันมีการแข่งขันที่ค่อนข้างสูง ไม่ใช่ทุกที่ที่จะสามารถรับคนที่ต้องเข้ามาสอนงานเพิ่มได้ เขาก็อยากได้คนที่เข้ามาขับเคลื่อนธุรกิจของเขาได้เลย ในทางกลับกันถ้าเราเป็นคนที่เก่งอยู่แล้ว มีความสามารถตรงนี้อยู่แล้ว ทุกที่ก็ต้องการอย่างดุเดือดมาก
สำหรับผมคิดว่าดีที่สุดเลยก็เป็นการเรียนในคณะที่เกี่ยวกับซอฟต์แวร์หรือเทคโนโลยีสารสนเทศ พวก IT ก็จะมีวิศวกรรมคอมพิวเตอร์ วิทยาการคอมพิวเตอร์ หรือวิศวกรรมซอฟต์แวร์ Tech Stack หรือ เทคโนโลยีที่อยู่ในสายงาน Developer เปลี่ยนแปลงค่อนข้างเร็ว บางครั้งหลักสูตรที่มหาวิทยาลัยมีก็อาจจะอัปเดตตามไม่ทัน ถ้าจะให้ผมแนะนำก็คือถ้าเรารู้อยู่แล้วว่าเราชอบอะไร ธุรกิจจะมีพวก Tech Stack ที่ไม่เหมือนกัน จะมี Tech Stack ที่ได้รับความนิยมแตกต่างกันไป ถ้าเรารู้ตรงนี้อยู่แล้วเราก็เข้าไปจับ เข้าไปศึกษาใน GitHub Online Community ที่สามารถโหลด Code เข้ามาดูได้ แน่นอนว่าถ้าเรามีประสบการณ์ตรงจากการฝีกงานก็จะช่วยให้เราพัฒนาตัวเองหรือรู้ว่าเราชอบอะไรได้ง่ายขึ้นด้วยครับ
คนที่อยาก Reskill เพื่อย้ายสายงาน ทำได้แน่นอนครับ แล้วยิ่งเป็นสายงาน Developer เรามี Material มีคอร์สออนไลน์ มีวิดีโอในยูทูปที่เราสามารถไปเรียนฟรี ๆ แล้วก็ยังมีคอร์สออนไลน์ที่เราเสียเงินจ่าย เราสามารถได้ใบรับรองมาใส่ในเรซูเม่เราได้ด้วย อย่างที่บอกไป Tech Stack ในสายงานของเรามีหลากหลายมากและพัฒนาค่อนข้างเร็วด้วย เพราะฉะนั้น ถ้าเราอยากทำงานที่ NocNoc เราก็ไปดูว่า NocNoc เปิดรับสมัครงานโดยใช้ Tech Stack ตัวไหน เราก็จะมี Java ที่ใช้ในตัว Back-End ทั่วไป แล้วก็จะมี Golang ที่เป็น New Generation Back-End Service ของเรา ถ้าเป็น Front-End เราก็จะมี React ครับ เป็น ReactJS ที่เอาไว้ใช้ทำตัว Front-End
อันที่ผมใช้อยู่ทั่ว ๆ ไป ก็จะมี Google Feed ซึ่งค่อนข้าง Personalize ความสนใจของเราได้ค่อนข้างดี อีกส่วนหนึ่งก็จะเป็น Medium เป็นเว็บไซต์ที่รวบรวมบทความออนไลน์ที่ค่อนข้างมีคุณภาพ และเราก็สามารถที่จะไปติดตามผู้เขียนที่เราชื่นชอบ หรือว่าติดตามหัวข้อที่เราสนใจได้ครับ ถ้าเราสนใจพวก Open Source Community เขาจะมี Code ที่เปิดให้พวกเราสามารถเข้าไปอ่านเข้าไปศึกษา หรือว่าเข้าไปเขียน Code เพื่อพัฒนาตัวโปรแกรมที่พวกเขามีอยู่ได้ด้วยครับ
เวลาดูเรซูเม่ อย่างแรกที่ผมดูเลยคือ ผู้สมัครเขาถนัดตรงไหน มี Tech Stack ตัวไหน หรือ Tools อะไรที่ถนัด ถัดจากนั้นผมจะมาเริ่มดูส่วนที่เป็นประสบการณ์การทำงาน ดูว่าเขาเคยทำอะไรมาบ้าง แล้วมันสามารถมาปรับใช้กับตำแหน่งที่เราเปิดรับได้หรือเปล่า ถามว่าพอร์ตฯ จำเป็นไหม ก็ไม่ได้จำเป็นครับ เป็นคะแนนเสริม คือถ้ามีก็ดี เพราะว่าเราเข้าใจครับว่า Developer ส่วนใหญ่ เวลาเราทำงาน Code หรือว่า Product มันเป็นทรัพย์สินของบริษัท เราไม่สามารถที่จะเอามาเผยแพร่ได้ แต่ว่าถ้าเรามี GitHub Account ที่เรามีส่วนร่วมใน Open Source Community เช่น เราเข้าไปแก้บั๊กให้คนอื่น แล้วเราก็แนบมาในเรซูเม่ตรงนี้ก็จะทำให้ผู้สมัครมีความโดดเด่นขึ้นมาได้
ส่วนการสัมภาษณ์ เราจะมีการถามคำถามที่เป็นความรู้ทั่วไปหรือว่าเทคโนโลยี ผมคิดว่าค่อนข้างสำคัญเพราะว่าถ้าเรามีความรู้พื้นฐาน เราจะสามารถเอามาปรับใช้เอามาใช้งานกับงานที่เรายังคิดไม่ถึงได้ในอนาคต และมันก็จะช่วยลดความผิดพลาดและทำให้เราสร้างโปรแกรมที่มันมีมาตรฐานได้ครับ ส่วนใหญ่เราจะอยากรู้ว่าผู้สมัครมีความรู้จริง ๆ ในสิ่งที่เขาเขียนในเรซูเม่หรือเปล่า ถ้าเขาสามารถตอบได้ว่าสิ่งที่เขาเขียนมามันคืออะไร มันทำงานยังไง แล้วถ้าเขารู้ด้วยว่าทำไมมันถึงทำงานแบบนั้น แล้วก็สามารถเปรียบเทียบถึงข้อดีข้อเสียของ Tools หรือวิธีการทำงานต่าง ๆ ได้ ก็จะทำให้ผู้สมัครมีความโดดเด่นขึ้นมามากเลยครับ
ที่ NocNoc เราค่อนข้างจะเปิดกว้างในเรื่องของการแสดงความคิดเห็นครับ คือเราค่อนข้างเปิดกว้างและทุกคนก็พร้อมที่จะรับฟังความเห็นของเราเสมอ เรามีทีม Product ที่มีพลังงานค่อนข้างสูง ทีม Productเขาก็จะมีเป้าหมายของเขาว่าอยากพัฒนา Product พัฒนาแอปพลิเคชัน หรือซอฟต์แวร์ให้ตอบโจทย์ความต้องการของผู้ใช้งานในหลาย ๆ ด้าน ก็จะทำให้ทีม Developer ของเรามีอะไรใหม่ ๆ เข้ามาท้าทายเราอยู่เสมอ บางทีเราก็จะต้องทำอะไรใหม่ ๆ และก็มีการพัฒนาสิ่งเก่า ๆ ให้มันดีขึ้นด้วยครับ
JobThai Official Group เพื่อการหางาน หาคน และแลกเปลี่ยนประสบการณ์ในการทำงาน