Programmer แต่ละคนล้วนมีแนวคิดการทำงานด้าน Programming ทั้งดีและแย่ ซึ่งหากคุณมีแนวคิดด้าน Programming ที่เหมาะสมแล้ว จะช่วยเพิ่มประสิทธิภาพได้มากขึ้น นอกจากจะส่งผลดีต่อตัวคุณเองแล้ว มันยังส่งผลไปถึงคนรอบข้างด้วย ดังนั้นเรามาดูกันว่า 7 แนวคิดการทำงานด้าน Programming ที่ควรมีติดตัวไว้เสมอ นั้นมีอะไรบ้าง
1. อย่าทำซ้ำ ในสิ่งที่คุณทำไปแล้ว
คุณอาจจะเคยมอง ส่วนของ Code ที่คุณเขียน แล้วคิดว่า ส่วนของ Code นี้มันช่างดูเหมือนกับ Code ที่คุณได้เขียนไปแล้ว
เชื่อว่านี่เป็นสถานการณ์ที่คุณต้องการหลีกเลี่ยง เนื่องจาก Duplicated Code จะทำให้เกิด Code Smell ทำให้การ Maintain Code ทำได้ยากขึ้น เนื่องจากเมื่อคุณแก้ไข Code ส่วนนี้ คุณก็จะต้องตามไล่แก้ไขพวกมันในจุดอื่น ๆ ด้วย ทำให้มีโอกาสที่จะเกิด Bugs ใน Code มากขึ้น
ถือว่าเป็นแนวทางที่ดีที่จะทำตาม DRY Principle (Don’t Repeat Yourself) ซึ่งหมายความว่า เมื่อคุณเขียนส่วนของ Code ที่เหมือนกันหลาย ๆ แห่ง คุณอาจจะต้อง Refactor Code ของคุณ โดยแบ่ง Code และ Logic ของคุณออกเป็นส่วนย่อย ๆ ที่จะสามารถนำมา Reuse ได้ และใช้ Code นั้นด้วยการเรียกใช้มัน เฉพาะจุดที่คุณต้องการใช้
2. เมื่อใดที่คุณคิดว่าทำงานเสร็จแล้ว ให้ทำการ Refactor
Programmer ส่วนใหญ่โดยเฉพาะผู้ที่ยังมีประสบการณ์ทำงานน้อย ๆ มักจะคิดว่า งานของพวกเขาเสร็จสิ้นเมื่อ Code ทำได้อย่างที่ตั้งใจ แต่อันที่จริงคำว่า “เสร็จสิ้น” นั้น มันมากกว่าแค่การเขียน Code เผื่อสำหรับในอนาคตด้วย
ดังนั้น ก่อนที่คุณจะกระโดดไปทำงานถัดไป คุณควรจะ Refactor Code เสียก่อน ซึ่งการ Refactor จะช่วยให้ Code อ่านได้ง่ายขึ้น มันมีโอกาสที่ Code ที่คุณเขียน ยังไม่ Clean ซึ่งคุณเองอาจจะเข้าใจมันเป็นอย่างดี แต่คุณต้องคิดด้วยว่า Programmer คนอื่นที่จะต้องมาดู Code ต่อจากคุณล่ะ พวกเขาจะรู้สึกกับ Code นั้นอย่างไร
การ Refactor จะช่วยลดความซับซ้อนของ Code ลง ซึ่งแน่นอนว่าจะทำให้ Maintain ได้ง่ายขึ้น และในระยะยาว การ Refactor จะส่งผลดีต่อ Code ของคุณอบ่างแน่นอน
3. Focus ไปที่ Business
Programmer ส่วนใหญ่มักจะให้ความสำคัญกับการเรียนรู้ Tech Stack ที่อาจไม่ได้ใช้จริงในธุรกิจ แต่ก่อนที่คุณจะเชี่ยวชาญใน Tech Stack มันเป็นเรื่องสำคัญที่คุณจะต้องคำนึงถึงธุรกิจเป็นหลัก
Developer บางคนสนใจเฉพาะเรื่อง Technical ในงานของพวกเขาเท่านั้น พวกเขาไม่ได้สนใจเรื่องธุรกิจหรือปัจจัยทางเศรษฐกิจที่ทำให้พวกเขาได้มีตำแหน่งงานให้ทำเลย
คุณกำลังทำงานเพื่อสร้างมูลค่าให้กับธุรกิจ หรือ คุณใช้เวลามากมายไปกับบางสิ่งที่อาจไม่ได้มีความสำคัญจริง ๆ กันแน่ นี่เป็นคำถามสำคัญที่คุณควรถามตัวเอง
4. แบ่งการ Commit งานเป็นส่วนย่อย ๆ
การแบ่งการ Commit งานเป็นส่วนย่อย ๆ จะทำให้ Developer สามารถเขียน Commit Message ที่มีประโยชน์ได้
Code ของคุณจะง่ายต่อการ Debug และเมื่อคุณแบ่งการ Commit งานเป็นส่วนย่อย ๆ ไปเรื่อย ๆ มันทำให้ง่ายที่จะ Roll Back ไปยัง Commit ก่อนหน้านี้เพื่อตรวจสอบว่า มี Bug ในส่วนนั้นหรือไม่ ทำให้สะดวกในการแก้ไข Code ส่วนที่มีปัญหามากขึ้น ไม่ต้องมานั่งไล่ดู Code ทั้งหมด
หากคุณเขียน Code ยาว ๆ แล้วค่อยมา Commit ครั้งเดียว มันอาจส่งผลเสียได้มากกว่า เพราะคุณอาจแก้ไข Code หลายจุดในการ Commit แต่ละครั้ง มันอาจเป็นเรื่องยากที่จะหาว่าปัญหาเกิดตรงไหนบ้าง
แล้วในส่วนของคนที่ต้อง Review Code ล่ะ? Reviewer เองมักไม่ค่อยชอบเมื่อมีการ Merge Code มากนัก เพราะการ Merge Code อาจทำให้ Code เกิดปัญหาได้
การ Review Code จะทำได้ง่ายขึ้นหากแบ่งการ Commit งานเป็นส่วนย่อย ๆ มันทำให้ Reviewer สามารถตรวจสอบการเปลี่ยนแปลงของ Code ไปทีละส่วน รวมทั้งทำให้พวกเขาสามารถเข้าใจเหตุผลของการเปลี่ยนแปลง Code ได้ง่ายขึ้น
5. Consistency เป็นกุญแจสำคัญ
หากคุณตัดสินใจที่จะใช้ Camel Case กับตัวแปรของคุณ ก็จงใช้มันให้ตลอด หรือ หากต้องการใช้ Space แทนการใช้ Tab ก็จงทำแบบนั้นทั้งหมดใน Code ของคุณ ไม่ว่าอะไรก็ตามที่คุณทำใน Code ของคุณก็ควรทำในรูปแบบเดียวกันหรือสอดคล้องกันทั้งหมด (Consistency)
ปัญหาเกี่ยวกับความไม่สอดคล้อง(Inconsistency) นั้น มาจากความจริงที่ยากจะหลีกเลี่ยงคือ “เวลา” คือตัวปัญหาของ Software นั่นคือ ยิ่งมีการใช้งาน Software ยาวนานขึ้นเท่าไร ก็ยิ่งมีคนที่ทำงานกับ Software มากขึ้นเท่านั้น ซึ่งมันอาจนำไปสู่ความยุ่งเหยิง
แล้วคุณจะทำอย่างไร เพื่อให้เกิดความสอดคล้องกันล่ะ? สิ่งแรกที่คุณควรทำ ก็คือ เลือก Style Guide เมื่อคุณมี Style Guide ของคุณแล้ว คุณก็สามารถใช้ Linter เป็นตัวช่วยตรวจสอบ Code ของคุณได้
อย่างที่สอง ก็คือ การตั้งชื่อ ไม่ว่าจะเป็น Variables, Methods หรือ Classes ก็ควรจะตั้งชื่อให้เป็นรูปแบบเดียวกัน และคุณควรรู้ว่า ความสอดคล้องนั้นมีผลกระทบอย่างมากต่อการ Maintain Codebase ของคุณ
6. ทำงานให้เสร็จสมบูรณ์ในคราวเดียว
พวกเราคงเคยได้ยินประโยคในทำนองที่ว่า “ไว้ค่อยแก้ไขภายหลังแล้วกัน” และพวกเราเอง ก็คงรู้ว่าสิ่งที่ถูกแก้ไข “ในภายหลัง” นั้น เกิดขึ้นบ่อยแค่ไหน ทุกครั้งที่คุณเห็น TODO-comment คุณรู้ว่าต้องมีคนที่ Fail กับการทำงานให้เสร็จสมบูรณ์ในคราวเดียว
คำว่า “เสร็จสมบูรณ์” ในที่นี้หมายถึง Code ของคุณได้รับการ Refactor เรียบร้อยแล้ว ยิ่งไปกว่านั้น Code ของคุณจะต้องถูก Test ซึ่ง Developer ส่วนใหญ่แล้ว การ Test น่าจะเป็นงานส่วนที่พวกเขาชอบทำน้อยที่สุดแล้ว ในการ Test นั้นเป็นมากกว่าแค่การคลิกผ่าน Scenario ที่ไม่มี Exceptional หรือ Error Condition คุณควร Test ใน Scenario อื่นๆ หรือบางครั้งอาจต้องเขียน Automate Test ด้วย
อีกประเด็นคือเรื่อง Documentation คำถามคือ Documentation จำเป็นกับ Features เหล่านั้นด้วยหรือไม่? คุณได้แจ้งให้ Tester ทราบเกี่ยวกับวิธีการ Test Features เหล่านั้นหรือไม่? มีข้อกำหนดเบื้องต้นใดบ้างที่ Tester ควรจะต้องรู้?
7. อย่าหยุดเรียนรู้
เทคโนโลยีใหม่ ๆ เกิดขึ้นทุกวัน และบางครั้งอาจเป็นเรื่องยากที่จะติดตาม Trends ล่าสุดทั้งหมด ดังนั้น คุณไม่ควรหยุดที่จะเรียนรู้ เพราะวันที่คุณหยุดเรียนรู้ ก็คือ วันที่คุณหยุดก้าวหน้าและเติบโต
การเรียนรู้สิ่งใหม่ ๆ เป็นวิธีเดียวที่คุณจะสามารถก้าวหน้าต่อไปในยุคที่เทคโนโลยีมีการเปลี่ยนแปลงอยู่ตลอดเวลา
Ralph Waldo เคยกล่าวไว้ว่า “หากคุณไม่ทำอะไรนอกเหนือจากสิ่งที่คุณเชี่ยวชาญแล้ว มันก็ยากที่คุณจะเติบโต“
ISM Technology Recruitment Ltd. (#1 Tech Recruiter in Thailand) เราเชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ เปิดทำการกว่า 30 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย หากคุณเป็นคน IT ที่อยากทำงานท้าทายและร่วมงานกับองค์กรชั้นนำ สามารถฝากประวัติการทำงาน (Resume) ของคุณไว้กับ ISM ได้ที่ https://www.ismtech.net/submit-your-resume แล้วคุณจะพบว่าอนาคตและโอกาสก้าวหน้ากำลังรอคุณอยู่