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

เรื่องของ Compatibility

ระบบที่พัฒนานั้นสามารถทำงานใน device แต่ละชนิดได้อย่างถูกต้องหรือไม่
เนื่องจากในปัจจุบันมี device จำนวนมาก
รวมไปถึงขนาดหน้าจอ
ยกตัวอย่างเช่น Web browser และ Mobile
คำถามที่น่าสนใจคือ
เราทำการทดสอบมากน้อยเพียงใด
device ที่ใช้ในการทดสอบมีเท่าไร
วันนี้ระบบที่พัฒนามานั้นมัน Compatibility หรือไม่ ?

เรื่องของการสะกดคำ หรือ ประโยคที่ผิด

เป็นสิ่งที่เกิดขึ้นบ่อยมาก ๆ
สิ่งที่น่าสนใจคือ จะลดความผิดพลาดเหล่านี้ลงไปได้อย่างไร
การมานั่งตรงจสอบทั้งระบบในครั้งเดียวไม่น่าจะใช่ทางที่ดี !!
หนักกว่าสะกดผิดคือ ใช้ Google translate มา !!

เรื่องของระบบ network

ใน mobile app นั้นเรื่องของ network มีปัญหาอย่างมาก
ทั้งเรื่องของความเสถียร
ทั้งเรื่องของความเร็วของระบบ network ที่ใช้งาน
เช่น WIFI, 4G/3G, EDGE เป็นต้น
สิ่งที่น่าสนใจคือ นักพัฒนาจัดการกับเรื่อง network อย่างไร ?
หรือปล่อยให้ระบบ crash ไป
เคยทดสอบใน network ที่ช้า ๆ หรือไม่ ?
เคยทดสอบใน network ที่ไม่เสถียรหรือไม่ ?

การจัดการเรื่องของ input และ output

ทำการ validate input จากผู้ใช้บ้างไหม ?
บางคนทำแล้ว แต่ว่ามันครอบคลุมหรือไม่ ?
มิเช่นนั้น อาจจะส่งผลร้ายต่อระบบอย่างมาก

ส่วน output ก็เช่นกัน ทำการ validate ก่อนหรือไม่ ?
มิฉะนั้นผู้ใช้งานจะได้รับประสบการณ์ที่แย่ไปนะ

หนักกว่านั้น การตรวจสอบทั้งระบบไม่เหมือนกันอีก !!

การจัดการเรื่องของ resource เช่น memory

นักพัฒนาจะเน้นไปที่ทำให้เสร็จ
คำถามคือ สิ่งที่ทำไปมันดีหรือไม่ และใช้งาน resource ต่าง ๆ อย่างไร
บ่อยครั้งพบว่า มักจะเกิด resource leak ขึ้นมา
นั่นคือ มีการใช้งาน resource แต่ไม่เคยคืนให้กับระบบเลย
มันจะส่งผลร้ายต่อระบบทั้งหมด
คำถามคือ นักพัฒนาเคยสนใจเรื่องนี้หรือไม่ ?

ไม่สนใจ guideline ต่าง ๆ เลย

ในการพัฒนา software พบว่า
จะมี guideline ต่าง ๆ มากมาย
แต่ทีมพัฒนา รวมไปถึงผู้ให้ requirement และ คนออกแบบ
ไม่ได้ให้ความสำคัญกับมันเลย
สนใจแต่ จะเอา จะเอา จะเอาแบบนี้
ผลที่ตามมาคือ ผู้ใช้งานไม่ใช้งาน หรือ จำนวนการใช้ลดลงไป

นักพัฒนาเช่นกัน มี guideline ต่าง ๆ มากมาย เช่น Coding standard
คำถามคือ นำมาใช้หรือไม่ ?

Consistency

ปัญหาที่เจอมาก ๆ คือ Mobile app
พบว่าหลาย ๆ app จะมีทั้ง iOS และ Android
แต่กลับพบว่า app หน้าตาเหมือนกันเลย !!
ซึ่งหลาย ๆ ส่วนมันไม่ได้เข้ากับพฤติกรรมการใช้งานของแต่ละ platform เลย
คำถามคือ เราหลงลืมอะไรกันไหม ?

การ update version

เป็นปัญหาที่น่าปวดหัวมาก ๆ
เมื่อทำการ update version ใหม่ของระบบงานไป
ยิ่งถ้าเป็นระบบที่ทำหน้าที่บริการข้อมูลให้ระบบอื่น ๆ ยิ่งสนุก
เพราะว่ายังต้องดูแลรักษาระบบ version ก่อนไว้ด้วยนะ
รอไปจนกว่าผู้ใช้งานจะ update จึงจะลบหรือปิดได้
คำถามคือ เราเคยสนใจหรือไม่ ?
ถ้าสนใจ เราทำอย่างไร ทดสอบอย่างไร เพื่อลดผลกระทบ ?

ปิดท้ายด้วย มีขั้นตอนการทำงานและใช้งานที่ซับซ้อนไปไหม

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

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

วันนี้เราทำอะไรผิดบ้าง ?
ลองปรับปรุงกันดูบ้างนะ