วิธีการทำงานของเรา

SDLC ที่ขับเคลื่อนด้วย AI: วิธีที่เราพัฒนาซอฟต์แวร์ด้วย Codex และ Claude

เราใช้ AI ในทุกขั้นตอนของวงจรการพัฒนาซอฟต์แวร์ เพื่อให้ทำงานได้เร็วขึ้นและตรวจพบปัญหาได้มากขึ้น โดยมีวิศวกรที่มีประสบการณ์รับผิดชอบทุกการตัดสินใจและโค้ดทุกบรรทัดที่ส่งมอบ

หลักการของเรา

AI ช่วยแบกรับงานหนัก คนยังเป็นผู้ควบคุม

ปัจจุบัน AI coding agent มีประโยชน์จริงตลอดทั้งวงจรการพัฒนา แต่หากใช้อย่างไม่ระมัดระวัง ก็อาจสร้างโค้ดที่ดูน่าเชื่อถือและดูสมเหตุสมผล แต่กลับผิดพลาดได้ หลักการสี่ข้อนี้ช่วยให้เราได้ความเร็วโดยตัดความเสี่ยงออกไป

ทุกการเปลี่ยนแปลงมีคนรับผิดชอบ

AI ร่างงาน ส่วนวิศวกรเป็นผู้ตรวจสอบ ทำความเข้าใจ และอนุมัติ ไม่มีสิ่งใดขึ้น production เพียงเพราะ “AI บอกว่าได้”

Context มาก่อน prompt

ผลลัพธ์จะดีได้เท่ากับสิ่งที่ AI รู้เกี่ยวกับระบบของคุณ เราจึงลงทุนกับ context (ข้อมูลบริบทที่ AI มองเห็น) เช่นเดียวกับที่เราลงทุนกับเอกสาร

ให้การทดสอบเป็นผู้ตัดสิน

โค้ดที่ AI เขียนต้องผ่านการทดสอบอัตโนมัติ linting และการตรวจสอบความปลอดภัยแบบเดียวกับโค้ดอื่นทั้งหมด ใน CI pipeline เดียวกัน

โค้ดของคุณยังเป็นของคุณ

โค้ดและข้อมูลของลูกค้าได้รับการดูแลภายใต้ NDA และกฎของคุณ รวมถึงการกำหนดว่าจะใช้หรือไม่ใช้เครื่องมือ AI ในส่วนใดบ้าง

ทีละขั้นตอน

AI ตลอด ทั้งวงจรการพัฒนา

ในแต่ละขั้นตอน: AI ช่วยในส่วนใด และส่วนใดที่ทีมงานของเราต้องรับผิดชอบเสมอ

Discovery และการเก็บ requirement

AI ช่วย
แปลงบันทึกการประชุมและเอกสารที่มีอยู่ให้เป็นร่าง user story, acceptance criteria และประเด็นคำถามที่ต้องหารือกับคุณ
คนรับผิดชอบ
ทำความเข้าใจธุรกิจของคุณ ตกลงขอบเขตงานและลำดับความสำคัญร่วมกับคุณ และอนุมัติ backlog

การออกแบบและสถาปัตยกรรม

AI ช่วย
สำรวจ codebase ที่ไม่คุ้นเคย เปรียบเทียบทางเลือกในการออกแบบ ร่าง architecture decision record, API contract และ checklist สำหรับ threat model
คนรับผิดชอบ
การตัดสินใจด้านสถาปัตยกรรม การชั่งน้ำหนักระหว่างต้นทุน ความปลอดภัย และการขยายระบบ รวมถึงการขออนุมัติจากคุณก่อนเริ่มพัฒนา

การพัฒนา

AI ช่วย
พัฒนาตาม ticket ที่ระบุรายละเอียดชัดเจน เขียน boilerplate, refactor, อัปเกรด dependency และทำ migration โดยส่งมอบแต่ละงานเป็น pull request ที่ตรวจสอบได้
คนรับผิดชอบ
การแบ่งงาน business logic ที่ซับซ้อน การทำ code review และการตัดสินใจ merge

การทดสอบและ QA

