See the original English version of this article here

หลายคนมักคิดว่า Senior Engineer ทำงานได้เร็วกว่าเพราะพวกเขารู้เรื่อง Syntax, Framework, Design Pattern หรือจำคีย์ลัดเก่งกว่า แต่จากประสบการณ์ที่คุณ Umar ได้ร่วมงานอย่างใกล้ชิด ความแตกต่างที่แท้จริงไม่ใช่ “ความเร็ว” แต่เป็น “วิจารณญาณ”
Senior Developer ไม่ได้รีบพุ่งเข้าใส่การเขียนโค้ด พวกเขาหยุดคิดบ่อยกว่า ตั้งคำถามที่เฉียบคมกว่า และโฟกัสที่การเขียนโค้ดที่คนในทีมสามารถเข้ามา Maintain และแก้ไขต่อได้อย่างปลอดภัย ต่อให้ทีมจะขยายใหญ่ขึ้น โปรเจกต์จะสเกล หรือมีคนต้องมานั่งแก้บั๊ก ตอนตีสองก็ตาม
และนี่คือ 9 นิสัยทาง Software Engineering ที่จะเปลี่ยนวิธีคิดและยกระดับการเขียนโค้ดของคุณไปตลอดกาล
1. ช้าลงก่อนเริ่มโค้ด (Slow Down Before You Start)
การรีบเขียนโค้ดตั้งแต่รับ Ticket มักทำให้เกิด “ความคืบหน้าจอมปลอม” เพราะโค้ดที่เขียนเสร็จไวที่สุด มักจะเป็นโค้ดที่ใช้ต้นทุนในการรื้อแพงที่สุด

Senior Engineer จะใช้เวลาทำความเข้าใจปัญหาก่อนเสมอ:
- ฟีเจอร์นี้สร้าง Impact อะไรกับระบบบ้าง?
- มีใคร หรือ Service ไหนที่ต้องพึ่งพามันไหม?
- Edge Case ที่เกิดขึ้นเป็นแค่เรื่องชั่วคราว หรือเป็นส่วนหนึ่งของระบบ?
การหยุดคิดในขั้นตอนนี้ ช่วยลดความซับซ้อนและทำให้ปริมาณโค้ดที่ต้องเขียนน้อยลงอย่างมหาศาล
2. ปกป้อง “ความหมาย” ไม่ใช่แค่ Syntax (Protect Meaning, Not Just Syntax)
การทำ Clean Code ไม่ใช่แค่การเปลี่ยนชื่อตัวแปร ย้ายไฟล์ หรือจัด Format โค้ดให้สวยงาม

เมื่อ Senior ย้ายลอจิกหรือสร้าง Helper Function พวกเขาไม่ได้ทำแค่เพราะหลักการ DRY (Don’t Repeat Yourself) แต่พวกเขาทำเพื่อให้แน่ใจว่า Business Logic ไปอยู่ในจุดที่มันควรอยู่ โค้ดที่ดีคือโค้ดที่การตัดสินใจสำคัญถูกจัดวางไว้อย่างเป็นระเบียบ ทำให้ง่ายต่อการสืบค้นและลดภาระของนักพัฒนาคนถัดไป
3. จัดการ State ให้เรียบง่ายและน่าเบื่อที่สุด (Make the State Boring)
State (เช่น ใน React, Redux หรือ Global State ต่าง ๆ) คือแหล่งของบั๊กชั้นดี การมี State กระจัดกระจายทำให้ UI ฝั่ง Frontend ทำงานผิดเพี้ยนได้ง่าย

Senior จะไม่ถามว่า “ควรเก็บข้อมูลนี้ไว้ที่ไหน?” แต่จะถามว่า “ใครคือเจ้าของ State นี้ที่แท้จริง?” พวกเขาจะพยายามลดจำนวน State ทิ้งตัวแปรชั่วคราวที่ไม่จำเป็น และใช้ Derived Data ให้มากที่สุด เพราะ State ที่เรียบง่ายและคาดเดาได้ คือ State ที่ดีที่สุด
4. เขียนโค้ดเผื่ออนาคต โดยไม่ Over-engineer (Write for the Next Change)
Requirement ของ Product มีการเปลี่ยนแปลงตลอดเวลา Field สถานะธรรมดาอาจกลายเป็น Workflow สลับซับซ้อนในอนาคต

