ตอนเช้าได้อ่านเอกสารเกี่ยวกับแนวโน้มและการเปลี่ยนแปลงต่าง ๆ
ของการพัฒนา software ในอนาคตอันใกล้
ซึ่งประกอบไปด้วย

  • ปรับกระบวนการจาก Manual ไป Automation
  • จาก Automation ไปสู่ AI
  • ปรับการทำงานจาก Reactive ไป Proactive
  • Innovation
  • Reliability เป็นสิ่งสำคัญมาก ๆ

มาดูรายละเอียดกันเล็กน้อย

ปรับกระบวนการจาก Manual ไป Automation

จากผลการสำรวจเรื่อง FORRESTER REVEALS TOP 10 TECH TRENDS FOR 2018 TO 2020 พบว่า
มีข้อหนึ่งสรุปไว้อย่างน่าสนใจคือ

Software robots will replace routine tasks that humans do poorly.
By 2020, robots will engage in work that drives customer outcomes.

บอกไว้ว่า
Robot จะเข้ามาทำงานในส่วนงานที่คนต้องทำงานซ้ำ ๆ
เพราะว่า คนเรามักจะทำงานผิดพลาดอยู่บ่อย ๆ ถึงจะปรับให้ดีขึ้นก็ผิดพลาดได้
ที่สำคัญงานเหล่านั้นต้องการเวลาทำงานเยอะ (เวลาคือค่าใช้จ่าย)
ดังนั้นกระบวนการทำงานจะเริ่มถูกปรับให้เป็นแบบอัตโนมัติมากขึ้น
เพื่อปรับปรุงกระบวนการให้ดี และ มีคุณภาพมากขึ้น
ช่วยลดปัญหา หรือ ทำให้เห็นปัญหาเร็วขึ้น
เพื่อแก้ไขและปรับปรุงได้เร็วขึ้น

ซึ่งเราจะเห็นได้ว่า หลาย ๆ บริษัทและทีมพัฒนา
เริ่มนำแนวคิดและแนวทางของ CI/CD รวมถึง DevOps/Cloud มาใช้งาน
เพื่อช่วยทำให้กระบวนการพัฒนา software รวดเร็วและมีคุณภาพ
ประเด็นคือ
ถ้านำมาใช้แล้วกระบวนการช้าลง
คุณภาพแย่ลง
คิดว่า น่าจะนำมาใช้ผิดที่ผิดทางนะ !!

จาก Automation ไปสู่ AI

นั่นหมายความว่า
ถ้าการทำงานยังคงเป็นแบบ manual อยู่
คุณก็ไม่สามารถไป AI ได้ง่าย
ดังนั้นปรับปรุงกระบวนการเป็น automation ก่อน
จากนั้นจึงนำ AI เข้ามาช่วย ทั้ง Machine Learning, Data Mining และ Neural network

ซึ่งจะช่วยให้บริษัทและทีม
สร้าง product ที่ดีขึ้นสำหรับลูกค้าและผู้ใช้งาน
รวมทั้งปรับเปลี่ยนและปรับปรุง product ตามความต้องการของผู้ใช้งานที่เปลี่ยนไปได้

แต่ก่อนจะเริ่มต้นนั้น
แนะนำให้ไปดูระบบหรือ product ก่อน
จากนั้นเริ่มที่ปัญหาว่า มีจุดใดบ้างที่น่าจะนำไปใช้ได้
จากนั้นจึงเริ่มทดลองเล็ก ๆ แล้วดูผล

ปรับการทำงานจาก Reactive ไป Proactive

ระบบงานมักเกิดสิ่งที่ไม่คาดหวังอยู่อย่างเสมอ
คำถามคือ เรารู้ปัญหาก่อนหรือหลังผู้ใช้งาน
กว่าจะรู้ปัญหา โดนผู้ใช้งานบ่นด่าไปมากเท่าไรแล้ว
บริษัทเสียหายไปเท่าไร

ไม่พอนะเมื่อเรารู้ปัญหาแล้ว
นานไหมกว่าจะหาสาเหตุเจอ
ต้องมานั่งอ่าน log file เอง
ต้องมานั่ง debug code เอง
นานไหมกว่าจะแก้ไขเสร็จ
นานไหมหว่าจะ deploy เสร็จ

สิ่งที่ต้องการคือ การทำงานแบบ proactive ไม่ใช่ reactive
ดังนั้น
ถ้ามีระบบ monitoring แล้วต้องบอกสถานการณ์ต่าง ๆ ของระบบได้
ว่าส่วนไหนเริ่มจะมีปัญหา
ว่าส่วนไหนทำให้เกิดปัญหา
ถ้ามีระบบ logging แล้ว ไม่ใช่เพียงแค่เก็บ !!
แต่ต้องสามารถวิเคราะห์และบอกสิ่งต่าง ๆ ที่ต้องการได้

สุดท้ายแล้ว

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

ขอให้สนุกกับการ coding