AI ช่วย
สร้าง test case ทั้งแบบ unit และ end-to-end จาก acceptance criteria เติมส่วนที่ coverage ยังขาด เสนอ edge case และคัดแยก flaky test
คนรับผิดชอบ
กลยุทธ์การทดสอบ การทำ exploratory testing และการตัดสินว่า release พร้อมหรือยัง ดูเพิ่มเติมที่ QA ที่ขับเคลื่อนด้วย AI (English)

การรีวิวและความปลอดภัย

AI ช่วย
รีวิวรอบแรกสำหรับทุก pull request เพื่อหาบั๊ก test ที่ขาดหาย รูปแบบโค้ดที่มีความเสี่ยง และ secret ที่หลุดอยู่ในโค้ด ก่อนที่วิศวกรอาวุโสจะตรวจสอบ
คนรับผิดชอบ
การรีวิวขั้นสุดท้าย การอนุมัติด้านความปลอดภัย และทุกส่วนที่เกี่ยวข้องกับการยืนยันตัวตน การชำระเงิน หรือข้อมูลส่วนบุคคล

Release และ DevOps

AI ช่วย
เขียนและรีวิว CI/CD pipeline และ Terraform ร่าง release note และอธิบายสาเหตุที่ build ล้มเหลว
คนรับผิดชอบ
สิทธิ์การเข้าถึง production การอนุมัติการเปลี่ยนแปลง และการตัดสินใจ rollback ดูบริการ DevOps & Cloud ของเรา

ดูแลระบบและปรับปรุงต่อเนื่อง

AI ช่วย
สรุป log และเหตุการณ์ผิดปกติ ร่าง post-mortem และอัปเดตเอกสารให้สอดคล้องกับโค้ดอยู่เสมอ
คนรับผิดชอบ
การรับมือเหตุการณ์ผิดปกติ การสรุปสาเหตุที่แท้จริง และการตัดสินใจว่าจะปรับปรุงอะไรต่อไป

จังหวะการทำงานแบบ agile ที่คุณคุ้นเคย

AI เป็นส่วนหนึ่งของกระบวนการส่งมอบงานตามปกติของเรา: sprint ละสองสัปดาห์ การเดโมอย่างสม่ำเสมอ และการอนุมัติจากคุณในแต่ละ milestone คุณยังคงเห็นความคืบหน้าและความรับผิดชอบได้ชัดเจนเช่นเดิม พร้อมการทดสอบที่มากขึ้นและเอกสารที่ดีขึ้นระหว่างทาง

การจัดการ Context

ส่วนที่ทีมส่วนใหญ่ มักทำพลาด

AI agent รู้เฉพาะสิ่งที่อยู่ใน context ของมันเท่านั้น ได้แก่ คำสั่ง ไฟล์ ticket และบทสนทนาที่มันมองเห็นในขณะนั้น หากให้ข้อมูลน้อยเกินไป มันจะเดา หากให้มากเกินไป ส่วนที่สำคัญก็จะถูกกลบหายไป

ทุกวันนี้ context window มีขนาดใหญ่ แต่ก็ไม่ได้ไม่จำกัด และคุณภาพของผลลัพธ์จะลดลงเมื่อเต็มไปด้วยข้อมูลที่ไม่เกี่ยวข้อง เราจึงจัดการ context อย่างตั้งใจ ในฐานะแนวปฏิบัติทางวิศวกรรม

1. ไฟล์คำสั่งในทุก repository

ทุกโปรเจกต์มีไฟล์คำสั่งสั้นๆ ที่อยู่ภายใต้ version control ซึ่งเครื่องมือทั้งสองจะอ่านเมื่อเริ่มงานทุกครั้ง ได้แก่ AGENTS.md สำหรับ Codex และ CLAUDE.md สำหรับ Claude Code ไฟล์นี้ระบุ stack วิธี build และ test แนวทางการเขียนโค้ด และกฎที่ห้ามละเมิด และได้รับการรีวิวผ่าน pull request เหมือนโค้ดอื่นๆ ความเข้าใจของ AI ต่อโปรเจกต์จึงพัฒนาขึ้นไปพร้อมกับตัวโปรเจกต์

