Screen Shot 2558-07-02 at 12.55.18 PM
อ่านบทความเรื่อง Programming Time ของคุณ Ron Jeffries แล้วโดนใจ
จึงนำมาแปลตามความเข้าใจของตัวเอง

จากบทความทำการอธิบายเรื่องที่น่าสนใจดังนี้

เริ่มต้นด้วยประโยคนี้เลย

“Every minute we spend just thinking and talking,
and not programming, is wasted!”

ในทุกๆ นาทีเราทำการคิด พูดคุย โดยไม่ได้ coding เลย
มันคือการสิ้นเปลืองโดยใช่เหตุ หรือ waste หรือเปล่านะ !!

ทางผู้เขียนทำการอธิบายว่า

ในระหว่างการทำ Agile Skill Workshop นั้น
จะมีเวลาต่อรอบการทำงาน คือ 90 นาที

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

ทำไมถึงเป็นแบบนั้นล่ะ น่าคิดนะ ?

เราน่าจะทำงานให้เสร็จมากกว่านี้ ถ้าเราลงมือทำ หรือ coding นะ !!

ลองคิดดูสิ ถ้าเราเริ่มต้นสร้างสิ่งหนึ่งขึ้นมา
โดยสิ่งๆ นั้นจะมี feature ไม่มาก
ดังนั้น code สำหรับสร้าง feature เหล่านั้นก็น่าจะน้อยนะ
ซึ่งทีมก็จะค่อยๆ สร้าง feature จาก code แต่ละบรรทัดนั่นเอง

ถ้าในแต่ละนาที เราไม่ได้ coding เลย หรือ ลงมือทำอะไรเลย
นั่นแสดงว่า code ที่ได้ก็จะน้อย
code ที่น้อยๆ นั่นแสดงว่า feature ที่เสร็จก็น้อย
ดังนั้น เมื่อเวลาหมด เราก็จะได้ feature จำนวนน้อย
และสิ่งที่เรามักขอเพิ่มก็คือ เวลาในการ coding !!
มันดูแปลกๆ ไหมนะ ?

แต่หลายๆ คน อาจจะแย้งว่า เราทำแบบนั้นไม่ได้นะ ต้องคิดก่อนสิ !!

เราจะทำในสิ่งที่ถูกต้องได้ เราจำเป็นต้องคิด และ วางแผนก่อนสิ
แน่นอนว่า เราต้องคิดก่อนทำสิ

ดังนั้นสิ่งที่ควรทำคือ
คิด แล้วลงมือเขียน code ที่ถูกต้อง ไม่ใช่เพียงแค่คิด
ไม่ลงมือทำ เราจะรู้ได้อย่างไรสิ่งที่คิดมันถูก

จาก workshop มีเวลาเพียง 90 นาทีต่อรอบการทำงาน
ไม่มีเวลามานั่ง ออกแบบ วิเคราะห์ วาง architecture อะไรหรอกนะ
ดังนั้น ต้องคิด และ ทำมันออกมา
ซึ่งมันทำให้เราคิด คิด และ คิด เป็นรอบการทำงานไป
ดังนั้น เราใช้ความคิดมากกว่าเดิม บ่อยกว่าเดิมอีกนะ
แถมทำมากกว่าคิดอีก คือ การลงมือทำในสิ่งที่คิด

การคิด วางแผนมันสำคัญ แต่ทำไมไม่ลงมือเขียน code ล่ะ ?

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

ไม่ว่าจะ Agile, Scrum นั้น เมื่อจบทุกรอบๆ การทำงาน
จะต้องมี feature หรือสิ่งที่มีคุณค่า
ซึ่งจะต้องลงมือทำ และ ทดสอบให้มีคุณภาพ ออกมาเสมอ
และเพิ่มขึ้นทุกๆ รอบการทำงาน

ดังนั้นในแต่ละรอบการทำงาน
คุณควรจะ focus ในคุณค่าของสิ่งที่จะส่งมอบเมื่อจบรอบการทำงานนั้นๆ
ดังนั้นในทีมจะมีคนทั้งฝั่ง business และ development
เพื่อมาทำงานด้วยการ เข้าใจในสิ่งที่กำลังจะทำ
และพูดคุยในภาษาที่ทั้งสองฝ่ายเข้าใจตรงกัน
และอย่าลืมว่า พูดคุยกันแล้ว ต้องมี feature ส่งมอบด้วยนะ !!

สิ่งที่เราต้องเรียนรู้ คือ

Let’s learn to think, to talk, to plan, and to code, all at the same time!

ซึ่งแนวปฏิบัติที่ควรค่าต่อการเรียนรู้ คือ

  • ATDD (Acceptance Test-Driven Development)
  • TDD (Test-Driven Development)
  • Refactoring
  • Continuous Integration

 

มาลงมือทำกันเถอะครับ !!!