สวัสดีครับ
ผมได้รับคำเตือนจากผู้หวังดีว่า … อาจจะมีปัญหาเกี่ยวกับเนื้อหาและคำพูดในวิดีโอชุดเก่าได้ (ขอบคุณผู้หวังดีด้วยฮะ) ก็เลยต้อง Disable วิดีโอพวกนั้นไปก่อนครับ นั่งนึกอยู่ว่าจะไปทำยังไงให้มันถูกต้องดี จะไปนั่งแก้คำหรือตัดคำในวิดีโอเก่าก็คงยากอยู่ … จุดเสี่ยงมันเยอะ 555 ไหนๆก็ไหนๆแล้วผมก็อัดใหม่มันซะเลย แต่รอบนี้เป็น Screencast นะครับ มีแต่ Slide กับเสียงคนพากษ์ (ผมเอง) ล้วนๆแต่เนื้อหาคงเดิมครับ Agile Development — First Chapter หวังว่าจะพอแก้ขัดไปได้
ขอโทษเพื่อนๆกลุ่มที่มาแลกเปลี่ยนความคิดเห็นกันวันนั้นด้วยนะครับ … จาก 10 เสียง 10 ความเห็นเหลือแค่ 1 เสียง 1 ความเห็น สัญญาว่ารอบหน้าจะระมัดระวังให้มากกว่านี้ครับ ฮ่าๆ
ปล. ช่วงแรกอาจได้ยินเสียงฟื๊ดฟ๊าดบ้างนะครับ ตอนเช้าน้ำมูกไหลประจำ ![]()
Agile01 — Why Agile
ช่วงแรกที่คุยกันจะเป็นเนื้อหาที่ว่าเราเจอปัญหาอะไรกับการทำงานแบบเดิมๆ บ้าง แล้วทำไมเราควรเปลี่ยนมาใช้ Agile Development เจ้า Methodology ตัวใหม่นี้จะช่วยอะไรเราได้บ้าง
Agile02 — Waterfall, Iterative, and Extreme Programming
เปรียบเทียบกันว่า Waterfall, Iterative, และ Agile Development (Extreme Programming) มีข้อเหมือนข้อต่างกันอย่างไรบ้าง เนื้อหาในวิดีโอนี้ก็จะมีการพูดถึงวิวัฒนาการจาก Waterfall มา Iterative แล้วก็ Agile Development ด้วยครับ
Agile03 — Extreme Programming: Set Up
เมื่อเห็นภาพแล้วว่า Agile Development แบบ XP เป็นยังไงแล้ว ก็มาลงรายละเอียดว่าจะทำให้แนวคิดเป็นความจริงขึ้นมาได้อย่างไร ในวิดีโอนี้เราคุยกันถึงแนวทางปฎิบัติทั้ง 37 ข้อของ Extreme Programming มีอะไรบ้าง และเพื่อให้ง่ายต่อการเข้าใจ เราเลยแบ่งหัวข้อการประยุกต์ใช้ออกมาเป็นสี่ส่วน เริ่มที่ XP Set Up ครับผม
Agile04 — Extreme Programming: Planning -1
มาดูต่อเรื่องการวางแผนโครงการโดยประยุกต์ใช้หลักการของ Extreme Programming ครับ วิดีโอนี้จะพูดเรื่องการเก็บและวิเคราะห์ Requirement (User Story) และการประเมินเวลาที่ต้องใช้ (Story Point) เป็นหลัก
Agile05 — Extreme Programming: Planning -2
ต่อเรื่อง Planning ครับ วิดีโอนี้จะพูดถึงหลักการการวางแผนสองระดับใน XP นั่นคือ Release Planning และ Iteration Planning โดยที่มีตัวอย่างให้ดูว่าการจัด User Story ลง Release และ Iteration มีหลักการอย่างไร
Agile06 — Extreme Programming: Implementation -1
เรื่องนี้ยาวหน่อยครับ เป็นการประยุกต์ใช้ XP เข้ากับการทำงานจริงๆของเราล่ะ ตอนนี้เราคุยกันว่า เมื่อได้ User Story มาแล้วเราจะทำยังไงต่อไป เริ่มตั้งแต่ Analyze Design Code Test และ Deploy เลยครับ เนื่องจากยาวมากเลยขอตัดเป็นส่วนๆครับ ส่วนแรกนี้จะมีพูดถึงเรื่อง Analyze Design แล้วก็การใช้หลักการ Continuous Integration
Agile07 — Extreme Programming: Implementation -2
วิดีโอนี้จะพูดเกี่ยวกับ Test-Driven Development, Pair Programming และ Collective Code Ownership ครับ ลองดูว่าทฤษฎีเหล่านี้คืออะไรแล้วจะมีประโยชน์อะไรกับการทำงานของเราได้บ้าง
Agile08 — Extreme Programming: Implementation -3
ตอนนี้เน้นไปที่เรื่องของหน้าที่ของ Tester และหลักการทำ Test ครับ มาดูว่าอะไรคือ “Done Done” และ Exploratory Test ช่วงหลังจะพูดเกี่ยวกับความสำคัญของ Iteration Demo
Agile09 — Extreme Programming: Reporting
สุดท้ายคือ Reporting ครับ หลักการตรวจสอบความคืบหน้าของงานแบบ Agile ที่เรียกว่า Burndown Chart เป็นยังไง อะไรคือ Stand-up Meeting และ Retrospective หาคำตอบได้ในวิดีโอนี้ฮะ
Related posts:


ขอคอมเมนต์เรื่อง Test-Driven Development สักนิดนะครับ
ใน screencast นั้นเหมือนจะเน้น TDD ในด้านของการตรวจสอบความถูกต้องอย่างเดียว
จริงๆแล้ว TDD นั้นเป็นเรื่องของการ design เป็นหลักไม่ใช่การ test.
เราเขียน test cases ก่อนเพื่อให้ test มันบีบให้เราเขียนโค้ดให้ตรงเป้าหมาย ให้กระชับ
ถ้าเราเขียนเทสให้กับคลาสที่เรากำลังอยากจะสร้างแล้วรู้สึกเทสมันเขียนยาก เทสมันใหญ่เกินไป เทสมันต้องการอะไรหลายอย่างเกินไปแล้ว
เป็นไปได้อย่างสูงว่า คลาสที่เรากำลังออกแบบ (โดยใช้เทสนี้ละ) นั้นมันออกแบบไม่ดีพอ เราอาจจะต้องคิดเยอะกว่านี้ ต้องแตกคลาสออก
เพื่อให้เทสมันเขียนง่ายกว่านี้ เป็นต้น ขอยกประโยคที่ผมชอบ (จำมาจากกูรูท่านหนึ่งอีกทีหากแต่จำชื่อไม่ได้)
- TDD ไม่ได้ทำให้เกิด design ที่ดี แต่มันช่วยให้เรามองเห็นจุดที่อาจจะเป็น design ที่ไม่ดีต่างหาก.
เย้ มีคนคอมเม้นต์ด้วย ฮ่าๆๆ … ขอบคุณมากครับ เห็นด้วยทุกประการ ถ้ามีโอกาสได้ลงรายละเอียดมากกว่านี้ก็จะดีครับ แต่ผมเองพยายามสรุปให้เนื้อหาอยู่ภายใน 5 นาทีที่ Screenr เค้าอนุญาต (อัดครั้งนึงได้ไม่เกิน 5 นาทีอะ)
วิดีโอถัดไปคงจะพูดให้ละเอียดขึ้นเมื่อเจาะลึกลงไปในการทำงานจริงครับ …? เดี๋ยวจะเชิญมาเป็นวิทยากรพิเศษนะ ประสบการณ์ขั้นเทพอย่างท่านอะ ขอเรื่อง TDD กับ Refactoring ละกันฮ่าๆ
[...] ทั้งหมดที่พูดมานี่มันเป็น Concept ของ Agile Development [...]
ผมเรียนวิทยาการคอมพิวเตอร์ที่ม.ราม ติดวิชา SE อยู่2ปีแล้วครับช่วยสั่งสอนผมด้วยเถอะ – -
พึ่งมีโอกาศได้มาฟังนะครับ บางอย่างก็ไอเดียดีเลย แต่บางอย่างก็ยังงงๆ ^_^’
เช่น Simple design ผมเข้าใจว่ามันรวมถึงการออกแบบ class ด้วย
การออกแบบ class ที่มาเพิ่มเติมภายหลังใน iteration ถัดมาอาจจะ
ส่งผลไปถึงงานใน iteration ก่อนหน้าที่ทำเสร็จแล้ว ทำให้ต้องกลับไป
แก้ไขและทำการ test ใหม่ มันจะทำให้งานใน iteration ที่กำลังทำ
อยู่ล่าช้าออกไปหรือเปล่าครับ
?
เนื้อหาดีครับได้แนวคิดหลายๆ อย่าง ขอบคุณสำหรับการแบ่งปัน
ติดตามอยู่เรื่อยๆ นะครับ
^_^
Simple Design ถ้าใช้ควบคู่กับ Test Driven Development, Automate Testing, Refactoring จะทำให้การแก้ไข Class ต่างๆใน Iteration ถัดมาไม่เป็นเรื่องลำบากยากเย็นเกินไปครับ บางครั้งการเลือก User Story เข้ามาจนเต็ม Velocity ของ Iteration เลยก็อาจจะเสี่ยงไปนะครับ ถ้าคุยกับ Product Owner ได้ ก็น่าจะขอเวลาไว้ทำพวก Refactoring หรือสิ่งที่เรียกว่า Technical Debt (Class ไม่สวย, Error Handling ไม่ดี, หรือบั๊กต่างๆที่ไม่ได้แก้) ไว้บ้างครับ
อธิบายเนื้อหาเข้าใจง่ายมากเลยครับผม มาให้กำลังใจครับ ขอบคุณมากครับผม
การที่จะเริ่ม Dev ในแต่ละ Iteration เริ่มตั้งแต่เก็บ Requirement ไม่ทราบต้องใช้ Agile ตั้งแต่ตอนไหน หรือต้องเริ่มตั้งแต่ตอนเก็บ Requirement ช่วยยกเคสให้ดูซักหน่อยยัง งง อยู่ครับ
เริ่มใช้ได้ตั้งแต่แรกครับ การเปลี่ยนแปลงที่เห็นได้ชัดเจนสำหรับการเก็บ Requirement คือ User Story ครับ User Story คือ Requirement ขนาดเล็กที่สามารถทำเสร็จได้ในเวลาไม่นาน (คำว่าไม่นานคือ ระยะเวลาที่เรากำหนดไว้สำหรับแต่ละ Iteration ครับ เช่น บางทีมกำหนดไว้ 2 สัปดาห์ บางทีมว่า 1 เดือน)?จากแต่ผลลัพธ์ของการเก็บ Requirement คือ Requirement Document เล่มหนาๆ แต่กับ Agile ผลลัพธ์ที่ได้คือ Product Backlog ซึ่งเป็นที่รวบรวม User Story ขนาดเล็กๆครับ
ตัวอย่างครับ ถ้าเราพูดถึงส่วนการจัดการ User Account และ Login ของระบบ ถ้าเขียนเป็น Requirement ทั่วไป ก็อาจจะร่ายยาวเป็นย่อหน้าๆว่าควรจะมีรายละเอียดอะไรบ้าง เวลาเขียนโค๊ดจริงก็จะทำรายละเอียดทั้งหมดนั้นไปพร้อมกัน?แต่กับ User Story ผลที่ได้จะประมาณนี้ครับ
1. สร้าง Account ใหม่ได้
2. Login ด้วย Account ของตัวเองได้
3. Login ด้วย Facebook ได้
4. สร้าง Account เสร็จแล้วใช้งานได้ทันที
5. สร้าง Account เสร็จแล้วต้องมี email ส่งไปเพื่อยืนยันก่อนถึงจะเริ่มใช้งานได้
6. มีระบบตรวจสอบ Password Strength
7. มีระบบ Forget password
8. มีระบบ Reset password
9. …
การแบ่งย่อยแบบนี้ เรา (ด้วยความเห็นชอบจากลูกค้า) จะสามารถเลือกงานที่สำคัญที่สุดมาทำก่อนใน Iteration แรกได้ครับ เช่น ผมเลือก 3, 4 ที่เหลือเอาไว้ทีหลัง แบบนี้เราและลูกค้าจะเห็นผลงานได้เร็วกว่าทำทั้งหมดทีเดียวแล้วสุดท้ายก็ไม่ถูกใจเค้าอยู่ดีครับ
สำหรับผมเอง การเขียนแยกเป็นข้อๆอย่างชัดเจนแบบนี้จะช่วยให้เรากับลูกค้ามองเห็นภาพของระบบตรงกันมากกว่าเขียนเป็นย่อหน้ายาวๆที่อ่านแล้วยังไงก็งงครับ
ขอบคุณมากครับ?
[...] Agile Development [...]