Senior Developer จะหลีกเลี่ยงการ Hardcode ที่ผูกมัดระบบไว้กับปัจจุบันมากเกินไป แต่ก็ไม่ได้ Over-engineer จนโค้ดกลายเป็นนามธรรมไปหมด พวกเขาสร้าง “รอยต่อ (Seams)” ที่ยืดหยุ่นไว้ใน Architecture เพื่อรองรับการขยายในอนาคต
5. มอง Error เป็นส่วนหนึ่งของ UX (Treat Errors as Product Behavior)
Developer หน้าใหม่มักทำระบบจัดการ Error (Error Handling) เป็นสิ่งสุดท้ายหลังทำ Happy Path เสร็จ

แต่สำหรับระดับซีเนียร์ Error = Product Behavior พวกเขาจะออกแบบระบบเผื่อความล้มเหลวเสมอ:
- ถ้า API ล่ม User ควรเห็นอะไร? (Fallback UI)
- ระบบควร Retry ไหม?
- ถ้าระบบพังกลางคัน สามารถ Rollback ข้อมูลกลับไป State เดิมได้หรือไม่?
จำไว้ว่า Happy Path พิสูจน์ว่าฟีเจอร์ทำงานได้ แต่ Failure Path พิสูจน์ว่าฟีเจอร์นั้น “พร้อมใช้งานจริง” บน Production
6. เลี่ยง “โค้ดอัจฉริยะ” ที่ต้องใช้เวลาตีความ (Avoid Clever Code)
การเขียน One-liner โค้ดสั้น ๆ หรือ Abstraction ล้ำ ๆ อาจดูเท่ แต่มันสร้าง “ต้นทุนของความประหลาดใจ” ให้กับคนที่ต้องมานั่ง Debug โค้ดต่อ

Senior Engineer มักจะเลือกเขียนโค้ดที่น่าเบื่อและตรงไปตรงมา เพราะพวกเขาเข้าใจว่า Readability > Cleverness (ความอ่านง่ายสำคัญกว่าความฉลาด) การยอมเขียนโค้ดเพิ่มสองสามบรรทัดเพื่ออธิบาย Logic ให้ชัดเจน คือความเคารพที่มีต่อเพื่อนร่วมทีม
7. เคารพขอบเขตของระบบ (Keep Boundaries Honest)
เพื่อให้ระบบมีระเบียบ การแบ่งขอบเขตการทำงานของแต่ละ Layer เป็นเรื่องสำคัญ

- Frontend มีหน้าที่จัดการ UX/UI ไม่ใช่บังคับใช้ Business Logic หลัก
- Backend ต้องทำการ Validate ข้อมูลเสมอ ไม่ว่าจะผ่านการเช็คจากหน้าฟอร์มมาแล้วหรือไม่ก็ตาม
เมื่อขอบเขตของแต่ละส่วนชัดเจน การหา Root Cause ของบั๊กและการทำ Unit Test จะกลายเป็นเรื่องง่ายขึ้นมาก
8. Code Review เพื่อจัดการความเสี่ยง ไม่ใช่เพื่ออีโก้ (Review for Risk, Not Ego)
การทำ Code Review ไม่ใช่เวทีอวดความเก่ง แต่เป็นด่านหน้าในการปกป้อง Codebase (Source code) ของทีม

คำถามของ Senior ตอนรีวิวโค้ดจะเจาะลึกไปที่ระดับ System Impact:
- การเปลี่ยนโค้ดตรงนี้กระทบกับระบบ Caching หรือ Pagination ไหม?
- Edge Case นี้ถูกจัดการหรือยัง?
- โค้ดนี้ปลอดภัยพอที่จะ Deploy ขึ้น Production ไหม?
9. ทิ้ง Codebase ไว้ในสภาพที่ดีกว่าเดิมเสมอ (Boy Scout Rule)

