จากรายงานเรื่อง Technology Radar Vol. 22 ของ ThoughtWorks ออกมา
ทำการสรุปเรื่องของ เทคนิค เทคโนโลยี เครื่องมือ
ภาษาโปรแกรมและ framework ต่าง ๆ สำหรับการพัฒนา software ออกมา
โดยหลัก ๆ จะเน้นไปที่

  • การทำงานแบบ Remote ในวิกฤติ COVID-19 ที่ระบาดไปทั่วโลก ส่งผลต่อการทำงานของทุกภาคส่วน
  • เน้นมาที่ Software delivery ecosystem ซึ่งมีความสำคัญต่อการพัฒนา software อย่างมาก ไม่ใช่เน้นเพียงกระบวนการอย่างเดียวเท่านั้น
  • เรื่องของ Kubernetes ที่มีเครื่องไม้เครื่องมือ และระบบ ecosystem ที่ครบเครื่อง แน่นอนว่าตัวมันเองมีความซับซ้อนสูง แต่ก็มีการคิดและสร้างเครื่องมือต่าง ๆ เพื่อมาปิดจุดอ่อนเหล่านี้อยู่เรื่อย ๆ

โดยมีหัวข้อที่ต้องทำการศึกษาเยอะมาก ๆ

แสดงดังรูป

แต่ขอยกมาเฉพาะเรื่องที่ผมสนใจมาดังนี้

กลุ่มของ Technique

ในกลุ่มเรื่องของส่งมอบ software ที่ดี จะเน้นมากขึ้นทั้ง

  • Infrastructure as code
  • Pipelines as code
  • Security policy as code

การทำงานแบบ Remote ก็มีเข้ามาทั้ง

  • Pragmatic remote pairing ซึ่งเป็นแนวทางที่สำคัญและจำเป็น โดยมีเครื่องมือที่ดี เช่น Visual Studio Live Share ซึ่งเป็นอีกเครื่องมือที่เข้ามาอยู่ขั้นทดลองของกลุ่ม Tool นั่นเอง
  • Use remote native processes and approaches  มีความสำคัญมาก ๆ สำหรับการทำงานแบบ Remote และการทำงานแบบ Distributed team ต้องทำให้มั่นใจว่าทุก ๆ คนในทีมเข้าถึง และใช้งาน flow การทำงานต่าง ๆ ได้ดี ไหลลื่น เพื่อลดผลกระทบต่อการทำงานร่วมกัน รวมทั้งการทำงานแบบนี้ต้องระวังเรื่องของการสื่อสารแบบ Asynchronous ไว้ด้วย

ส่วนเรื่องที่ควรระมัดระวังหรือหยุดใช้งานไปก็เช่น

  • การสร้าง branch ที่มีอายุนาน ๆ ใน GitFlow ควรลด ละ เลิกไปซะ
  • Legacy migration feature parity คือการ migrate ระบบเดิมมาระบบใหม่ โดยมี feature เหมือนเดิม ซึ่งแนะนำอย่าทำ ให้ไปดูความต้องการก่อนว่า จริง ๆ แล้ว feature เดิมนั้น มีใช้งานจริง ๆ จากผู้ใช้งานเท่าใด จัดเรียงลำดับความสำคัญในเชิง business จากนั้นเลือก feature สำคัญจริง ๆ มาพัฒนา ซึ่งแนวทางนี้มันคือเรื่องของ Modern product development ที่เน้นในรายงานครั้งนี้มาก ๆ นั่นคือ การทำน้อยแต่ให้ได้มากนั่นเอง
  • Log aggregation for business analytics  แต่ก่อนเรามักจะทำการรวม log data ต่าง ๆ ไว้ตรงกลาง จากนั้นทำการ query และ filter มาใช้งาน ซึ่งก็ดูดีนะ แต่พบว่าข้อมูลเหล่านั้น ไม่ได้ลงในรายละเอียดความต้องการของผู้ใช้งานเลย ทำให้จำเป็นต้องคิดใหม่ทำใหม่ สำหรับข้อมูลที่จัดเก็บเพื่อให้เกิดผลประโยชน์สูงสุด ไม่ใช่เก็บให้เยอะ แล้วมาหา insight แบบนี้ไม่ถูกต้อง

