Screen Shot 2558-01-22 at 2.01.04 PM
จากบทความเรื่อง They won’t not be interested
ได้ทำการอธิบายความแตกต่างระหว่างคำว่า

Readable [Adj] ซึ่งสามารถอ่านได้ อ่านง่าย ง่ายต่อการอ่าน
Understandable [Adj] ที่สามารถเข้าใจได้ เข้าใจง่าย

ของ code ที่นักพัฒนา software สรรค์สร้างขึ้นมา
ดังนั้น มาดูกันหน่อยว่าอธิบายไว้อย่างไรกันบ้าง

เริ่มต้นด้วยประโยคนี้

“They won’t be interested in looking at code. All they care about is the UI.”

ลูกค้าของคุณเขาไม่ได้สนใจว่าคุณจะเขียน code อย่างไรหรอกนะ
เขาจะสนใจเพียง UI ของระบบเท่านั้นล่ะนะ !!

ต่อให้อีกหน่อยว่า
จะสนใจก็ต่อเมื่อมันกลับมาทำร้าย …

ในการพัฒนา software นั้น
เมื่อคุณนำ software ไปให้ลูกค้าคุณลองใช้งาน
ไม่เคยมี feedback เกี่ยวกับ code ที่คุณเขียนหรอกนะ
หรือไม่เช่นนั้น คุณก็ไม่เคยเอา code ไปเปิดให้ลูกค้าดูเช่นกัน

คำถาม
ทำไมถึงเป็นเช่นนั้น ?
คำตอบ
ลูกค้าเขาไม่สนใจหรอกนะ
ลูกค้าเขาไม่รู้เรื่อง programming ดังนั้นเขาดูไม่รู็เรื่องหรอก

หรือว่า code ที่คุณสร้างขึ้นมานั้น มันอ่านไม่รู้เรื่อง เข้าใจได้ยาก
จึงทำให้คนที่ไม่มีความรู้ทาง programming ไม่เข้าใจ !!

ดังนั้นมาทำความเข้าใจกับ code ที่นักพัฒนาสร้างขึ้นมาก่อนดีไหม ?

Code ที่อ่านง่าย มันแตกต่างกับ code ที่เข้าใจได้ง่ายนะ !!

แน่นอนว่า code ที่มันอ่านง่าย มันย่อมส่งผลดีต่อ software ที่สร้างขึ้นมาอยู่แล้ว
ทั้งการดูแล แก้ไข ง่ายๆ
แต่ถ้า code นั้นมันอ่านง่ายเพียงอย่างเดียว
แต่เข้าใจได้ยาก มันก็ไม่น่าจะดีนะ

ดังนั้น สิ่งที่ดีกว่าคือ
สร้าง code ที่มันสามารถ อ่านง่าย และ เข้าใจง่าย ขึ้นมาดีกว่านะ

แล้วทั้งสองคำมันต่างกันอย่างไรนะ ?

Readable หรือ อ่านง่าย

มันคือคุณสมบัติของ code ที่ดี ทั้งโครงสร้าง และ รูปแบบ
เช่น

  • การกำหนด whitespace ต่างๆ
  • method ที่สั้นๆ ทำงานเพียงอย่างเดียว

ซึ่ง code ที่มันอ่านง่าย มันจะนำไปสู่การเข้าใจที่อ่านขึ้น

Understandable หรือ เข้าใจง่าย

มันเป็นคุณสมบัติของ code ที่ดี ในส่วนรายละเอียดภายในของ code แล้ว
เช่น การตั้งชื่อต่างๆ ของ code ดังตัวอย่าง

Doctor doctor = new Doctor();
doctor.getPatientRecords( patientId );

และ

Doctor dr = new Doctor();
dr.getData( pId );

