บทความนี้เป็นของคุณ Terry Karavoulias ที่ทำงานด้านการพัฒนา Website, Software และ Service มายาวนาน เคยมีโอกาสได้ร่วมงานกับผู้บริหาร เหล่า Mentor และ Full Stack Developer มากมาย เขาพบว่ามีหลายคนที่ต้องเจอกับปัญหาต่าง ๆ หลายเรื่องที่คล้าย ๆ กัน รวมทั้งตัวเขาเองด้วย ในบทความนี้ Terry จะมาถ่ายทอดถึง ปัญหายุ่งยากที่ Developer มักต้องเจออยู่เสมอ แม้พวกเขาจะทำงานมานานแล้วก็ตาม
1. ไม่จำเป็นต้องสร้าง “ฟาร์ม” เพียงแค่ต้องการ “ไข่” เป็นอาหารมือเช้า
เรามักพบเห็นสิ่งนี้กันตลอดเวลา นั่นหมายถึง Developer หลายคนมักทำงานที่มากเกินความจำเป็น(Over-Engineering) ใน Project ที่ไม่ได้ซับซ้อนอะไร เพียงเพราะคิดว่าพวกเขาอาจต้องเพิ่ม Feature พิเศษบางอย่างเข้าไปทั้งที่ไม่ได้อยู่ในแผนแต่แรกเลย สิ่งนี้ทำให้ Code ซับซ้อนมากขึ้น ใช้เวลาในการเขียนนานกว่าเดิมและอาจเกิน Deadline แถมต้อง Test มากกว่าเดิมด้วย แทนที่พวกเขาจะจดจ่อเฉพาะสิ่งที่ทำอยู่ ไม่ใช่จดจ่อกับสิ่งที่ Project (อาจ)มีในอนาคต เมื่อ User เริ่มใช้ Product ของคุณ คุณอาจต้อง ”Rewrite” Feature พิเศษเหล่านั้นขึ้นมา เนื่องจากได้ Feedback จาก User จริง ๆ ซึ่งอาจไม่เป็นไปตามที่คุณคาดหวังไว้แต่แรก
2. เลือก Tools ที่คุณต้องการจะใช้งาน
กรณีที่คุณเริ่มต้นจากศูนย์ มันอาจจะดีกว่าหากคุณเลือกใช้ Tool ที่ได้รับการพิสูจน์มาแล้วว่า เหมาะสมและตรงกับความต้องการของ Project ของคุณ Project ของคุณควรเสร็จสมบูรณ์และทำทุกอย่างตามที่คุณคาดหวังไว้ด้วย Version ปัจจุบันของ Tool เหล่านี้ หากคุณกำลังคิดว่า “Framework นี้อาจล้าสมัยเมื่อคุณทำงานเสร็จ” หรือ “Feature นี้อาจพร้อมให้ใช้งานในอีก 2 เดือนข้างหน้า” นี่เป็นสัญญาณว่า Tool ตัวนี้ไม่น่าจะตรงกับความต้องการของคุณ นอกจากนี้หากพิจารณาที่ Open Source Project ให้ดูว่ามันมีการ Update บ่อยแค่ไหน, มีปัญหาที่รอการแก้ไขมากน้อยแค่ไหน, มี Contributor มากน้อยแค่ไหน หากเป็น Project เก่า ๆ หรือแทบไม่มี Contributor เลย คุณก็อาจจะต้องมองหาที่อื่น
3. เรียนรู้วิธีใช้งาน Tools
หากคุณกำลลังใช้ Framework อาจมีวิธี Built-in Solutions มากมายสำหรับปัญหาที่คุณกำลังพยายามแก้ไขอยู่ บางทีอาจมีตัวช่วยพิเศษบางอย่างสำหรับ Database Queries หรือ Array/Object Manipulation หรือบางครั้งที่มี Custom Code มากมายที่สามารถแทนที่ด้วย Solution ง่าย ๆ ที่ Framework มีไว้ให้แล้ว อ่าน Document ก่อนจะเริ่มทำส่วนที่ยังไม่เคยทำ อย่ากลัวที่จะลงไปดู Code ของ Framework ซึ่งไม่เพียงช่วยให้คุณเข้าใจว่า Function นั้น ๆ ทำงานอย่างไร แต่การดู Code ที่ถูกเขียนขึ้นอย่างมืออาชีพจะช่วยให้คุณพัฒนาทักษะของคุณได้
ตรวจสอบให้แน่ใจว่าคุณใช้ Editor หรือ IDE ที่ดีและเหมาะสมแล้ว เรียนรู้ Keyboard Shortcuts และ Code Snippets ของพวกมัน สร้าง Snippets ของคุณเองเพื่อเพิ่มความเร็วในงานทั่วไป สิ่งสำคัญที่สุดคือ การเรียนรู้ที่จะ Debug คุณสามารถใช้ตัว Debugger ได้กรณีที่ใช้ไม่นานมากในการแก้ไขปัญหา มันจะแสดงให้คุณเห็นค่าทั้งหมดของตัวแปรที่ใช้งานอยู่ทั้งหมด และมันจะช่วย Guide คุณผ่าน Code Paths ซึ่งวธีนี้มีประโยชน์และช่วยประหยัดเวลาได้มาก
4. การ Comment ที่ไม่ดี อาจแย่กว่าการไม่ Comment อะไรเลย
Bad Comment หมายถึงอะไร มันเป็น Comment ที่ถูกเขียนไว้ทั้งที่ทุกอย่างก็ชัดเจนอยู่แล้ว มันไม่ได้บอกว่า Code ใน Block นั้นทำอะไร เช่น Function ที่ชื่อว่า FetchExtractProcessData ซึ่งมี Comment เขียนว่า “Function นี้รับผิดชอบการ Fetching, Extracting และ Processing ข้อมูล” ซึ่งมันไม่ได้อธิบายอะไรที่มีประโยชน์เพิ่มขึ้นมาเลย นอกจากนี้ยังรวมถึง ข้อความที่ไม่ได้รับการ Update/ล้าสมัยไปแล้ว อาจเป็น Code ที่ไม่ได้ถูก Maintain แล้วหรือเป็น Code ที่แย่ เป็นต้น คุณไม่จำเป็นต้อง Comment เพื่อระบุหรืออธิบายให้ชัดเจนถึงวิธีการทำงานของ Framework ก็ได้ สรุปคือให้มองว่า อะไรจำเป็นหรือไม่จำเป็น
5. คนอื่นที่อ่าน Code ของคุณ สามารถเข้าใจได้หรือไม่?
นี่เป็นส่วนที่สนุก มีใครที่สามารถอ่าน Code ของคุณแล้วเข้าใจทันทีโดยที่ไม่มีปัญหาหรือไม่? จากตัวอย่าง Function ที่ชื่อ FetchExtractProcessData ในหัวข้อที่แล้ว ถือเป็นตัวอย่างของการตั้งชื่อที่ไม่ดีนัก เพราะมันไม่ได้อธิบายว่า Function นั้นกำลังทำอะไรอยู่ และการใช้คำ Verb หลาย ๆ คำก็ดูจะมากเกินความจำเป็น
มันเป็นเรื่องสำคัญอย่างมากที่ Functions, Classes และตัวแปร ควรถูกตั้งชื่ออย่างเหมาะสมและชัดเจน ไม่ควรตัดคำหรือย่อให้สั้นจนไม่เข้าใจความหมาย ใช้ภาษาที่เข้าใจง่าย แต่ก็ไม่ควรยาวเกินไป ให้อยู่ที่ 3 – 5 คำกำลังดี ใช้ Code Linter และ Formatter เพื่อทำให้สิ่งต่าง ๆ เป็นระเบียบและอ่านง่าย ตรวจสอบให้แน่ใจว่า คุณได้ทำตาม Standard ที่มีอยู่แล้วสำหรับภาษา Programming แทนที่คุณจะสร้างมันขึ้นมาเอง
6. ส่วนของ Frontend ที่ User เห็น สำคัญกว่า Backend
เชื่อว่า คงมี Developer หลายคน ที่รู้สึกขัดแย้งกับประเด็นนี้ แต่ส่วนของ Frontend ก็ถือว่าสำคัญกว่าส่วนของ Backend อยู่ดี Frontend ของคุณถือเป็นส่วนที่ต้อง Focus เป็นลำดับต้น ๆ เว้นเสียแต่ว่า Project ของคุณไม่มีส่วนที่ต้องเกี่ยวข้องกับ User หรือมีวัตถุประสงค์ที่จะถูกใช้งานโดย Applications หรือ Services อื่น ๆ
คุณค่อยพิจารณาในเรื่องของ Scaling, Caching และ Optimizations ในลำดับหลัง ๆ ได้ อย่างไรก็ตาม คุณคงจะไม่มี User เป็นล้าน ๆ คนได้ตั้งแต่ช่วงแรก ๆ หรอก หากคุณสามารถมี User ได้ขนาดนั้น ก็ไม่แปลกหากจะเกิดปัญหาบ้าง และถือว่าคุณโชคดีมาก ลองนึกถึง Website และ App ทั้งหมดที่คุณใช้งานอยู่ คุณใช้งานเพียงเพราะพวกมันมีเทคโนโลยีที่ดีและใหม่ล่าสุดหรือไม่? คำตอบคือ “ไม่” ที่คุณใช้ ก็เพราะ พวกมันนำเสนอ Content บางอย่างในรูปแบบที่ทำให้คุณเข้าใจได้ง่าย และสร้างประสบการณ์ที่ดีให้กับผู้ใช้งานอย่างคุณ
ไม่ใช่ว่า Backend Code ไม่สำคัญไปซะทีเดียว เพราะหากไม่มีรากฐานที่ดี Project ทั้งหมดก็จะไม่สำเร็จ อย่างไรก็ตาม อย่าใช้เวลาให้มากเกินไปในการทำงานกับสิ่งต่าง ๆ ที่มีเพียงคุณหรือคนจำนวนน้อยเท่านั้นที่จะได้เห็นหรือใช้งานมัน หรือสิ่งนั้นไม่ได้มีความสำคัญต่อความสำเร็จของ Project ของคุณ ให้คิดถึงภาพรวมทั้งหมดอยู่เสมอ
7. คุณกำลังสร้างบางสิ่งเพื่อคนที่เป็น Target จริงๆ ไม่ใช่สำหรับ Engineer
มันเป็นเรื่องสำคัญที่คุณควรจะรู้จักว่า กลุ่มเป้าหมายหรือ User ของคุณคือใคร แล้วสร้างประสบการณ์ที่ดีให้แก่พวกเขา คุณไม่ควรใช้ภาษาที่ Engineer หรือ Developer เท่านั้นที่จะเข้าใจ ไม่ว่าจะเป็น “Abort”, “System failure”, “Critical issue” ล้วนเป็นคำที่ทำให้ User รู้สึกกลัว พยายามใช้ภาษาง่าย ๆ ที่คนทั่วไปใช้และเข้าใจได้ อย่าเอาคำจาก Database มาใช้แบบตรง ๆ เช่น ใช้ “Destroy” เพื่อบอกว่า Record นั้นถูกลบออกจาก Database เป็นต้น เช่น หากคุณใช้ “Your comment has been successfully removed” แบบนี้ดูจะเข้าท่ากว่าการใช้ “Success: Record was destroyed”
ข้อคิดสิ่งท้าย
เชื่อว่าคุณคงเจอกับสถานการณืข้างต้นมาแล้วไม่มากก็น้อย หากมีโอกาสอยากให้ลองย้อนกลับไปเพื่อดูในภาพที่ใหญ่ขึ้น อะไรคือสิ่งที่คุณกำลังทำอยู่เพื่อให้ก้าวหน้าขึ้น หรือ คุณใช้เวลามากเกินไปในสิ่งที่ไม่สำคัญอยู่หรือไม่ พยายามทำทุกอย่างให้ Clean และเรียบง่ายเข้าไว้ และอย่าลืมว่า กลุ่มเป้าหมายของคุณเป็นใคร ที่สำคัญที่สุดคือ ขอให้สนุกกับมัน คุณไม่ควรรู้สึกว่า Coding คืองานที่น่าเบื่อ
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 แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่