Screen Shot 2557-12-29 at 11.26.02 AM
เรื่องที่ 12 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ The Professional Programmer

Professional Programmer มันคืออะไรนะ ?
แล้วเราล่ะ เป็น Professional หรือไม่ ?

Professional Programmer คืออะไร ?

คุณสมบัติที่สำคัญมาก อย่างหนึ่งของ Professional Programmer ก็คือ
ความรับผิดชอบส่วนบุคคคล (Personal Responsibility)
ซึ่งนักพัฒนาจะต้อง

  • มีความรับผิดชอบต่อ อาชีพของตนเอง
  • มีความรับผิดชอบต่อ code ที่คุณเขียน
  • มีความรับผิดชอบต่อ การประเมินเวลาการทำงานของตนเอง
  • มีความรับผิดชอบต่อ ตารางงานที่ได้ทำการยืนยันไว้
  • มีความรับผิดชอบต่อ ความผิดพลาดของตนเอง
  • มีความรับผิดชอบต่อ แนวทาง Craftsmanship

โดยที่ Professional Programmer จะไม่ละทิ้งความรับผิดชอบเหล่านี้เลย
ไม่ว่าจะกรณีใดๆ ก็ตาม

มีความรับผิดชอบต่อ อาชีพของตนเอง

นั่นคือคุณต้องมีความรับผิดชอบในการเรียนรู้ในสิ่งต่างๆ
ทั้งการอ่าน การเขียน การรับฟัง รวมทั้งการดมกลิ่น (เหมือนหมายังไงก็ไม่รู้)
ทำอย่างไรที่จะให้คุณทันโลกอยู่ตลอดเวลา
ทั้งเทคโนโลยี และ สายงานที่คุณทำงานอยู่

ถ้าคุณคิดว่า บริษัทหน่วยงานที่คุณทำอยู่
จะทำการสอนคุณ อบรมคุณ
นั่นเป็นความคิดที่นำไปสู่หายนะได้เลย !!

ดังนั้น คุณจึงต้องใช้เวลาของคุณส่วนหนึ่ง
มาทำการศึกษาหาความรู้บ้างนะ
เช่น การอ่านหนังสือวันละ 1 ชั่วโมง

การสร้างความสัมพันธ์อันดีกับเพื่อร่วมงานก็เช่นกัน
ไม่ใช่เพียงคนในทีมเท่านั้น

ทุกๆ บริษัทสัญญาที่จะจ้างเงินเดือนให้คุณทุกเดือน
แล้วคุณล่ะ สัญญาที่จะทำงานดีๆ ให้บริษัทหรือไม่ ?

มีความรับผิดชอบต่อ code ที่คุณเขียน

นักพัฒนาจะไม่ส่ง หรือ สร้าง code ที่เขาไม่รู้ หรือ ไม่เข้าใจมันอย่างดี
คุณจะเป็น professional programmer ได้อย่างไร ?

Professional programmer นั้นจะต้องมีแนวคิดและทัศนคติว่า
QA หรือ Tester ต้องไม่พบข้อผิดพลาดใดๆ ที่ตกลงกันไว้เลย
และ จะไม่ทำการส่งมอบ code ถ้ายังไม่ทำการทดสอบด้วยตัวเองก่อนเสมอ

แน่นอนว่า QA หรือ Tester จะต้องเจอปัญหาอะไรบางอย่าง
เพราะว่า ไม่มีใครที่สมบูรณ์แบบหรอกนะ
แต่ถ้านักพัฒนาไม่มีแนวคิดและทัศนคติ ดังกล่าว
ก็ยากที่จะเป็น Professional programmer

ต้องสามารถทำงานเป็นทีมได้ดี

ผลงานที่ออกมาไม่ใช่มาจากใครคนใดคนหนึ่ง แต่มาจากทั้งทีม
คนในทีมจะต้องช่วยเหลือซึ่งกันและกัน
คนในทีมจะต้องสอน และ เรียนรู้ กันภายในทีม
คนในทีมจะต้องสามารถทำงานทดแทนกันได้ ในเวลาในใครคนใดคนหนึ่งไม่อยู่
นั่นคือ ไม่มี Hero ประจำทีมนะครับ

จะไม่ยอมให้เกิด bug จำนวนมากๆ

เนื่องจากยิ่ง bug มีจำนวนมากเท่าไร การแก้ไขก็ยากขึ้นเท่านั้น
เพราะว่า มันจะผูก จะพัน กันมั่วไปหมด
ทั้งยังเสียเวลาในการบันทึกปัญหา
ทั้งยังเสียเวลาในการแก้ไขปัญหา
เยอะไปหมด

อีกอย่างหนึ่ง
ถ้าระบบที่เราพัฒนานั้นจำเป็นต้องมีระบบ bug tracking
นั่นหมายถึงอาการที่ไม่ดีของการพัฒนาระบบแล้ว
เพราะว่า มันบ่งบอกว่าระบบมี bug จำนวนมาก

จะไม่สร้างระบบที่ซับซ้อน ยุ่งเหยิง ที่ยากต่อการเข้าใจ

เนื่องจาก Professional programmer มีความเชื่อเรื่อง craftsmanship
ดังนั้น code ที่สร้าง หรือ เขียนขึ้นมาต้องดูดี

  • ต้องเป็น clean code อยู่เสมอ
  • ต้องมีโครงสร้างที่ดี
  • ต้องง่ายต่อการอ่าน
  • ต้องทำตามมาตรฐานที่ได้กำหนดไว้ เช่น Coding standard เป็นต้น

จะไม่ละทิ้งความรับผิดชอบเหล่านี้ ถึงแม้จะถูกบีบด้วยเวลาก็ตาม

ลองคิดดูว่า
ถ้าหมอผ่าตัด ถูกเวลาบีบบังคับ
จะทำการผ่าตัดแบบให้ผ่านไปที หรือไม่ ?
ถ้าทำแบบผ่านไปที คุณคิดว่าผลที่ตามที่มามันจะเป็นอย่างไร ?
การเป็น Professional programmer ก็เช่นกันนะครับ

… แต่แปลกนะที่นักพัฒนาชอบเผางานกัน
สุดท้ายก็ได้ bug กลับมาแก้ไขอีกเพียบ !!

บ่อยครั้งที่นักพัฒนานั้น จะพูดว่า
เดี๋ยวฉันจะกลับมาสร้าง และ แก้ไขมัน
ซึ่งนั่นมันคือข้ออ้าง ของการสร้าง code ที่แย่ๆ ขึ้นมา
และเชื่อเถอะว่า จะไม่เคยกลับมาแก้ไข code ส่วนนั้นอีกเลย
ดังนั้นการกระทำแบบนี้ มันเป็น Professional programmer หรือไม่ ?

โดยสรุปแล้ว

คำว่า Professional มันคือหน้าที่ความรับผิดชอบ ที่เราในฐานะนักพัฒนา

  • จะต้องปฏิบัติเพื่อหน้าที่ความรับผิดชอบในอาชีพของคุณ
  • จะต้องปฏิบัติเพื่อหน้าที่ความรับผิดชอบในการสร้าง code ที่สามารถทำงานได้ดี
  • จะต้องปฏิบัติเพื่อหน้าที่ความรับผิดชอบในการสร้าง code ที่มีคุณภาพ

และจะไม่ละทิ้งแนวคิดและแนวปฏิบัติเหล่านี้ ไม่ว่ากรณีใดๆ ก็ตาม

แล้วคุณล่ะ เป็น Professional programmer ไหม ?
หรืออยากจะเป็นไหม ?

Don’t be a Hero