Senior Engineer อาจไม่ได้ทำการรื้อระบบ (Refactor) แบบขนานใหญ่เสมอไป แต่พวกเขาใช้หลักการปรับปรุงอย่างต่อเนื่อง (Continuous Improvement):
เปลี่ยนชื่อฟังก์ชันให้สื่อความหมาย ลบ Dead Code ทิ้ง หรือหุ้ม Test ในจุดที่เปราะบาง ทุกการ Pull Request (PR) คือโอกาสในการ “ลด Technical Debt” ของระบบลงทีละนิด
สิ่งที่เปลี่ยนไปสำหรับ คุณ Umar
สิ่งที่เปลี่ยนแปลงมากที่สุดสำหรับคุณ Umar คือการที่เขาเลิกมองการเป็น Senior Engineer ว่าเป็นเพียงการรวบรวมเทคนิคขั้นสูงต่าง ๆ ไว้มากมาย
เพราะจริง ๆ แล้ว สิ่งนั้นคือ วิธีคิด มากกว่า ดังนั้น Senior Engineer ไม่ได้เก่งกว่าเพราะพวกเขารู้คำตอบที่สมบูรณ์แบบอยู่เสมอ แต่พวกเขาเก่งกว่า เพราะรู้จักตั้งคำถามที่ดีกว่า ก่อนที่จะเลือกคำตอบ
- พวกเขาคิดถึงความรับผิดชอบและการเป็นเจ้าของงาน
- คิดถึงการเปลี่ยนแปลง
- คิดถึงความล้มเหลวที่อาจเกิดขึ้น
- คิดถึง Developer คนถัดไปที่จะเข้ามาทำงานกับโค้ดนั้น
- และคิดถึงผลกระทบที่การตัดสินใจเล็ก ๆ เพียงครั้งเดียวอาจส่งต่อและขยายไปทั่วทั้งระบบ
นั่นคือสิ่งที่ทำให้โค้ดของพวกเขาให้ความรู้สึกแตกต่างออกไป มันไม่ได้แค่สะอาดกว่า แต่มัน นิ่งกว่า และทำให้รู้สึกมั่นใจมากกว่า
- คุณสามารถอ่านโค้ดได้โดยไม่ต้องคอยเดาว่ามันทำงานอย่างไร
- คุณสามารถแก้ไขมันได้โดยไม่ต้องกลัวว่าจะกระทบส่วนอื่น
- คุณสามารถ Debug ได้โดยไม่ต้องเปิดไฟล์ที่ไม่เกี่ยวข้องอีกสิบไฟล์
- และคุณสามารถมั่นใจได้ว่าการตัดสินใจสำคัญ ๆ ไม่ได้ถูกซ่อนไว้กระจัดกระจายอยู่ในที่ที่คาดไม่ถึง
นี่คือประเภทของโค้ดที่คุณ Umar อยากเขียนให้ได้บ่อยขึ้น ไม่ใช่โค้ดที่สมบูรณ์แบบ แต่เป็นโค้ดที่ทำให้ การเปลี่ยนแปลงครั้งต่อไปง่ายขึ้น
บทสรุป: สิ่งที่สร้างความแตกต่าง
การเป็น Senior Software Engineer ไม่ใช่แค่การจำ Syntax ได้เยอะขึ้น แต่มันคือเรื่องของ ความรับผิดชอบ ทั้งต่อระบบงาน ผู้ใช้งาน และเพื่อนร่วมทีมที่จะมารับไม้ต่อ
- Junior Engineer มักถามว่า: “ฟีเจอร์นี้ทำงานได้หรือยัง?”
- Senior Engineer จะถามว่า: “โค้ดนี้จะยังดูแลรักษาง่ายอยู่ไหมในอนาคต?”
แค่ลองเปลี่ยนคำถาม วิธีการเขียนโค้ดของคุณก็จะเปลี่ยนไปตลอดกาล
และทั้งหมดนี้คือ 9 นิสัยการเขียนโค้ด ฉบับ Senior Engineer
เมื่อ หางาน IT ให้ ISM Technology Recruitment เป็นอีกหนึ่งตัวช่วย เพื่อให้คุณได้ “ชีวิตการทำงานในแบบที่คุณต้องการ” เพียงส่ง Resume มาที่นี่
ISM เชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ ได้เปิดทำการมาแล้วกว่า 30 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย
Source: https://medium.com/skillstuff/