# Project context for AI assistants (example)
## Stack
- API: Python 3.12, FastAPI, PostgreSQL 16
- Web: React + TypeScript
## Commands
- Tests: make test    Lint: make lint
## Conventions
- Every API change updates the OpenAPI spec and adds tests
- Configuration comes from environment variables, never from code
## Never
- Edit migrations that have already shipped
- Add a dependency without explaining why in the PR

2. มี spec ก่อนเขียน prompt

AI ทำงานจาก ticket ไม่ใช่จากความจำ ทุกงานเริ่มต้นด้วยคำอธิบายที่ชัดเจน acceptance criteria และลิงก์ไปยังบันทึกการออกแบบหรือ API contract ที่เกี่ยวข้อง หากเรายังเขียน spec ไม่ได้ แสดงว่างานนั้นยังไม่พร้อมสำหรับ AI และก็ยังไม่พร้อมสำหรับคนเช่นกัน

3. หนึ่งงาน หนึ่ง session

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

4. คัดเลือก ไม่ใช่เทรวม

เราชี้ให้ AI ดูเฉพาะโมดูล interface และ test ที่เกี่ยวข้องกับงาน แทนที่จะวางทั้ง repository หรือ log หลายพันบรรทัดลงไป Secret, credential และข้อมูลส่วนบุคคลจะไม่เป็นส่วนหนึ่งของ context เด็ดขาด

5. การตัดสินใจถูกบันทึกไว้นอกแชต

ทุกสิ่งที่ควรจดจำจะถูกบันทึกไว้ในที่ที่คงอยู่ถาวร เช่น architecture decision record คำอธิบายใน pull request และบันทึกส่งต่องานสั้นๆ เมื่อจบงานที่ใช้ AI ช่วยแต่ละงาน วิศวกรคนถัดไปหรือ AI session ถัดไปจะเริ่มจากบันทึกนั้น ไม่ใช่จากประวัติแชต

6. เชื่อมต่อเครื่องมืออย่างรอบคอบ

Agent สามารถเชื่อมต่อกับ issue tracker เอกสาร และระบบอื่นๆ ได้ (เช่น ผ่าน Model Context Protocol) เราเชื่อมต่อเฉพาะสิ่งที่งานนั้นจำเป็นต้องใช้ ด้วยสิทธิ์การเข้าถึงน้อยที่สุดที่ยังทำงานได้ และเฉพาะในกรณีที่ลูกค้าให้ความยินยอมเท่านั้น

7. ให้การทดสอบปิดวงจร

Context ที่ดีบอก AI ว่าต้องสร้างอะไร ส่วนการทดสอบบอกว่าสิ่งที่สร้างใช้งานได้หรือไม่ Agent จะรัน test และ linter ของโปรเจกต์เป็นส่วนหนึ่งของทุกงาน และ CI ยังคงเป็นแหล่งอ้างอิงความถูกต้องเพียงแหล่งเดียว

ทำไมเรื่องนี้จึงสำคัญกับคุณ: การจัดการ context ที่ดีคือสิ่งที่แยก AI ที่ช่วยประหยัดเวลาได้หลายวัน ออกจาก AI ที่สร้างงานแก้ซ้ำ นี่ยังเป็นเหตุผลที่งานซึ่งใช้ AI ช่วยของเรามาพร้อมเอกสารที่ดีกว่า เพราะ context ที่เราเขียนให้ AI ก็เป็นประโยชน์ต่อทีมของคุณด้วยเช่นกัน

เครื่องมือของเรา

AI ที่เราใช้ และใช้ที่ไหน

ในการเขียนโค้ด เราใช้ Codex (จาก OpenAI) และ Claude (จาก Anthropic) โดยเลือกให้เหมาะกับแต่ละงาน ส่วนฟีเจอร์ AI ภายในระบบที่เราพัฒนา เช่น HRxAI เราใช้โมเดล Gemini ของ Google

Codex

OpenAI · coding agent

