See the original English version of this article here
เชื่อว่าในชีวิตการทำงานของทุกคน ล้วนเคยเจอกับเรื่องราวต่าง ๆ มากมาย ทั้งเรื่องน่ายินดีและปัญหาที่น่าปวดหัว วันนี้ทีมงานมีบทความดี ๆ ของคุณ Aphinya Dechalert ซึ่งเธอได้ถ่ายทอด 25 บทเรียน ที่ได้จากการเป็น Developer มาให้พวกเราได้อ่านกัน เชื่อว่าน่าจะตรงใจและเป็นประโยชน์กับคนไอทีโดยเฉพาะคนที่เป็น Developer
- เมื่ออยู่ใน Industry นี้ ทุกคนล้วนต้องเรียนรู้ด้วยตนเอง เทคโนโลยีเปลี่ยนแปลงไว ซึ่งมันก้าวหน้าไปไวกว่าที่คุณจะได้เรียนรู้จากในมหาวิทยาลัย ดังนั้น ไม่ต้องรีรอที่จะเรียนในมหาวิทยาลัยเพียงอย่างเดียว ควรหาทางศึกษาในช่องทางอื่น ๆ
- การศึกษาแบบดั้งเดิมยังต้องเรียนรู้กันในมหาวิทยาลัย แม้การจบปริญญาตรีจะเป็นวิธีหนึ่งในการก้าวสู่โลกการทำงาน แต่มันก็ไม่ใช่วิธีเดียว ยังมี Internet ที่มีทั้งคำแนะนำและความรู้ต่าง ๆ มากมายให้เรียนรู้
- เพื่อให้อยู่ใน Industry นี้ได้ คุณจะต้องหัดสงสัยอยู่ตลอดไป คุณต้องรู้จักถามคำถามเกี่ยวกับวิธีการทำงานของสิ่งต่าง ๆ หรือ ทำไมวิธีนี้ถึง Work โดยเฉพาะในช่วงที่คุณเกิด “ปิ๊งไอเดีย” ขึ้นมา ซึ่งทำให้ทุกอย่างลงตัว
- เมื่อเวลาผ่านไปนาน ๆ คุณอาจรู้สึกเหมือนว่า ตัวคุณเองไม่ได้พัฒนาขึ้นอย่างแท้จริง จนวันที่คุณมองย้อนกลับไปที่ Code เก่าที่เคยเขียนไว้นานแล้ว หรือ เมื่อคุณต้องอธิบายอะไรบางอย่างให้ใครบางคนได้ฟัง
- ปริมาณ Code ที่คุณเขียน สำคัญต่อ Developer มือใหม่ การเรียนรู้เรื่องการ Coding เปรียบเสมือนการเรียนรู้ในเรื่องการเขียน เพราะยิ่งคุณเขียนมากเท่าไหร่ ก็จะเริ่มสังเกตเห็นรูปแบบบางอย่าง, ความไร้ประสิทธิภาพ และวิธีแก้ไข มากขึ้นเท่านั้น
- ตอนคุณอยู่ในระดับ Junior คุณมีโอกาสที่จะทะนงตนคิดว่ารู้ไปหมดทุกอย่าง พอมีประสบการณ์มากขึ้นหน่อย คุณจะพบว่า Ego จะเริ่มลดลง และเมื่ออยู่ในระดับ Senior คุณจะสามารถให้คำแนะนำให้กับคนที่มีประสบการณ์น้อยกว่าเพื่อให้พวกเขาไปในทิศทางที่ถูกต้อง แต่อาจต้องให้พวกเขาดิ้นรนด้วยตนเองด้วยเช่นกัน เพราะมันเป็นส่วนหนึ่งของกระบวนการเรียนรู้
- Bug เกิดขึ้นเพราะมี “Knowledge Gap” Code คือสิ่งที่เกิดขึ้นจากการแปล Requirements เพื่อให้ Compiler เปลี่ยนรูปไปเป็นภาษาพูดของ Computer เมื่อมีสิ่งผิดปกติเกิดขึ้น นั่นเป็นเพราะ Developer มีปัญหาบางอย่างในการแปล
- เมื่อมีคนบอกว่า คุณกำลังทำ Agile อยู่ ก็จงแต่อย่าปล่อยให้ตัวคุณเองเข้าสู่ Planning Phase ซึ่งมันจะส่งผลกระทบโดยตรงกับคุณ เพราะนั่นยังไม่ใช่ Agile ที่แท้จริงหรอก
- ในฐานะ Developer คุณจะต้องอยู่ในสถานะที่ต้องรู้และพร้อมที่จะเรียนรู้ตลอดเวลา
- การจัด Format ถือเป็นปัจจัยสำคัญที่ช่วยในเรื่อง Readability
- Code เป็นเครื่องมือในการสื่อสาร ดังนั้น จงเขียนในสิ่งที่ทำให้คนอื่นสามารถอ่านแล้วเข้าใจ และอย่าเขียน Code ที่เข้าใจได้เฉพาะคนที่เขียนมันขึ้นมา เพราะเมื่อสิ่งนั้นเกิดขึ้น Code ก็ไม่สามารถอธิบายตัวมันเองได้ (Self-Document)
- รูปแบบของ Functional Programming มีสิ่งที่ช่วยลดความซับซ้อน ส่วนรูปแบบ Object-Oriented ก็มีส่วนที่เป็นเครื่องมือช่วยในเรื่องการจัดระเบียบและจัดหมวดหมู่ ซึ่งรูปแบบทั้งสองนี้ ไม่ได้เกิดมาเพื่อทำงานร่วมกัน แต่หากจำเป็นจริง ๆ ก็สามารถอยู่ร่วมกันได้
- การ Coding ที่เน้นให้เป็น “Best Practice” มากเกินไป สามารถนำไปสู่การเกิด Technical Debt ในระยะยาวได้
- “Code ที่สมบูรณ์แบบ” เมื่อ 5 เดือนที่ผ่านมา มีแนวโน้มที่จะเป็น Code ที่ไม่มีประสิทธิภาพ เนื่องจากการเปลี่ยนแปลงRequirements, การ Upgrade Dependency ต่าง ๆ รวมทั้ง Bug และปัญหาด้าน Logic ที่ไม่สามารถอธิบายได้
- Database ของคุณคือ ทุกสิ่งทุกอย่าง หากมีการทำอะไรที่มากเกินความจำเป็น (Over-Engineered) ก็มีโอกาสที่ Back end ของคุณจะเกิดความยุ่งยากได้เช่นกัน
- เมื่อทำงานเป็นทีม, Flat และ Automated Process ก็อาจสร้างปัญหาให้กับ Productivity ของคุณได้ โดย Flat Structure หมายความว่า คุณสามารถย้าย Code ผ่าน Pipeline ได้เร็วขึ้น และ Automated ก็หมายถึง การคลิก, การพิมพ์ และการรอสิ่งที่ต้องทำ ที่น้อยลง
- การต้องจัดการกับ Code ที่แย่ ๆ ของคนอื่น เป็นสิ่งที่ทุกคนจะต้องเจอและผ่านไปให้ได้ ให้คิดว่ามันเป็นโอกาสที่จะได้เรียนรู้จากความผิดพลาดของผู้อื่น และคุณสามารถทำสิ่งที่ดีสำหรับทิศทางในอนาคตของ Software
- คุณจะต้อง “Clean” สิ่งที่คุณหรือคนอื่นสร้างในอดีตอยู่เสมอ เพราะ Code ก็เปรียบเหมือนอาหาร ถ้ามันไม่ได้ถูกนำไปปรุง มันจะกลายเป็นของเน่าเสียได้เมื่อเวลาผ่านไป
- Work-Life Balance ยังคงสำคัญต่อ Developer เพราะเราเป็นมนุษย์ อย่าละเลยตัวเอง เพื่อน หรือครอบครัวของคุณ จงดูแลตัวเอง และอย่าปล่อยให้ Code มาครอบงำชีวิตของคุณมากเกินไป
- หากคุณรู้สึกว่าตัวเองอยู่ในภาวะเหนื่อยล้า ก็จงหยุด หยุดพักซะ จากนั้นค่อยกลับมาทำงานใหม่ แต่จงเขียน Code อย่างมีเป้าหมายหรือรู้สึกว่าสิ่งนั้นมีความหมายต่อตัวคุณเอง เนื่องจาก Software เป็นตัวเชื่อมระหว่างลูกค้าและธุรกิจ ในฐานะ Developer เรามีหน้าที่ทำให้สิ่งนั้นเกิดขึ้น ไม่เป็นไรที่คุณจะลาออกถ้าคุณรู้สึกว่าคุณไม่ได้มีส่วนร่วมหรือไม่เชื่อในสิ่งนั้นแล้ว แต่จงภาคภูมิใจในสิ่งที่คุณทำ
- อย่าไปยึดติดหรือขึ้นอยู่กับ Code ของคนอื่นให้มากเกินไป จงทำในสิ่งที่คุณได้รับมอบหมาย มุ่งเน้นการพัฒนาตนเองให้เป็นมาตรฐานก็เพียงพอ
- ถ้าไม่มีใครโทรหาคุณเพื่อเรียกสัมภาษณ์งาน ก็จงสร้างโอกาสนั้นซะ หากคุณยังไม่มีประสบการณ์ที่จะเขียนลงใน Resume ก็จงรีบหาประสบการณ์ซะ หากคุณมีเวลาช่วงวันหยุดสุดสัปดาห์และมีไอเดียดี ๆ ก็ลองทำมันดู ในฐานะของ Developer เราอยู่ในธุรกิจของการสร้าง Code เมื่อใดที่เราหยุด คือ วันที่เรามีความเสี่ยงในสายอาชีพของเรา
- อย่าเรียนรู้แค่การเขียน Code เพราะเรื่องที่สำคัญกว่าคือ ความรู้ ยิ่งคุณรู้มากเท่าไรก็สามารถเขียน Code ใน Project ของคุณได้ง่ายขึ้น นั่นเป็นเพราะ Coding กำลังเปลี่ยนแปลงโลก และมันเป็นกระบวนการที่นำไปสู่การเป็นตัวแทนของ Digital ซึ่งคุณไม่สามารถที่จะสร้างบางสิ่งได้อย่างมีประสิทธิภาพได้หากคุณยังไม่เข้าใจมันจริง ๆ
- คุณจะไม่มีวันรู้ทุกอย่างที่ต้องรู้เกี่ยวกับ Code แต่ไอเดียของคุณมีขีดจำกัด มันจะเป็นการดีที่จะมีแนวความคิดจำนวนมากและใช้เป็นแนวทางสำหรับกระบวนการสร้าง Code ของคุณ เพราะสุดท้ายคุณจะมี Software ที่มีประสิทธิภาพมากยิ่งขึ้น
- หนังสือเกี่ยวกับ Software ยังคงคุ้มค่าที่จะอ่านและลงทุนกับมัน คุณจะสามารถพบแนวคิด, ไอเดียต่าง ๆ ได้จากพวกมัน โดยเฉพาะอย่างยิ่ง Robert C. Martin และ Martin Fowler พวกเขาถือเป็นบุคคลที่สำคัญใน Industry นี้
ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) เราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 28 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานท้าทายและร่วมงานกับองค์กรชั้นนำ สามารถฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่
Source: https://medium.matcha.fyi/