ผมเลิกเขียนโค้ดแล้ว และแอปของผมก็ปล่อยใช้งานได้ภายใน 3 วัน
เมื่อสามเดือนก่อน ผมสร้างแดชบอร์ด SaaS แบบ full-stack ขึ้นมาตัวหนึ่ง มันมีทั้งระบบ auth, ฐานข้อมูล, REST API และ UI
ผมเขียนโค้ดไปเพียงประมาณ 200 บรรทัด ส่วนที่เหลือ AI เป็นคนทำ ทั้งเขียนโค้ด, ตรวจทาน และแก้ไขมัน
ตอนนี้แอปใช้งานได้จริงแล้ว และมีผู้ใช้จ่ายเงินซื้อบริการ ผมไม่ต้องนั่งอดนอนตอนตี 2 เพื่อแก้บั๊กที่ตัวเองไม่เข้าใจอีกต่อไป
นี่ไม่ใช่การโอ้อวด แต่นี่คือคำเตือน
บทบาทของนักพัฒนา (developer) กำลังเปลี่ยนไปอย่างรวดเร็ว นักพัฒนาที่จะชนะไม่ใช่คนที่ต่อต้านการเปลี่ยนแปลงนี้ แต่คือคนที่นำการเปลี่ยนแปลงนี้
เลิกมองว่า AI เป็นแค่เครื่องมือช่วยเติมคำอัตโนมัติ (autocomplete) ได้แล้ว นั่นมันวิธีคิดแบบเก่า
การพัฒนาแบบ AI-native คือโมเดลทางความคิดแบบใหม่ คุณไม่ได้ใช้ AI เพื่อเขียนโค้ดให้เร็วขึ้น แต่คุณใช้ AI เพื่อจัดการเรื่องการลงมือทำ (implementation) ในขณะที่คุณทำหน้าที่วางโครงสร้าง (architecture) และการตัดสินใจ (judgment)
การเปลี่ยนแปลงมีลักษณะดังนี้:
- โมเดลแบบเก่า: คุณเขียนโค้ด AI ช่วยให้คุณพิมพ์ได้เร็วขึ้น
- โมเดลแบบใหม่: คุณกำหนด "อะไร" (what) และ "ทำไม" (why) ส่วน AI จัดการเรื่อง "อย่างไร" (how) แล้วคุณเป็นคนตรวจสอบและควบคุมทิศทาง
ผมใช้เวิร์กโฟลว์นี้เป๊ะๆ ในการสร้างแอปของผม:
- วางโครงสร้างโปรเจกต์ (Scaffold) โดยใช้เครื่องมือมาตรฐานอย่าง Next.js และ Prisma
- อธิบายโมเดลข้อมูลด้วยภาษาอังกฤษแบบธรรมดา
- ให้ AI สร้าง schema ขึ้นมา
- ใช้ prompt ที่ละเอียดเพื่อสร้าง server actions และ logic
ผมไม่ได้เขียนฟังก์ชันเอง ผมแค่ตรวจทาน ทดสอบ และปรับแต่งข้อความแสดงข้อผิดพลาด (error messages)
นั่นแหละคืองานรูปแบบใหม่
ถ้า AI เป็นคนเขียนโค้ด คุณค่าของคุณจะมาจาก meta-skills AI เก่งเรื่องการจดจำรูปแบบ (patterns) แต่แย่เรื่องการตัดสินใจ
AI ไม่สามารถตัดสินใจได้ว่า:
- คุณจำเป็นต้องใช้ server action หรือ API route
- state ของคุณควรอยู่ที่ไหน
- คุณควรใช้ monorepo หรือไม่
การตัดสินใจเหล่านี้ต้องใช้บริบท (context) ซึ่ง AI ขาดสิ่งนี้ แต่คุณมีมัน
ความแตกต่างระหว่าง junior developer และ senior developer ในตอนนี้คือความแม่นยำในการเขียน prompt
- Prompt ที่ไม่ดี: "Write a rate limiter."
- Prompt ที่ดี: "Write a Redis-backed rate limiter for a Next.js API route. Limit to 10 requests per minute per IP. Return a 429 error when exceeded. Skip admins. Log events to Prisma."
Prompt ที่สองจะได้โค้ดที่พร้อมใช้งานจริง (production-ready) ในทันที
คุณต้องระวังเรื่อง "ความล้มเหลวที่เงียบเชียบ" (silent failures) ด้วย โค้ดจาก AI มักจะดูเหมือนถูกต้องแต่แฝงไปด้วยบั๊กที่ตรวจจับยาก ให้ปฏิบัติกับผลลัพธ์จาก AI เหมือนกับเป็น pull request จาก junior developer คือต้องตรวจสอบด้วยความระมัดระวังและไม่ประมาท
อย่าพยายามปรับปรุงเพื่อเขียนโค้ดให้น้อยลง แต่จงปรับปรุงทักษะที่อยู่รอบๆ ตัวโค้ดแทน
นักพัฒนา A เขียนทุกอย่างด้วยมือและทำงานได้ช้า นักพัฒนา B ใช้ AI จัดการรายละเอียด และใช้เวลาไปกับการออกแบบระบบ (system design)
Developer B คือมาตรฐานใหม่
ลองทำสิ่งนี้ในสัปดาห์นี้:
- เขียน spec ของฟีเจอร์ให้ครบถ้วนก่อนเริ่มเขียนโค้ด
- ใช้ spec นั้นเป็น prompt ของคุณ
- ตรวจสอบผลลัพธ์เหมือนกับที่วิศวกรอาวุโสตรวจงานวิศวกรระดับจูเนียร์
เป้าหมายไม่ใช่การเลิกเป็นนักพัฒนา แต่คือการเป็นนักพัฒนาที่เก่งขึ้น
ชุมชนแห่งการเรียนรู้ (เลือกเข้าร่วมได้): https://t.me/GyaanSetuAi