ตัวเลือกของเราสำหรับงานที่มีขอบเขตชัดเจนและเป็นอิสระต่อกัน ซึ่งสามารถรันพร้อมกันได้ในสภาพแวดล้อมที่แยกออกจากกัน โดยแต่ละงานจบลงด้วย pull request

  • เพิ่ม test ให้กับโมดูลที่มีอยู่และปิดช่องว่างของ coverage
  • Refactor เล็กๆ อัปเกรด dependency และจัดระเบียบโค้ดทั่วทั้ง codebase
  • แก้บั๊กที่มีคำอธิบายชัดเจน โดยเริ่มจาก test ที่ยังไม่ผ่าน
  • ทำหลาย ticket พร้อมกัน แล้วรีวิวทีละรายการ

Claude

Anthropic · coding agent

ตัวเลือกของเราสำหรับงานที่ต้องใช้ context จำนวนมากและการคิดวิเคราะห์อย่างรอบคอบ ทั้งใน terminal และ IDE ด้วย Claude Code

  • สำรวจ codebase ที่ไม่คุ้นเคยหรือระบบเดิม (legacy) และอธิบายการทำงานของระบบ
  • วางแผนการเปลี่ยนแปลงที่กระทบหลายไฟล์ก่อนเริ่มเขียนโค้ด
  • รีวิว pull request รอบแรก และร่วมหารือเรื่องสถาปัตยกรรมและการออกแบบ
  • เขียนและอัปเดตเอกสารทางเทคนิคและบันทึกส่งต่องาน

Gemini

Google · ในผลิตภัณฑ์ของเรา

โมเดลเบื้องหลังฟีเจอร์ AI ในระบบที่เราพัฒนา รวมถึงแพลตฟอร์มสรรหาบุคลากร HRxAI ของเรา AI ในผลิตภัณฑ์ต้องเชื่อถือได้ คุ้มค่าเมื่อใช้งานจำนวนมาก และดูแลข้อมูลผู้ใช้อย่างระมัดระวัง

  • ฟีเจอร์ AI ใน HRxAI แพลตฟอร์มสรรหาบุคลากรด้วย AI ของเรา
  • อ่านและทำความเข้าใจเอกสาร เช่น เรซูเม่และรายละเอียดตำแหน่งงาน
  • ทดสอบกับตัวอย่างจริงก่อนเปิดใช้ฟีเจอร์ และติดตามผลหลังใช้งาน
  • ใช้หลักการรีวิว การจัดการ context และกฎด้านข้อมูลเดียวกับงานเขียนโค้ด
การกำกับดูแล

มาตรการที่ ปกป้องโปรเจกต์ของคุณ

การรักษาความลับ

เราใช้บัญชี AI ระดับธุรกิจที่ตั้งค่าไว้ไม่ให้นำโค้ดและข้อมูลของคุณไปใช้ฝึกโมเดล และปฏิบัติตาม NDA รวมถึงข้อจำกัดการใช้เครื่องมือที่คุณกำหนด

การเปลี่ยนแปลงที่ผ่านการรีวิวและตรวจสอบย้อนหลังได้

การเปลี่ยนแปลงที่ใช้ AI ช่วยต้องผ่านการรีวิวผ่าน pull request เช่นเดียวกับงานอื่นทั้งหมด จึงมีผู้รีวิวที่ระบุชื่อได้เสมอ และมีประวัติที่ชัดเจนว่าเปลี่ยนแปลงอะไรและเพราะอะไร

ไม่มี secret ใน context

Credential ข้อมูล production และข้อมูลส่วนบุคคลจะไม่ถูกใส่ลงใน prompt และมีการสแกน secret อัตโนมัติใน pipeline เป็นอีกชั้นของการป้องกัน

ไลเซนส์และความเป็นเจ้าของ

เราตรวจสอบ dependency ใหม่และโค้ดที่ AI สร้างขึ้นเพื่อหาปัญหาด้านไลเซนส์ โค้ดที่เราส่งมอบเป็นของคุณตามสัญญา ไม่ว่าจะเขียนขึ้นด้วยวิธีใดก็ตาม

คำนึงถึง PDPA

สำหรับโปรเจกต์ที่มีการประมวลผลข้อมูลส่วนบุคคล เราออกแบบและทดสอบโดยคำนึงถึง PDPA ของประเทศไทย และไม่นำข้อมูลส่วนบุคคลจริงเข้าสู่เครื่องมือ AI

