20 คะแนน โดย xguru 2023-10-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แสดงภาพและอธิบายเทรนด์ล่าสุดในด้านเทคนิค/เครื่องมือ/แพลตฟอร์ม/ภาษาและเฟรมเวิร์กสำหรับการพัฒนา แบ่งเป็น 4 ระดับคือ Hold/Assess/Trial/Adopt

การพัฒนาซอฟต์แวร์ที่มี AI ช่วยสนับสนุน

  • Open-source LLM สำหรับการเขียนโค้ดจะเข้ามาเขย่าสภาพแวดล้อมของเครื่องมือพัฒนา
  • นอกจากนี้ยังมีศักยภาพสูงนอกเหนือจากการเขียนโค้ด เช่น การช่วยเขียน user story, การทำ user research, elevator pitch และงานที่เกี่ยวกับภาษาอื่นๆ
  • ในขณะเดียวกัน นักพัฒนาต้องใช้เครื่องมือเหล่านี้อย่างมีความรับผิดชอบ และต้องระวังเรื่องอย่าง package hallucinations ด้วย

การวัดผลผลิตนั้นมีประสิทธิผลแค่ไหน?

  • การพัฒนาซอฟต์แวร์อาจดูเหมือนเวทมนตร์สำหรับผู้ที่ไม่ใช่ผู้เชี่ยวชาญด้านเทคนิค และด้วยเหตุนี้ผู้จัดการจึงพยายามวัดว่านักพัฒนาทำงานได้มีประสิทธิผลเพียงใด
  • Martin Fowler เคยเขียนบทความชื่อ "ไม่สามารถวัด productivity ได้" ในปี 2003
  • จนถึงตอนนี้ ตัวชี้วัดทดแทนของ Activity ในกรอบ SPACE (Satisfaction and well-being, Performance, Activity, Communication and collaboration, Efficiency and flow) เช่น จำนวน pull request หรือจำนวน issue ที่แก้ไข ก็ยังไม่ค่อยดีนัก
  • แทนที่จะวัด productivity โดยตรง วงการเริ่มหันมาโฟกัสที่ "engineering effectiveness" ซึ่งหมายถึงการ "วัดองค์ประกอบที่ช่วยให้เกิดหรือขัดขวาง flow"
  • แทนที่จะโฟกัสที่กิจกรรมของรายบุคคล ควรโฟกัสที่สาเหตุของความสูญเปล่าในระบบ และเงื่อนไขที่พิสูจน์เชิงประจักษ์ได้ว่ามีผลต่อการรับรู้เรื่อง "productivity" ของนักพัฒนา
  • เครื่องมือใหม่อย่าง DX DevEx 360 พยายามแก้ปัญหานี้ด้วยการเน้นที่ developer experience แทนการวัดผลลัพธ์เฉพาะอย่าง
  • อย่างไรก็ตาม ผู้นำจำนวนมากยังคงพูดถึง "productivity" ของนักพัฒนาในลักษณะที่คลุมเครือและเป็นเชิงคุณภาพ
  • การกลับมาสนใจเรื่องนี้อย่างน้อยส่วนหนึ่งน่าจะเกี่ยวข้องกับผลกระทบของการพัฒนาซอฟต์แวร์ที่มี AI ช่วย ซึ่งก่อให้เกิดคำถามว่า "มันกำลังสร้างผลกระทบเชิงบวกอยู่หรือไม่?"
  • การวัด productivity อย่างแท้จริงยังคงเป็นเรื่องยาก

LLM จำนวนมหาศาล

  • LLM (large language model) เป็นรากฐานของนวัตกรรม AI สมัยใหม่จำนวนมาก
  • ปัจจุบันการทดลองจำนวนมากรวมถึงการแสดงอินเทอร์เฟซผู้ใช้คล้ายแชตอย่าง ChatGPT หรือ Bard
  • โดยกว้างๆ แล้ว LLM เป็นเครื่องมือที่สามารถแก้ปัญหาได้หลากหลาย ตั้งแต่การสร้างคอนเทนต์ (ข้อความ ภาพ และวิดีโอ) ไปจนถึงการสร้างโค้ด การสรุป และการแปล
  • โมเดลเหล่านี้ใช้ "ภาษาธรรมชาติ" เป็นชั้น abstraction ที่ทรงพลัง จึงมอบชุดเครื่องมือที่ดึงดูดใจอย่างกว้างขวาง และมีคนทำงานสายข้อมูลจำนวนมากใช้งานอยู่
  • มีการพูดถึง LLM ในหลายแง่มุม รวมถึง self-hosting ที่ให้การปรับแต่งและการควบคุมที่แข็งแกร่งกว่าการใช้ LLM ที่โฮสต์บนคลาวด์
  • เมื่อความซับซ้อนของ LLM เพิ่มขึ้น เราจึงพิจารณาความสามารถในการ quantize และรัน LLM ใน form factor ขนาดเล็ก โดยเฉพาะบนอุปกรณ์ edge และในสภาพแวดล้อมที่มีข้อจำกัด
  • ยังได้พิจารณา "ReAct Prompting" ที่สัญญาว่าจะช่วยเพิ่มประสิทธิภาพ พร้อมกับ LLM-powered autonomous agents ที่สามารถใช้สร้างแอปพลิเคชันแบบไดนามิกที่ก้าวข้ามการโต้ตอบแบบถาม-ตอบ
  • นอกจากนี้ยังกล่าวถึง vector database หลายตัวที่กลับมาได้รับความนิยมอีกครั้งเพราะ LLM รวมถึง Pinecone
  • ความสามารถพื้นฐานของ LLM ทั้งด้านการทำงานเฉพาะทางและความสามารถในการ self-hosting ยังคงเติบโตอย่างระเบิดระเบ้อ

