Fanboi Channel

มิตรสหายนักพัฒนาซอฟต์แวร์ท่านหนึ่ง

Last posted

Total of 185 posts

183 Nameless Fanboi Posted ID:tjmmFZ5Rv2

GildedRose Kata นี่เป็นแบบฝึกหัดที่ดีมากเลยนะ

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

คำถามคือเราจะทำยังไง เวลาเจอโค้ดยังงี้

ถ้าใครบอกว่าจะ Refactor นี่ก็เป็นโจทย์ที่ดีที่จะได้ฝึก

หรือแม้แต่ถ้าใครบอกว่าเจอ Tech debt เยอะๆ ฉันจะไม่แตะแล้ว จะ Rewrite แม่งอย่างเดียว คุณก็ลอง Rewrite GildedRose ขึ้นมาดู ก็เป็นแบบฝึกหัดที่ดีอีก

คุณจะได้เข้าใจว่าการ Rewrite ในทางปฏิบัติ ที่ Requirement ส่วนมากจะไม่ครบ มันต่างกับในอุดมคติเยอะ เอาแค่ Rewrite ระบบเล็กๆ อย่าง GildedRose นี่แหละให้รอดก่อน ค่อยไปลองขอ Rewrite ระบบใหญ่ๆ

(ผมต้องเน้นเสมอว่างาน Rewrite != งาน Green field ระดับความยากมันต่างกันแบบคนละเลเวลกันเลย Engineer หลายคนคิดว่าเวลาที่ได้ใบอนุญาตให้ Rewrite ระบบที่เละๆ ใหม่จากศูนย์ มันจะให้อารมณ์สวยงามเหมือนทำ Greenfield Project ซึ่ง ขอบอกเลยว่าโคตรจะไม่ใช่)

ผมคิดว่าการจัดการกับ Legacy code เป็นสกิลที่สำคัญมาก คือผมมองว่ามันมีเส้นแบ่งที่ใหญ่มากระหว่างคนที่เขียนโค้ดสวย กับเปลี่ยนโค้ดไม่สวยเป็นโค้ดสวยได้ (ไม่ว่าจะด้วยวิธีใดๆ) คือถ้าสมมติแบ่งเป็น 10 Grade ผมว่าคนที่ทำได้กับไม่ได้ฝีมือต่างกันอย่างน้อย 2 Level แน่ๆ

และ GildedRose เป็นแบบฝึกหัดที่คุณจะได้ลองจัดการกับ Legacy Code ของจริง ไม่ว่าคุณจะเลือกจัดการมันยังไง ค่อยๆ แก้ หรือเขียนโครงใหม่จากศูนย์ก็ตาม

Repo นี้มีให้เกือบทุกภาษาให้เล่น ใครสนใจลองเล่นดูได้ครับ