กฎของคุณ กำหนดได้ในแต่ละโปรเจกต์

ลูกค้าบางรายต้องการใช้ AI ในทุกส่วน บางรายใช้เฉพาะงานทดสอบและเอกสาร และบางรายไม่ใช้เลย เราจะตกลงเรื่องนี้กับคุณตั้งแต่เริ่มต้นและปฏิบัติตามอย่างเคร่งครัด

คำถามที่พบบ่อย

คำถามที่ลูกค้า ถามเราบ่อย

AI เป็นผู้เขียนโค้ดทั้งหมดของคุณหรือไม่?

ไม่ใช่ AI ร่างงานประจำเป็นส่วนใหญ่ เช่น test, boilerplate, การ refactor และเอกสาร รวมถึงช่วยในโจทย์ที่ยากขึ้น แต่วิศวกรเป็นผู้ออกแบบโซลูชัน เขียนส่วนที่ซับซ้อน รีวิวทุกอย่าง และตัดสินใจว่าอะไรจะถูกส่งมอบ

คุณภาพต่ำกว่าโค้ดที่คนเขียนเองหรือไม่?

โค้ดต้องผ่านมาตรฐานเดียวกัน ทั้ง code review, test, linting และการตรวจสอบความปลอดภัย ใน CI pipeline เดียวกัน ในทางปฏิบัติ AI มักช่วยเพิ่ม test coverage และเอกสาร เพราะสามารถสร้างได้ด้วยต้นทุนที่ต่ำลงมาก

โค้ดของเราจะถูกนำไปใช้ฝึกโมเดล AI หรือไม่?

เราใช้บัญชีระดับธุรกิจที่ตั้งค่าไว้ไม่ให้นำเนื้อหาของลูกค้าไปใช้ฝึกโมเดล และสามารถจำกัดการใช้เครื่องมือเพิ่มเติมได้ภายใต้ NDA ของคุณ สอบถามรายละเอียดสำหรับโปรเจกต์ของคุณได้จากเรา

ใครเป็นเจ้าของโค้ดที่คุณส่งมอบ?

คุณเป็นเจ้าของตามที่ระบุไว้ในสัญญา ไม่ว่าโค้ดบรรทัดนั้นจะพิมพ์โดยวิศวกร หรือร่างโดยเครื่องมือ AI แล้วผ่านการรีวิวโดยวิศวกรก็ตาม

เราเลือกไม่ใช้ AI ในโปรเจกต์ของเราได้หรือไม่?

ได้ เราตกลงกฎกันตั้งแต่เริ่มต้นทุกโครงการ ตั้งแต่การส่งมอบงานโดยใช้ AI ช่วยเต็มรูปแบบ ไปจนถึงไม่ใช้ AI เลย และเราปฏิบัติตามข้อตกลงนั้น

วิธีนี้ทำให้โปรเจกต์มีค่าใช้จ่ายถูกลงหรือไม่?

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

ฟีเจอร์ AI ในผลิตภัณฑ์ที่คุณพัฒนาใช้โมเดลอะไร?

ฟีเจอร์ AI ภายในผลิตภัณฑ์ เช่น HRxAI เราพัฒนาบนโมเดล Gemini ของ Google หากโปรเจกต์ของคุณมีข้อกำหนดเฉพาะ เช่น ตำแหน่งจัดเก็บข้อมูลหรือเป้าหมายด้านต้นทุน เราจะหารือทางเลือกกับคุณ

ต้องการการส่งมอบงานด้วย AI ที่ทำอย่างถูกวิธี?

เล่าให้เราฟังเกี่ยวกับโปรเจกต์ของคุณ หรือเรื่องการนำ AI มาใช้ในทีมของคุณเอง เรายินดีแบ่งปันสิ่งที่ได้ผล รวมถึงวิธีตั้งค่าการจัดการ context ใน repository ของคุณ

นัดปรึกษาฟรี อ่านต่อ: AI ในการพัฒนาซอฟต์แวร์ (English)