วิธีแก้ปัญหาเฉพาะหน้าของการส่งมอบงานแบบรีโมตเริ่มสุกงอม

  • ทีมพัฒนาซอฟต์แวร์แบบรีโมตใช้เทคโนโลยีเพื่อก้าวข้ามข้อจำกัดด้านภูมิศาสตร์มาหลายปีแล้ว แต่ผลกระทบจากโรคระบาดได้เร่งนวัตกรรมในด้านนี้ จนทำให้งานแบบรีโมตเต็มรูปแบบหรือไฮบริดกลายเป็นแนวโน้มต่อเนื่อง
  • Radar ครั้งนี้พูดถึงวิธีการและเครื่องมือสำหรับการพัฒนาซอฟต์แวร์แบบรีโมตที่เติบโตขึ้น พร้อมทั้งวิธีที่ทีมยังคงผลักขอบเขตต่อไปโดยเน้นการทำงานร่วมกันอย่างมีประสิทธิภาพในสภาพแวดล้อมที่กระจายตัวและเปลี่ยนแปลงตลอดเวลามากกว่าที่เคย
  • บางทีมยังคงนำเสนอวิธีแก้ปัญหาที่สร้างสรรค์ด้วยการใช้เครื่องมือทำงานร่วมกันแบบใหม่
  • บางทีมยังคงปรับใช้และพัฒนาแนวปฏิบัติแบบพบหน้าที่มีอยู่เดิมสำหรับกิจกรรมอย่าง pair programming แบบเรียลไทม์หรือ mob programming รวมถึงเวิร์กช็อปแบบกระจายตัว (เช่น remote event storming) โดยทำได้ทั้งแบบ asynchronous และ synchronous
  • แม้งานแบบรีโมตจะมีข้อดีหลายอย่าง (รวมถึงการเข้าถึงแหล่งบุคลากรที่หลากหลายกว่า) แต่คุณค่าของปฏิสัมพันธ์แบบพบหน้ายังคงชัดเจน
  • ทีมไม่ควรปล่อยให้ feedback loop ที่สำคัญสูญหายไป และต้องตระหนักถึงข้อดีข้อเสียที่เกิดขึ้นเมื่อเปลี่ยนไปสู่การตั้งค่าการทำงานแบบรีโมต

[Techiniques]

Adopt

  1. Design systems
  2. Lightweight approach to RFCs
โฆษณา

Trial

  1. Accessibility-aware component test design
  2. Attack path analysis
  3. Automatic merging of dependency update PRs
  4. Data product thinking for FAIR data
  5. OIDC for GitHub Actions
  6. Provision monitors and alerts with Terraform
  7. ReAct prompting
  8. Retrieval-Augmented Generation (RAG)
  9. Risk-based failure modeling
  10. Semi-structured natural language for LLMs
  11. Tracking health over debt
  12. Unit testing for alerting rules
  13. Zero trust security for CI/CD Assess
  14. Dependency health checks to counter package hallucinations
  15. Design system decision records
  16. GitOps
  17. LLM-powered autonomous agents
  18. Platform orchestration
  19. Self-hosted LLMs

Hold

  1. Ignoring OWASP Top 10 lists
  2. Web components for server-siderendered (SSR) web apps

[Platforms]

Adopt

  1. Colima

Trial

  1. CloudEvents
  2. DataOps.live
  3. Google Cloud Vertex AI
  4. Immuta
  5. Lokalise
  6. Orca
  7. Trino
  8. Wiz

Assess

  1. ActivityPub
  2. Azure Container Apps
  3. Azure OpenAI Service
  4. ChatGLM
  5. Chroma
  6. Kraftful
  7. pgvector
  8. Pinecone
  9. wazero
โฆษณา

[Tools]

Adopt

  1. dbt
  2. Mermaid
  3. Ruff
  4. Snyk

Trial

  1. AWS Control Tower
  2. Bloc
  3. cdk-nag
  4. Checkov
  5. Chromatic
  6. Cilium
  7. Cloud Carbon Footprint
  8. Container Structure Tests
  9. Devbox
  10. DX DevEx 360
  11. GitHub Copilot
  12. Insomnia
  13. IntelliJ HTTP Client plugin
  14. KEDA
  15. Kubeconform
  16. mob
  17. MobSF
  18. Mocks Server
  19. Prisma runtime defense
  20. Terratest
  21. Thanos
  22. Yalc

Assess

  1. ChatGPT
  2. Codeium
  3. GitHub merge queue
  4. Google Bard
  5. Google Cloud Workstations
  6. Gradio
  7. KWOK
  8. Llama 2
  9. Maestro
  10. Open-source LLMs for coding
  11. OpenCost
  12. OpenRewrite
  13. OrbStack
  14. Pixie
  15. Tabnine

[Languages and Frameworks]

Adopt

  1. Playwright

Trial

  1. .NET Minimal API
  2. Ajv
  3. Armeria
  4. AWS SAM
  5. Dart
  6. fast-check
  7. Kotlin with Spring
  8. Mockery
  9. Netflix DGS
  10. OpenTelemetry
  11. Polars
  12. Pushpin
  13. Snowpark

Assess

  1. Baseline Profiles
  2. GGML
  3. GPTCache
  4. Grammatical Inflection API
  5. htmx
  6. Kotlin Kover
  7. LangChain
  8. LlamaIndex
  9. promptfoo
  10. Semantic Kernel
  11. Spring Modulith