คำถาม
คุณคิดว่า code ทั้งสองชุดนั้น code ชุดในสามารถเข้าใจได้ง่าย ?
คำตอบ
Code ทั้งสองชุดนั้น มีโครสร้างการทำงานเหมือนกัน
ซึ่งมีโครงสร้างที่ดี อ่านง่าย

แต่ code ชุดแรกนั้นเข้าใจได้ง่ายกว่า
เพราะว่าเลือกใช้ชื่อในการตั้งชื่อตัวแปร และ method ได้ชัดเจน
และสามารถสื่อสารถึงพฤติกรรมการทำงานของระบบได้เลย

ส่วน code ชุดที่สองนั้น
ผมคิดว่า เราสามารถเจอได้ใน code ของระบบทั่วไป
หรือคุณอาจจะกำลังเขียนขึ้นมาก็ได้
มีทั้งการใช้ตัวย่อ และ การตั้งชื่อ method ที่ไม่สื่อถึงการทำงานจริงๆ !!

ใครบ้างล่ะที่ควรเข้าใจ code ?

แน่นอนว่า สมาชิกในทีมพัฒนาก็ต้องสามารถเข้าใจ code สิ
และต้องสร้าง code ที่เข้าใจง่ายขึ้นมาด้วย
ดังนั้นสมาชิกในทีมจะไม่มีคนพูดว่า

Code ตรงนี้มันทำอะไร  ?

ถ้ายังมีคนถามแบบนี้ มันเป็นสัญญาณที่บอกว่า code เข้าใจได้ยาก
ดังนั้นให้ทำการปรับปรุงให้ code มันอ่านง่ายขึ้นซะ
การปรับปรุงอย่างต่อเนื่อง และ สม่ำเสมอ ช่วยได้เยอะ
การแก้ไขง่ายใช่ไหมล่ะ

ไม่เพียงแค่ทีมพัฒนาเท่านั้น คนอื่นๆ เช่น non-technical
ก็ต้องสามารถเข้าใจ code ในมุม high level เช่นกัน
เริ่มง่ายๆ ด้วยการเปิด code ให้ดู
โดยสิ่งที่คุณจะได้รับ feedback กลับมาเยอะมากๆ คือ

  • ชื่อของ class
  • ชื่อของ method
  • ชื่อของตัวแปร

ซึ่งคุณจำเป็นต้องแก้ไขให้มันเข้าใจง่ายกว่าเดิม
แปลกนะ ที่นักพัฒนาส่วนใหญ่ไม่เคยเปิด code ให้ดูเลย
หรือว่ากลัวอะไรหรือเปล่านะ !!!

ข้อดีของการเปิด และ อธิบาย code ให้ non-technical ดู​ โดยเฉพาะลูกค้านั้น
จะทำให้ลูกค้าเข้าใจในภาพรวมของระบบ และ สิ่งที่เกิดขึ้นใน code
และเป็นการเพิ่มมุมมองใหม่ๆ ที่สำคัญ
ว่าระบบมีขั้นตอนการทำงานจริงๆ อย่างไร
เมื่อเข้าลูกค้าเข้าใจ นั่นหมายถึงคุณได้ทำการปรับปรุงระบบงานให้ดีขึ้นกว่าเดิมมาก

ดังนั้น ในฐานนะที่เราเป็นนักพัฒนา software ( Professional Software Developer )

คุณจะต้องมีความรับผิดชอบต่อหน้าที่ของคุณ
นั่นคือในทุกๆ วัน คุณจะเขียน code จะสร้าง software ให้ดีที่สุดเท่าที่คุณจะทำได้

และเมื่อทุกๆ คนในทีมเข้าใจว่า software นั้นมันทำงานได้อย่างไร
เขาเหล่านั้นก็สามารถที่จะให้ความเห็น คำแนะนำ และ วิธีการ
เพื่อทำให้สามารถสร้าง software ที่มีคุณภาพที่ดีกว่าเดิมได้
สุดท้ายสิ่งที่คุณจะได้ก็คือ software ที่มีคุณภาพสูง