ข้ามไปยังเนื้อหา
บทความนี้ได้รับการแปลจากภาษาญี่ปุ่นโดยใช้ AI
อ่านฉบับภาษาญี่ปุ่น
บทความนี้อยู่ในสาธารณสมบัติ (CC0) โปรดใช้งานได้อย่างอิสระ CC0 1.0 Universal

การพัฒนาที่ขับเคลื่อนด้วยการพัฒนา และการทดสอบที่ขับเคลื่อนด้วยการปรับโครงสร้างโค้ด

การพัฒนาคือการสร้างสรรค์สิ่งใหม่ๆ ที่มีประโยชน์ซ้ำๆ

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

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

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

ในขณะที่พลังทางเศรษฐกิจของบุคคลและสังคมอาจผันผวนไปตามสภาวะเศรษฐกิจ แต่ความสามารถที่พัฒนาขึ้นมักจะคงอยู่ถาวร

แม้ว่าจะลดลง ก็จะถูกมองว่าเป็นการเสื่อมถอย ไม่ใช่ความผันผวนเช่นความมั่งคั่งทางเศรษฐกิจ

นอกจากนี้ยังมีการพัฒนาเทคโนโลยีและความรู้ ซึ่งแตกต่างจากความสามารถของบุคคลหรือสังคมเฉพาะกลุ่มตรงที่มีลักษณะพิเศษคือสามารถแบ่งปันกันได้อย่างง่ายดาย

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

ด้วยการพัฒนาผลลัพธ์ที่มีประโยชน์เช่นนี้ ขอบเขตของการพัฒนาก็จะขยายกว้างขึ้น และประสิทธิภาพกับคุณภาพก็จะดีขึ้นด้วยเช่นกัน

การพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วย AI

โดยทั่วไปแล้ว การพัฒนาต้องใช้เวลาและความพยายามอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อสังคมก้าวหน้าและสิ่งต่างๆ มีความซับซ้อนมากขึ้น การสร้างสิ่งใหม่ๆ ก็ยิ่งยากขึ้นเรื่อยๆ

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

วิสัยทัศน์ในอนาคตที่ตัวแทนอัตโนมัติซึ่งอิงตาม AI เชิงสร้างสรรค์จะกลายเป็นศูนย์กลางของการพัฒนาซอฟต์แวร์ในฐานะวิศวกรซอฟต์แวร์ กำลังกลายเป็นความจริงแล้ว

ขณะนี้เราอยู่ในช่วงเปลี่ยนผ่าน แม้ว่าเราจะยังไม่สามารถมอบหมายการพัฒนาทั้งหมดให้ AI เชิงสร้างสรรค์ได้ แต่การใช้ AI เชิงสร้างสรรค์อย่างชาญฉลาดจะช่วยขับเคลื่อนการพัฒนาซอฟต์แวร์ได้อย่างมีประสิทธิภาพ

นี่คือสิ่งที่เรียกว่า การพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วย AI

การพัฒนาที่ขับเคลื่อนด้วยการพัฒนา

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

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

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

ตามธรรมเนียมปฏิบัติ การพัฒนาซอฟต์แวร์ที่ช่วยในการพัฒนาดังกล่าวเป็นเรื่องปกติในสาขานี้ แต่ก็ต้องใช้เวลาและความพยายามในการพัฒนาของตัวเอง ซึ่งจำเป็นต้องมีการประเมินอย่างรอบคอบและการดำเนินการตามเป้าหมาย

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

สิ่งนี้ทำให้การพัฒนาซอฟต์แวร์ที่ช่วยในการพัฒนาในระหว่างการพัฒนาซอฟต์แวร์เป็นเรื่องง่ายกว่าที่เคย

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

เราจะเรียกว่า การพัฒนาที่ขับเคลื่อนด้วยการพัฒนา

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

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

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

หากสามารถนำการพัฒนาที่ขับเคลื่อนด้วยการพัฒนาไปปฏิบัติได้ โครงการที่สองจะเห็นการปรับปรุงทั้งคุณภาพและต้นทุนเมื่อเทียบกับโครงการแรก นอกจากนี้ ด้วยแต่ละโครงการที่ตามมา ไม่ว่าจะเป็นโครงการที่สาม สี่ และอื่นๆ การปรับปรุงจะเพิ่มขึ้นเรื่อยๆ

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

การทดสอบที่ขับเคลื่อนด้วยการปรับโครงสร้างโค้ด

มีแนวคิดหนึ่งที่เรียกว่า การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD) ซึ่งเกี่ยวข้องกับการออกแบบการทดสอบตามข้อกำหนดก่อน จากนั้นจึงพัฒนาซอฟต์แวร์เพื่อให้ผ่านการทดสอบเหล่านั้น

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

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

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

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

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

นอกจากนี้ยังมีส่วนที่ประสิทธิภาพการใช้หน่วยความจำไม่ดี ซึ่งต้องมีการปรับปรุงการประมวลผลทั้งหมด

การทดสอบจะกลายมาเป็นการพิจารณาอย่างมีสติเป็นครั้งแรก ณ จุดเชื่อมต่อของการปรับโครงสร้างโค้ดเหล่านี้

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

อย่างไรก็ตาม หากการพัฒนาดำเนินไปอย่างมากแล้ว และมีรายการที่ต้องตรวจสอบจำนวนมาก การทดสอบก็อาจจำเป็นในระหว่างการปรับโครงสร้างโค้ด เพื่อให้แน่ใจว่าไม่มีข้อบกพร่องหรือการละเว้นในการทำงาน

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

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

สิ่งนี้สามารถเรียกว่า การทดสอบที่ขับเคลื่อนด้วยการปรับโครงสร้างโค้ด

บทสรุป

AI เชิงสร้างสรรค์กำลังเปลี่ยนแปลงการพัฒนาซอฟต์แวร์อย่างมหาศาล

ในบทความก่อนหน้านี้ ผมได้เขียนเกี่ยวกับการให้ความสำคัญกับการตั้งเป้าหมายที่จะเป็น วิศวกรรอบทิศทาง ซึ่งสามารถก้าวข้ามบทบาทของวิศวกร Full-stack แบบดั้งเดิม เพื่อพัฒนาระบบรอบทิศทางที่รวมโดเมน โครงสร้างพื้นฐาน และสภาพแวดล้อมการทำงานที่หลากหลายเข้าไว้ด้วยกัน

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

การพัฒนาที่ขับเคลื่อนด้วยการพัฒนา และ การทดสอบที่ขับเคลื่อนด้วยการปรับโครงสร้างโค้ด เป็นแนวทางที่แม่นยำที่จะนำเราไปสู่ขอบเขตใหม่ๆ ในการพัฒนาซอฟต์แวร์

แท็ก