Screen Shot 2558-07-17 at 3.49.47 PM
เมื่อวานได้นั่งคุยแลกเปลี่ยนแนวคิดในการเขียน code กันนิดหน่อย
ว่า code ที่เราเขียนขึ้นมานั้น
มันก็เหมือนกับหนังสือที่เราอ่านกันนั่นแหละ
เลยเอามาจดไว้กันลืมหน่อย
เพราะว่า แนวคิดมันเพิ่งออกมาตอนที่เราพูดคุยกันนั่นเอง

Code มันเหมือนกันหนังสืออย่างไร ? งงๆ นะ

อธิบายแบบง่ายๆ คือ
ทำการเปิดหนังสือขึ้นมาสักหน้า
เราจะพบว่า เนื้อหาในหนังสือเข้าจัดวางแบบนี้

Screen Shot 2558-07-17 at 3.26.06 PM

คำถาม
เราเห็นอะไรบ้างล่ะ ?
คำตอบ
เห็นการจัดวาง โครงสร้างของเนื้อหาไหมล่ะ ?
แต่ละบรรทัดนั้น ขึ้นตอนบรรทัดตรงกันเกือบหมด ?
อย่างมากก็มีแค่ย่อหน้าเท่านั้น ที่เยื้องเข้ามา
แต่ละบรรทัดไม่ยาวจนเกินไป
เห็นช่องไฟระหว่างคำ หรือ ประโยคไหมล่ะ ?
ถ้าเขียนติดกันหมดเลย หรือห่างกันจนเกินไป ก็ไม่น่าจะอ่านง่าย !!

คำถาม
เราชอบอ่านหนังสือที่จัดวางเนื้อหาอย่างนี้ใช่ไหม ?
คำตอบ
ใช่แล้ว …

ดังนั้น ลองกลับไปดู code ที่เราเขียนสิ เราเขียนกันแบบไหน ?
แบบที่เราชอบ คือ แบบหนังสือที่เราอ่านหรือไม่ ?

คำตอบที่ได้คือ ไม่ … มันแปลกดีไหม ?

ถ้า code เป็นแบบหนังสือเล่มนี้ คุณจะอ่านไหม ?

Screen Shot 2558-07-17 at 3.34.25 PM

แต่ถึงแม้ว่า จะมีการจัดวางที่ดี หรือ รูปแบบโครงสร้างที่ดีแล้วนั้น

ก็ไม่ได้ความว่ามันจะอ่านง่ายนะ
แต่ละคำที่ใช้มันต้องอ่านง่าย เข้าใจง่าย มีความสัมพันธ์กัน
ไม่เช่นนั้นก็อ่านไม่รู้เรื่อง และ เราก็ไม่อยากอ่าน
แล้วคิดว่า คนอื่นๆ เขาจะอยากอ่านหรือไม่ ?
ดังนั้น การตั้งชื่อ และ ลำดับการทำงานจึงสำคัญมาก
สำหรับการเขียน code

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

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

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

โดยไม่ได้สนใจเลยว่า จริงๆ แล้ว
หนังสือ หรือ ระบบที่สร้างมานั้นมันเป็นอย่างไร ?
หนังสือ หรือ ระบบที่สร้างมานั้นมันมีความสำคัญอย่างไร ?

ปัญหามันจะเกิดเมื่อนำแต่ละหน้ามารวมกัน
หรือนำ code มารวมกัน
ซึ่งผมเชื่อมั่นว่า developer ทุกๆ คนเจอมา
หลายๆ คนน่าจะกำลังเผชิญอยู่กับมัน
ดังนั้น ลองปรับเปลี่ยนกันดูไหม ?
มาทำงานด้วยกันแบบหน้าต่อหน้าดีกว่าไหม ?
หรือคุณคิดว่าอย่างไร ?

คำถาม ทำไมหนังสือถึงมีขนาดไม่ใหญ่?

คำตอบ
พกพาได้ง่าย สะดวก
ขนส่งได้ง่าย
น้ำหนักเบา
และอื่นๆ อีกมากมาย

ถ้ามองกลับมาที่ code ของเราดูบ้างสิ
มันมีขนาดใหญ่ไปไหม ?
มันพกพาได้ง่ายไหม ?
มันทดสอบได้ง่ายไหม ?
มันติดตั้งได้ง่ายไหม ?

ลองกลับไปมอง code ที่คุณเขียนขึ้นมาสิว่า เป็นอย่างไร ?

เราชอบไหม ?
ทีมชอบไหม ?
บริษัทชอบไหม ?
ลูกค้าชอบไหม ?

ถ้าไม่ชอบ ก็ปรับสิครับ ช้าทำไม ?