ทุกคนย่อมเคยทำผิดพลาดมาก่อนเสมอ
ยิ่งในการพัฒนา 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 เข้าไปยังไม่เจอเลย !!
รวมไปถึงขึ้นการการทำงานภายในของระบบด้วย
ถ้ายิ่งมีความซับซ้อนสูง
การพัฒนาก็นาน ค่าใช้จ่ายสูง
แน่นอนการดูแลรักษาและเปลี่ยนแปลงก็ยากนะ
วันนี้เราทำอะไรผิดบ้าง ?
ลองปรับปรุงกันดูบ้างนะ