Screen Shot 2557-04-12 at 9.18.43 PM

จากคำแก้ตัวที่ develop มักชอบพูดกันใน blog ที่ผ่านมา
เรามาเปลี่ยนหรือสร้างวินัยแบบใหม่
เพื่อลด ละ เลิก คำแก้ตัวหรือข้ออ้างเหล่านั้นกันดีกว่า

1. มันทำงานในบนเครื่องผมนะ
มีวิธีป้องกันและหลีกเลี่ยงหลายอย่าง
อย่างแรกให้สร้าง environment ต่างๆ ขึ้นมา เช่น development, testing, production
ซึ่งคุณสามารถสอบถามข้อมูลเพิ่มติมได้ว่า มีปัญหาที่เครื่องจาก environment ใด และ config อย่างไร
อีกทางก็คือ การสร้างระบบ Continuous Integration ขึ้นมา เพื่อทำการ integrate ทุกครั้งที่เปลี่ยนแปลง code
ทำการ build, package และ deploy ซึ่งจะลดปัญหาจากการทำแบบ manual ได้
ดังนั้นเรื่อง source control version ขาดไม่ได้เลย

2. ใช้ code ล่าสุดใช่ไหม
ในการแก้ไขปัญหานี้ ต้องมี process สำหรับการตรวจสอบว่าการ build ใด
คือ code ล่าสุด ที่ทาง tester ทำการทดสอบแล้วว่ามันสามารถทำงานได้จริงๆ
ดังนั้น process ที่ต้องเกิดขึ้นมาก็คือระบบ Continuous Integration นั่นเอง
มันจะทำการดึง code ล่าสุดมา build
รวมทั้งยังสามารถ package และเก็บไว้ยัง repository ได้ด้วย
อีกทั้งสามารถใส่หมายเลข version เข้าไป เพื่อให้สามารถระบุได้ง่าย

3. มีปัญหาเรื่อง configuration หรือเปล่า กำหนดถูกหรือเปล่า
การแก้ไขที่ง่ายที่สุดคือ แยก config ออกเป็นไฟล์ตาม environment ที่ต้องการ
โดยสามารถส่งมาเป็น parameter ได้
เพื่อทำการดึงข้อมูลในขณะ runtime
ซึ่งถ้าเกิดข้อผิดพลาดสามารถตรวจสอบและแก้ไขได้ง่าย

4. เปิด defect/ticket มาเลย แล้วจะตรวจสอบให้
เรื่องนี้เกิดจากการทำงานไม่เป็นทีม หรือทำงานเป็น silo งานใครงานมัน
ดังนั้น แก้ไขด้วยการสร้างทีมงานที่ดีขึ้นมา
คือมีทัศนคติที่ดี มีการทำงานร่วมกันระหว่าง developer และ tester

5. ลอง restart server ดูสิ
ต้องแก้ไขปัญหาที่ต้นตอมัน นั่นคือ
เรื่อง environment
เรื่อง function การทำงาน
เรื่อง architecture
และเรื่องการcoding
ซึ่งเป็นเรื่องที่ยากมาก แต่ต้องทำตั้งแต่เริ่มการพัฒนา

6. ผมไม่แน่ใจเหมือนกันว่าทำไมมันทำงานผิดพลาด  จะทำการตรวจสอบให้อีกทีนะ
เป็นปัญหามาจาก การไม่เข้าใจระบบงานในส่วนต่างๆ ดีพอ
อาจจะมาจากการออกแบบที่ผิด
การเขียน codeท ที่แย่
ความรู้ไม่กระจายไปยังคนอื่น
ดังนั้น ควรสร้างมีภาพโครงสร้างการทำงานในส่วนต่างๆ ของระบบ
มีการแบ่งปันความรู้เรื่องระบบในส่วนต่างๆ กัน

7. รอสัก 5 นาที เดี๋ยวมันจะทำงานได้ถูกต้อง
ถ้าพูดในรูปแบบนี้ แน่นอนว่า มีการ hard code อะไรไว้อย่างแน่นอน
เช่นการกำหนดวันที่ไว้ใน code เป็นต้น
ดังนั้นวิธีที่ดีที่สุดคือการบอกความจริง ว่ามันคืออะไร

8. ผมคิดว่าไม่น่าจะมาจาก code ที่ผมเขียนนะ
การพูดแบบนี้ คือ การโยนขี้ให้คนอื่น
ซึ่งในแง่การทำงานเป็นทีมนั้นแย่มาก
ดังนั้นการแก้ไข ต้องเปลี่ยนที่วัฒนธรรมของทีม
ไม่ให้มีใครรู้สึกเป็นเจ้าของเฉพาะ module ที่ตัวเองทำ
ต้องกระจายความรู้ออกไปให้ทุกๆ คนในทีม
นั้นคือต้อง
ทำการ pair programming
ทำ TDD
ทำการ refactoring
ทำการกำหนด coding standard
ทำการสร้างระบบ Continuous Integration
นั่นเอง