How to practice English (in Agile style)

วันก่อนอ่าน tweet ของ @tumit ว่า ภาษาอังกฤษเป็นกำแพงสำหรับเขาแล้วก็นึกขึ้นมาได้ว่ามันก็เคยเป็นสำหรับเราเหมือนกัน ก็เลยอยากมาแชร์ว่า ถ้าเป็นแบบอไจล์จะแก้ปัญหานี้ได้อย่างไร

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

TDD หรือ Test Driven Development บอกว่าในการทำอะไรก็ตามให้เริ่มจากเป้าก่อน (ที่ผมมักบอกว่ามันเป็นการเดินถอยหลัง) ตามลำดับแบบนี้

1. สร้าง test case
2. Run test case ขึ้น fail
3. สร้าง code น้อยที่สุดที่ทำให้ test ผ่าน
4. Refactor code ให้ simple
5. กลับไปเริ่ม 1 ใหม่

ถ้าดูเผินๆ มันก็เป็นวิธีเขียนโค้ดธรรมดานี่นา แล้วจะเอามันมาใช้ในการฝึกภาษาได้ไง หลายคนคงจะเริ่มงงกันละ ลองมาดูลึกๆ กันดีกว่าว่า TDD บอกอะไรเรากันแน่ การจะเข้าใจมันได้นั้นก็ต้อง reverse engineer กลับไปว่า TDD เค้าสร้างมาได้อย่างไร TDD นั้นดัดแปลงมาจากหลักการของ Lean สองข้อ คือ Jidoka (Autonomation) กับ Kaizen

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

ตัวอย่างเครื่องจักรที่เป็น jidoka อันแรกคือ เครื่องทอผ้าของ Toyota เครื่องทอผ้านั้นจะทอโดยอัตโนมัติ แต่ถ้าเส้นด้ายมีการขาดเครื่องจะหยุดทอทันที แล้วแจ้งพนักงานคุมเครื่องให้ทราบเพื่อมาแก้ไขต่อเส้นด้ายแล้วจึงเดินเครื่องทอต่อ (เกร็ด: ระบบตรวจการขาดของด้ายนี่แหละที่โตโยต้านำไปขายแล้วนำเงินมาลงทุนสร้างโรงงานรถยนต์)

Kaizen หรือ continuous improvement หลักการคือ ต้องถือก่อนว่าความผิดพลาดเป็นเรื่องธรรมดา เป็นส่วนหนึ่งของกระบวนการพัฒนา คือทำผิดได้แต่เมื่อผิดแล้วให้กลับมาทบทวนว่าเกิดจากสาเหตุอะไร และจะป้องกันไม่ให้เกิดซ้ำได้อย่างไร

ถ้าเอาหลักการสองข้อนี้มาประยุกต์ใช้กับ TDD เพื่อพัฒนาภาษาอังกฤษ ก็น่าจะได้ประมาณว่า

1. พูดหรือเขียนภาษาอังกฤษให้มากเท่าที่ทำได้ เหมือนกับเราควรจะรัน test case บ่อยๆ ไม่ใช่จะขึ้น production แล้วค่อยมา test
2. ก่อนนอนทุกวันกลับมานั่งวิเคราะห์ว่ามีจุดไหนที่เราพูดหรือเขียนผิดไปบ้าง อันไหนผิดซ้ำเดิมอันไหนเป็นเรื่องใหม่
3. ศึกษาว่าที่เราผิดไปนั้นที่ถูกคืออะไร โดยไม่จำเป็นต้องไปอ่านทุกเรื่อง โฟกัสที่เราผิดไปในวันนั้นก็พอ
4. จดบันทึกหลักการในสมุดโน้ต เพื่อให้เราสามารถกลับมาดูได้เมื่อต้องการ ถ้าเรื่องไหนเป็นการผิดซ้ำเดิมอาจจะต้องมีการเพิ่มเติมหรือทบทวนเนื้อหาเพื่อให้จำและเข้าใจได้มากขึ้น (ก็อย่างว่าใครจะไปจำได้ทุกเรื่องล่ะ ยิ่งไม่ได้ใช้นานๆ ก็ลืม)
5. ตั้งเป้าหมายว่าวันพรุ่งนี้จะทำผิดให้ได้มากๆ เพราะจะได้เป็นโอกาสในการพัฒนาภาษาของเรา

ใครมีปัญหาอยากลองเอาใช้ก็ไม่สงวนลิขสิทธิ์นะครับ ได้เรื่องอย่างไรเอามาเล่าสู่กันฟังครับ

Advertisements

ใส่ความเห็น

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s