ตั้งแต่เริ่มเป็นโปรแกรมเมอร์มา สกิลติดตัวที่ต้องใช้ตลอดคือ "continuous learning" มีเครื่องมือใหม่ ๆ ออกมาแทบจะทุกสัปดาห์ ซึ่งจะตามทุกอันก็ไม่ไหว ทำให้ต้องตัดสินใจเลือกว่าเครื่องมือไหนมีประโยชน์กับการทำงานของเรามากที่สุด เพราะ การเรียนสิ่งใหม่ ๆ มันมี learning curve ที่ต้องใช้พลังต่อสู้กับมันสักพักเสมอกว่าจะใช้ได้คล่อง
ออกตัวไว้ก่อนว่าบทความนี้ผมเขียนเองด้วยมือทั้งหมด ไม่ผ่าน AI ใด ๆ ทั้งสิ้น ไม่อยากเชื่อว่าถึงยุคที่เราต้องเขียน remark ไว้ว่าบทความนี้เขียนด้วยมนุษย์ แต่มันก็เป็นไปแล้ว
ในช่วงการเรียนอะไรใหม่ซักอย่าง ผมจะผ่าน 3 สเตปนี้เสมอ
- ใช้ไม่เป็น ทำได้ช้า
- ใช้เป็นแล้ว เริ่มประยุกต์กับงานได้
- ใช้คล่องจนเป็นส่วนนึง workflow ของตัวเองเลย
สำหรับการหัดใช้ AI ช่วยในการเขียนโค้ดก็ไม่ต่างกัน ผมเลยอยากจะมาเล่าประสบการณ์ในการเรียนรู้ ตั้งแต่เริ่มรู้จักมันใหม่ ๆ จนถึงตอนนี้ที่มันกลายเป็นส่วนนึงของการทำงานที่ผมคิดว่าขาดไม่ได้ไปแล้ว
ยุคแรก: คุยกับแชทแล้วก๊อปวาง
ช่วง ChatGPT ออกมาใหม่ ๆ ผมเห็นว่ามันเจ๋งดี เพราะ การทำงานปกติก็มี step ในการค้นข้อมูล เปิด doc อ่าน หรือ หาวิธีแก้บัคจาก Stackoverflow อะไรแบบนี้ค่อนข้างบ่อยอยู่แล้วยุคนี้เป็นยุคที่ผมเริ่มสนใจเข้ามาใช้งานมันว่ามันช่วยอะไรได้บ้าง ซึ่งสำหรับตอนนั้นมันเป็น research tool ที่ดีมาก แทนที่จะต้องใช้เวลา Google หาลิ้ง ค่อย ๆ อ่าน คำตอบมันออกมาให้เลย
แต่ปัญหาใหญ่ของยุคนี้คือ "อาการหลอน" เพราะว่า output ที่ออกมาไม่ได้เชื่อถือได้ขนาดนั้น ซึ่งมันหลอนบ่อยมากจริง ๆ คนในวงการก็พยายามจะแก้ปัญหาก็มีการออกมาสอนเทคนิคต่าง ๆ ที่หลาย ๆ คนอาจเคยได้ยินชื่อ
แต่ปัญหาใหญ่ของยุคนี้คือ "อาการหลอน" เพราะว่า output ที่ออกมาไม่ได้เชื่อถือได้ขนาดนั้น ซึ่งมันหลอนบ่อยมากจริง ๆ คนในวงการก็พยายามจะแก้ปัญหาก็มีการออกมาสอนเทคนิคต่าง ๆ ที่หลาย ๆ คนอาจเคยได้ยินชื่อ
- Retrieval Augmented Generation
- Context Engineering
- Prompt Engineering
ซึ่งจากมุมโปรแกรมเมอร์อย่างผมที่เข้าใจโค้ดอยู่แล้ว ผมรู้สึกเลยว่า ถ้าต้องเอาพลังไปใส่กับพวกนั้น สุดท้ายเขียนเองเร็วกว่า ลักษณะการทำงานของผมเลยไม่ได้เปลี่ยนจากเดิมมาก เป็นการคุยกับมันใน chat interface ถามโน่นนี่เรื่องที่ผมรู้อยู่แล้วแต่ลืมคำสั่งว่าต้องเขียนยังไง ใช้การก๊อปจากหน้า chat มาวางใน code editor
ยุคนี้เป็นยุคที่ผมยังเห็นว่า benefit ยังไม่คุ้มกับ effort ที่ต้องลงกับมัน มีไปศึกษา concept พวกนี้มาด้วย แต่ก็ไม่ได้เอามาใช้งานเพราะทำเองเร็วกว่า ถ้าต้องเอาเวลาไปแก้สิ่งที่ AI มันหลอน ๆ ออกมา
ยุคสอง: Smart Autocomplete กับ Copilot
ยุคนี้เป็นยุคกำเนิดของ Cursor ที่ตอนแรกมันแค่ fork VSCode ที่เป็น Open Source เอาไปต่อยอดโดยการเพิ่ม feature AI เข้าไป ผมก็เข้าไปลองเหมือนกับทุกครั้งที่วงการ tech มีกระแสอะไรใหม่ ๆ
รอบนี้เริ่มรู้สึกว่ามันมีผลต่อ productivity แล้ว ด้วยความที่ autocomplete เมื่อก่อนมันอยู่แค่ระดับการช่วยกรอก syntax ที่ต้องพิมพ์ซ้ำ ๆ แต่หลังจากมี smart autocomplete คือ พอเราพิมพ์ไปซักนิดนึง มันเดาที่เหลือให้เราเลย บางที tab ทีเดียวได้มาทั้งไฟล์ กับ IDE เริ่มมี "Copilot" ข้าง ๆ ทำให้ไม่ต้องเปิดหน้าเว็บแยก เพิ่มความสะดวกสบาย แต่ก็มาพร้อมกับค่าใช้จ่ายที่เมื่อก่อนจะเขียน code มันไม่จำเป็นต้องมี
สำหรับผมมันก็ยังมีปัญหาเดิม คือ มันมั่ว! model เก่งขึ้น เริ่ม reference code เข้าไปได้ตรง ๆ แต่ก็ต้องอาศัยการ steer (เปลี่ยนทิศทาง) ค่อนข้างเยอะ
ช่วงนี้เป็นช่วงที่ผมลองผิดลองถูกกับมันหลายท่า พยายามให้มันลองสร้างเครื่องมือกับระบบที่ผมเคยโค้ดเอง โดยฝืน ๆ พยายามไม่ไปแก้เอง อยากรู้ว่ามันทำได้ดีแค่ไหน เป็นช่วงที่หงุดหงิดกับมันมาก ๆ แต่ก็เป็นช่วงที่เรียนรู้ว่าสิ่งนี้มันควรใช้ทำอะไร ไม่ควรใช้ทำอะไรมากที่สุด
สิ่งที่ชัดที่สุด คือ ถ้ามี design หรือสิ่งที่อยากทำเรารู้อยู่แล้วว่ามันต้องทำยังไง แล้วใช้มันเพื่อ implement อย่างเดียว AI ยุคนี้จะทำมันได้ค่อนข้างดีมาก ๆ
Context และ prompt engineering หมดความหมายสำหรับ user ที่ใช้งานระบบอย่างเดียวแบบผม ผมสั่งมันแบบคุยกับ engineer ในทีมนี้แหละ ไม่ต้องคิดมาก รู้สึกว่ามันทำงานได้ดีกับ scoped work ที่แบ่งมาให้แล้วว่าทำ A B C ให้หน่อย
นอกจากเทคนิคข้างบนจะไม่ relevant เท่าไหร่แล้วยุคนี้หลาย ๆ คนน่าจะได้ยินคำว่า MCP (Model Context Protocol) เยอะ เป็นการเพิ่มความสามารถให้ AI โดยมี API ให้มันยิงไปถามว่าเรียกใช้อะไรได้บ้าง ถูกออกแบบมาให้เป็น protocol กลาง ที่จริง ๆ มันก็คือ JSON API นี่แหละ แค่มันมีการตกลงกันว่าจะมี field อะไรบ้าง
คน hype MCP กันสุด ๆ เพราะมันทำให้ AI เก่งขึ้นและแม่นยำขึ้น แต่พอผมลองใช้งานจริง คือ MCP ทั้งเปลือง token, เปลือง context และเพิ่มความหน่วงในการรอคำตอบจาก AI รู้สึกว่ามันน่าจะไม่ใช่ท่าที่ถูกต้อง เลยไม่ได้ไปลงทุนลงแรงเรียนรู้มันมาก ซึ่งในยุคถัดไปจะได้รู้กันว่าผมตัดสินใจถูกไหม
ฟีลลิ่งการทำงานยุคนี้คือลงแรงน้อยกว่ายุคก่อนหน้าประมาณนึง แต่ก็ยังปล่อยมันทิ้งไว้ไม่ได้ ต้องดูมันบ่อย ๆ ว่ามันจะหลุดไปไกลไหม ยุคนี้ผมมีทำคลิปรีวิวบน YouTube ไว้ด้วย ตามไปดูลงลึกกันได้ครับและผมเริ่มรู้สึกได้แล้วว่าการทำงานของผมเริ่มเปลี่ยนไปจากเดิมในทางที่ productive ขึ้น แต่ก็ยังใช้รู้สึกฝืน ๆ อยู่ในบางงาน
ยุคปัจจุบัน: Agentic Coding
แล้วก็มาถึงยุคปัจจุบันที่เรียกได้ว่าเป็นยุคแห่ง "Agent" ที่ model มันเริ่มจะเก่งจนตันกันแล้ว เริ่มมี MoE (Mixture of Experts) หรือ multi-modal model ที่ทำได้มากกว่าอ่าน text รับเสียงได้ รับรูปได้ ยุคนี้มีสิ่งที่ผมรู้สึกว่าเราเจอท่าที่ถูกต้องในการทำงาน coding ด้วย AI แล้ว
MCP ที่เพิ่มความสามารถให้ AI โดนลดทอนความบวม กลายเป็น
MCP ที่เพิ่มความสามารถให้ AI โดนลดทอนความบวม กลายเป็น
- Tool calling ที่เพิ่มความสามารถให้ AI โดยไม่จำเป็นต้องเรียก API ใช้ local tool ที่เป็นคำสั่ง Linux พื้นฐานแต่ใช้งานได้หลากหลาย
- AGENTS.md, CLAUDE.md หรือ system prompt ที่ custom สำหรับโปรเจคนั้น ๆ โดยเฉพาะ ทำให้นอกจากไม่หลอนแล้ว ยังไม่ต้องไปสั่งให้มันแก้เรื่องเดิมบ่อย ๆ ด้วย มันผิดทีนึงบอกมันให้แก้แล้วไป update AGENTS.md ว่าอย่าทำอีกก็จบเลย
- Skills ที่ทำให้ AI เก่งเรื่องเฉพาะทางขึ้นมาได้และถูก load ใส่ context เฉพาะตอนที่จำเป็นโดยการตัดสินใจของมันเอง หรือ เราจะบอกให้มันใช้สกิลนั้น ๆ ก็ได้
- CLI Agent อย่าง OpenCode, Codex, Claude Code ที่ทำให้เรามี persistent AI coding agent ที่เราเรียกหาได้ทุกที่ จากเดิมที่ต้องใช้ Chat UI บนเว็บหรือ Copilot ใน IDE ของเรา จะรันมันทั้งวันบน server หรือ trigger เรียกหาจาก CI ก็ทำได้ทั้งหมด
การ shift ของเครื่องไม้เครื่องมือรอบที่ AI agent เข้ามา สำหรับผม คือ รู้สึกเลยว่ามันต้องหัดใช้เพิ่ม สิ่งที่ผมเลือกมาทดลอง คือ OpenCode เหตุผลหลัก ๆ คือมันฟรี และมันต่อกับ model เจ้าไหนก็ได้ ที่สำคัญที่สุดคือมันเป็น CLI แปลว่ามัน portable จัด ๆ รันที่ไหนก็ได้!
รอบนี้คือรอบที่ลองผิดลองถูกอยู่นานที่สุด หลาย ๆ เจ้าโม้ไว้เยอะว่า "ปล่อยมันทำงานแทนทั้งคืนได้เลย" ซึ่งผมไม่ค่อยจะเชื่อเท่าไหร่และจากการใช้งานจริง ผมบอกตรง ๆ เลยว่ามันทำไม่ได้!
ลักษณะการทำงานกับ Agent ผมรู้สึว่าการปล่อย session ไหลยาว ๆ มันไม่เวิร์ค ผ่านไปนาน ๆ ถ้าไม่ได้เป็นงานที่ตรงไปตรงมาและมี feedback loop ให้มันจริง ๆ มีสิทธิ์เสียเวลาเปล่าสูง
งานที่ให้ Agent ทำแล้วเห็นผล ปล่อยจอยแบบไม่ต้องคอยดูมันทุก 15 นาทีได้คืองานที่เรา define ผลลัพธ์ที่ถูกต้องให้มัน cross check ได้ เช่น
- งาน refactor ที่มี test วัดชัดเจนให้มันรันเช็คความถูกต้องได้
- งานเขียน API หรือ DB migration ที่เราคุย schema กับมันแล้วให้มันตรวจตัวเองได้
- งานแก้บัคที่มี feedback ให้มันได้ ไม่ว่าจากการดู log หรือการ compile โปรแกรมให้ผ่าน
- งาน code review ที่มี convention ชัดเจนว่าทีมทำกันท่าไหน
งานที่มีเป้าชัดเจนพวกนี้ผมสามารถทิ้งให้มันทำยาว ๆ ได้เลย กลับมาดูตอนจบอย่างเดียว ซึ่งส่วนมาก model เทพ ๆ อย่าง Opus, Codex หรือ Kimi ทำได้สบาย ๆ โค้ดอ่านง่ายกว่าผมอีกบางที ยิ่งถ้ามี convention ใน codebase อยู่แล้ว งานออกมาค่อนข้างเนี้ยบ
แต่งานที่ปล่อยให้มันทำเองไม่ได้เลยคืองานประเภท exploration หรืองานที่เรายังไม่รู้ว่า spec จริง ๆ มันจะเป็นยังไง ไม่มี feedback loop ให้มันว่าแบบไหนคือดี ไม่ดี เช่น
- งานทำ UI ยิ่งถ้าไม่มี design system ที่ดีให้มันล้อตาม คือ code maintain ยากมาก แถมส่วนมากจะไม่ตรง spec ด้วย
- งานที่เรายังบอกรายละเอียดไม่ได้เลยว่าต้องทำอะไรบ้าง เช่น พวก prompt กว้าง ๆ ประเภท "ทำแอพธนาคารให้หน่อย" อะไรแนวนี้ หรือแบบ "I need a modern UI" ก็ด้วย
สิ่งที่ควรทำคือ clarify เพิ่มความละเอียดของตัวงานก่อน ซึ่งเดี๋ยวนี้ agent ก็มี plan mode มาช่วยในส่วนนี้ ถ้าใครยังไม่ได้ลองแยกการ plan และการ build แยกจากกัน ผมแนะนำมาก ๆ จริง ๆ การทำงานของผมเมื่อก่อนก็เป็นแบบนี้ คือ ได้งานมาไม่ได้เริ่มเขียนโค้ดเลย แต่ต้องทำความเข้าใจและ clarify ส่วนต่าง ๆ ให้เห็นภาพสิ่งที่จะทำชัดก่อน ซึ่งการมี plan mode ช่วยให้ process นี้ทำได้ไวกว่าเดิมมาก
หลาย ๆ คนอาจเรียกชื่อเท่ ๆ ว่า spec driven แต่ผมว่ามันเป็นอะไรที่ก็ทำกันมาอยู่แล้วไม่ได้มีอะไรใหม่
ยุคนี้หลังลองผิดลองถูกอยู่หลายแบบ ผมว่ามันเป็นยุคที่ทำให้ผมเปลี่ยน workflow การทำงานแบบยกเครื่องใหม่หมด งานถึกที่ต้องแก้เอง ถูกแทนที่ด้วย agent ทั้งหมด รวมถึงการ review โค้ดเบื้องต้นด้วย
ผมมี agent รันอยู่หลายที่
- ใน dev env บนคอม ทั้ง IDE, CLI
- ใน CI ที่เรียกมารีวิว PR ผ่านการ tag ใน comment ได้
- ใน Slack ที่เรียกมาแก้ issue ที่ถูกเปิดได้
- ใน Home Lab ที่คุยกับมันผ่านมือถือ
เวลาในการทำงานที่ต้องการ attention ของผมจริง ๆ เพิ่มขึ้นมาก งาน exploration งาน system design ที่ถนัดก็มีเวลาอยู่กับมันมากขึ้น มี agent คอย bounce idea และ PoC ทำให้ solution ตอนท้ายออกมาเนี้ยบและรัดกุมกว่าเดิมโดยใข้เวลาน้อยลงมาก
สิ่งที่ยิ่งทำให้การทำงานสะดวกขึ้นอีกคือ observability เช่น ข้อมูลจาก profiler ข้อมูล metric ต่าง ๆ จาก Prometheus พวกนี้ทำให้งานประเภท optimization ง่ายกว่าเดิมมากเพราะผมโยน insight ให้มันหา hotspot ให้แล้ว rank มาให้เลย อันไหนง่าย agent ก็จัดการให้เองได้เลย
แต่การทำงานของผมช่วงที่เป็น deep focus ก็ยังเป็น 60-70% ของงานทั้งหมดอยู่ ส่วนที่ agent มาช่วยมีไม่น้อยแต่ก็ยังเป็นส่วนน้อยของงานที่ผมทำ
สิ่งที่ผมยังไม่สามารถทำได้คือ ปล่อยให้ AI มันทำงานทั้งวันทั้งคืนแบบที่เขาโม้ ๆ กัน เพราะ งานที่ scope ใหญ่ขนาดนั้นปล่อยเกิน 5 นาทีก็เละแล้ว
แต่ผมก็ปฏิเสธไม่ได้เลยว่าการทำงานเดี๋ยวนี้ของผมต่างจากก่อนหน้าที่จะมี AI มาก นึกภาพกลับไปตอนไม่มีไม่ออกแล้ว แต่หลังจากนี้ก็คงมีอะไรใหม่ ๆ ออกมาเรื่อย ๆ ท่าที่ผมทำอยู่ตอนนี้มันอาจดูโง่มาก ๆ ในอนาคตก็ได้
ไว้ถึงตอนนั้นแล้วจะกลับมาอัพเดตให้ฟังเพิ่มเติ่มครับ