กลุ่มของ Platform

ในกลุ่มนี้ที่เห็นชัดเลยคือ

  • .NET Core ซึ่งทำให้สามารถพัฒนาและ deploy แบบ Cross platform ได้เลย ซึ่งตอนนี้ออก .NET 5 preview version มาให้ใช้งานแล้วอีกด้วย
  • Istio หลังจากเปลี่ยน architecture ของตัวเอง ก็ทำให้มีความเสถียรและใช้งานได้ง่ายขึ้น กลายมาเป็นอีกหนึ่ง platform สำหรับการจัดการ operation และ traffic ต่าง ๆ ใน Kubernetes cluster
  • Argo CD ก็เข้ามาอยู่ในส่วนของ Trial เป็นอีกหนึ่ง platform ที่ทำงานร่วมกับ Kubernetes ทั้งเรื่องของการ deploy และ monitoring

หนึ่งสิ่งที่ควรระวังคือ

  • Node overload นั่นคือ คำแนะนำสำหรับการเลือกใช้ Node.JS มาพัฒนาระบบที่มีการประมวลผลแบบสูง ๆ จะก่อให้ระบบเกิดปัญหาได้

กลุ่มของ Tool

ในส่วนนี้ Cypress ซึ่งเป็นเครื่องมือในการทดสอบระบบงาน
หรืออาจจะเรียกว่า Developer End-to-End testing ได้เลย
ซึ่งใช้งานง่ายและเร็ว รวมทั้งยังเพิ่มสนับสนุน Firefox อีกด้วย
ทำให้เครื่องมือตัวนี้ได้รับความนิยมสูง
และเข้าอยู่ในกลุ่มการ Adopt

เหมือนกับ Figma ที่เป็นเครื่องมือในการออกแบบร่วมกันของทีม
ซึ่งเข้ามาช่วยปรับปรุงการงานตามแนวทางของ DesignOps อีกด้วย

ส่วนเครื่องมือสำหรับการทำงานแบบ Remote ก็มีเพียบทั้ง

  • Figma
  • MURAL
  • Visual Studio Live Share

อีกอย่างที่เห็นได้ชัดมาก ๆ คือ
เครื่องมือที่ทำงานร่วมกับ Docker และ Kubernetes เยอะมาก ๆ
ลองไปอ่านเพิ่มกันดูนะครับ

ส่วนตัวที่ผมชอบคือ Goss สำหรับการ validate server

กลุ่มของ Language และ Framework

ในกลุ่มนี้ React Hooks, Vue.js และ React Testing Library
ขึ้นมายืนอยู่ในแถวหน้าแล้ว
ดังนั้นสำหรับนักพัฒนาสาย Frontend ไม่น่าพลาดกันนะครับ
และต้องใช้เครื่องมืออย่าง Cypress เป็นด้วย

อีกอย่างที่น่าสนใจคือ ภาษา Rust เข้ามาอยู่ในส่วนของ Trial อีกด้วย
เนื่องจากมีการปรับปรุงตัวภาษาและ API อย่างต่อเนื่อง
สามารถพูดได้ว่าครบเครื่องในการพัฒนาระบบงานแล้ว

ส่วนตัวอื่น ๆ ที่น่าสนใจ เช่น

  • Tailwind CSS
  • SwiftUI
  • PyTorch
  • Sarama

สิ่งที่ควรระมัดระวังหรือเลิกใช้งาน
Enzyme นั้นเป็น library สำหรับการทดสอบระบบที่พัฒนาด้วย React
ซึ่งตัว Enzyme ไม่ค่อยทำการปรับปรุงหรือดูแลอะไรมากนัก
แนะนำให้ไปใช้ React Testing Library เป็นดีที่สุดนะครับ

มีแปลเป็นภาษาไทยด้วยนะครับ ลอง Download ไปอ่าน
และะศึกษากันดูครับ PDF ภาษาไทย