May 13, 2012

BugDay Bangkok 2012

วันนี้ไปงาน BugDay Bangkok 2012 ที่ ม.ศรีปทุม มาครับ เป็นงานที่มีหัวข้อหลักคือ Software Testing อยากไปมาก เพราะปีก่อนไม่ได้ไป และพักหลังก็หันมาสนใจเรื่องพวกนี้ มากขึ้นเรื่อยๆ แต่ยังไม่ถึงขั้นหลงใหล แค่อยากรู้เพิ่มขึ้นมากกว่า

เนื่องจากงานจัดที่ ม.ศรีปทุม ซึ่งไกลจากบ้านผมที่อยู่ฝั่งธน พอสมควร กว่าจะไปถึง งานก็เริ่มไปแล้วครับ (ตื่นเช้า ง่วงนอนมาก) ไปถึงหน้างาน ยื่น Ticket ลงทะเบียน แล้วก็เข้าห้องเลย ห้องมี 3 ห้อง คือ NEWBIES, IN PRACTICE และ AGILE ครับ  มาไล่ทีละหัวข้อเลยละกันครับ ว่าเข้าไปหัวข้อไหนบ้าง เรื่องอะไร และได้อะไรกลับออกมาบ้าง

ช่วงเช้า

How to live with Agile  by Narupat Kumnurtrath (Aware Corporation Ltd.)

เข้าไปตอน เค้าเริ่มไปแล้วประมาณ 20 นาทีครับ แต่ผมพอจะเคยฟังแนวคิด Agile มาบ้าง เลย ไม่มีปัญหาในการปะติดปะต่อ หลักๆของ session นี้ก็คือ Agile คือยังไง เค้าทำกันยังไง โดยพูดถึง scrum ซะเยอะ ผมประทับใจ session นี้ ตรงที่ ผมรู้สึกว่า คนพูดอธิบายได้ดี ฟังรู้เรื่อง และได้เนื้อหาเป็นความรู้มากๆ ไม่ใช่แค่แนวคิดหรือ mindset และด้วยความที่ ผมไม่เคยอ่านหนังสือเกี่ยวกับ agile practice จริงจัง ครูพักลักจำซะเยอะ session นี้เลยทำให้ ผมได้คำอธิบายของคำศัพท์ต่าง scrum, sprint, backlog, grooming, sprint retrospective อะไรพวกนี้ แบบเป็นเรื่องเป็นราว ปะติดปะต่อ กัน เป็นภาพใหญ่ ต่อไปผมคงฟังคนชอบ Agile คุยกันรู้เรื่องมากขึ้นล่ะ

Seeking Hyper Productivity  by Chokchai Phatharamalai (Proteus Technologies Corporation Ltd.)

หัวข้อนี้ ลังเลว่าจะเข้าดีมั้ย เพราะไม่แน่ใจว่าเข้าใจชื่อหัวข้อถูกรึเปล่า และ อีกห้องก็ดูหัวข้อน่าสนใจ
เข้าไปแล้ว เป็นคุณ @juacompe เป็นคนพูดนี่เอง พึ่งเคยเจอตัวเป็นๆ ฟังช่วงแรก รู้สึกผิดหวังครับ ฟังถึงช่วงกลางๆ ก็ยังรู้สึกผิดหวัง ไม่ใช่ว่าเรื่องที่พูดไม่น่าสนใจ แต่รู้สึกเหมือนมานั่งฟังเค้าโม้ เรื่องคน มากกว่าที่จะเกี่ยวกับ software development ที่อยากจะฟัง ที่น่าสนใจก็มี Csikszentmihalyi's Flow Chart แต่ใจความสำคัญก็คือ Responsiveness, Motivation and Communication 3 อย่างนี้ แต่ที่หล่อก็คือ เค้ามา wrap-up สุดท้ายว่า 3 สิ่งนี้ คือสิ่งที่ทำให้ productivity สูงขึ้น และ agile พยายามจะสร้าง 3 สิ่งนี้

พักเที่ยง

ไปกินข้าวที่ศูนย์อาหารของมหาลัย ซึ่งเป็นศูนย์อาหาร ที่แปลกดี คือ มีบันไดเลื่อนขึ้นชั้น 2 แต่จะลง ต้องลงบันไดเอา

ช่วงบ่าย

Key Elements for Successful Automation  by Pakinai Thantranont (Enspry Technologies Co., Ltd.)

session นี้ อธิบายถึงส่วนประกอบต่างๆ ที่สำคัญในการทำ Automation หรือ Automate Testing ครับ ฟังไปเรื่อยๆ เกือบหลับ คนพูดเค้าพูดโอเคนะครับ แต่มันเป็น concept ซะเยอะ อารมณ์เหมือนเนื้อหาในตำรา และส่วนตัวก็พอจะรู้บ้างอยู่แล้ว จริงๆ คาดหวังว่าจะมี case study หรือ pitfall ที่น่าสนใจ ให้ดู แต่ก็ไม่มีครับ

ATDD – Make Love, Not (QA/DEV) War to work (Rate R)  by Sinaporn Suebvisai and Kulawat Wongsaroj (Proteus Agility Co., Ltd.)

อันนี้ เข้าเพราะพี่ Kulawat โดยแท้ เพราะสมัยเรียนอาจารย์เคยพาไปฟังเค้า พูดเรื่อง Agile ที่ Reuters และนั่นเป็นครั้งแรก ที่รุ้จัก Agile เป็นเรื่องเป็นราว แล้วรู้สึกว่าพี่เค้าเป็นตัวพ่อ เรื่อง Agile ในเมืองไทย เลยต้องเข้าไปฟังซะหน่อย พึ่งรู้ว่า พี่เค้าออกจาก Reuters มาตั้งบริษัท Agile coaching เองแล้ว ชื่อ Proteus Agility กำลังทำ Agile tools อยู่ด้วย

เนื้อหา สนุกดี ครับ ฟังได้เพลินๆ สิ่งที่เก็บได้ และยังจำได้คือ
  • กำแพง ระหว่าง QA กับ Dev คือสิ่งที่น่าเป็นห่วง มันคือการจับผิด การกั๊ก
  • ATDD = Executable Requirement
  • ATDD => User (human-readable test) -> QA (Pseudo test) <-> Dev (real test + implement)
  • TDD = Design,  ATDD = Conversation
  • ATDD => Clear the definition of done
  • TDD มันเหมือนการเดินถอยหลัง สำหรับ Dev (ข้อนี้ โดนมากกกกก เพราะรู้สึกมากตอน ลองทำ TDD เคยเขียน blog ไว้เหมือนกัน)
  • ATDD เดินถอยหลังร่วมกัน
ช่วงหลัง มีพี่แป๋ม (พึ่งเคยเจอตัวจริง) มาโชว์การทำ ATDD ด้วย Robot framework กับ Selenium ได้เห็น Agile tool ที่พี่เค้าทำอยู่นิดหน่อยด้วย

Bug Preventive Medicine 2.0  by Twin Panichsombat and Piya Lumyong (Opendream Co., Ltd.)

อันนี้พูดโดยพี่ @roofimon พึ่งเคยเข้า session ของพี่เค้าครั้งแรก พี่เค้าดูเป็นคนตลกดี ส่ิ่งที่พูดคือ TDD และวิธีการทำ พี่เค้าคาดหวังจะให้คนเอาโน๊ตบุ๊กมา checkout code นี้ แล้วลองทำไปกับเค้า มีคนเอามานิดเดียว ผมเอาไป แต่ก็ใช้เน็ตไม่ได้ สุดท้ายก็ดูเค้าทำหน้าห้อง สิ่งที่พี่เค้าทำ และ เป็นหลักให้จำมี 3 อย่าง
  • เขียน test 
  • ทำ test ให้ผ่าน ให้เร็วที่สุด
  • Refactor 
จะทำอะไรเพิ่ม ก็ทำ 3 อย่างนี้อีกไปเรื่อยๆ สิ่งที่ว้าวตรงนี้คือ พึ่งรู้ว่าที่เคยทำมา ผมยังไม่เข้าถึง TDD อย่างเต็มรูปแบบ ก่อนหน้านี้ผมเข้าใจ TDD คือการเขียน test เพื่อกำหนดพฤติกรรมของ code ที่เราจะ implement ขึ้นมาหลังจากนั้น และสิ่งที่ได้ประโยชน์ก็คือ มันจะการันตีว่า change ที่เราเพิ่มเข้าไปอีก มันจะไม่ทำให้อะไรพัง เพราะมี test คลุมอยู่เสมอ ทำงานได้สบายใจ 

แต่สิ่งที่พึ่งรู้เพิ่ม คือ ทำ TDD เพื่อการ design โค้ดที่จะออกมา พี่เค้าบอกว่า 
  • เราต้องทำ test ให้ผ่านให้เร็วที่สุด ด้วยความฉลาดและความคิดแบบ minimum ที่สุด
  • อย่าทำอะไรเกินจากที่ test ต้องการแม้แต่น้อย   
  • อย่าเขียน method ที่ไม่มีใน test 
  • อย่าคิดจะออกแบบ หรือ คิดถึง design pattern โน่นนี่ ที่ไม่จำเป็น 
เพราะถ้าทำ มันจะทำให้เกิดอะไรที่ไม่จำเป็น  ใช้ test เป็นตัว drive code ที่จะออกมา อย่างแท้จริง ตรัสรู้เลยทีเดียว สิ่งที่น่าเสียดายคือ แนวคิดนี้ ทำไม่ค่อยได้กับ dynamic language หรือทำแล้วอาจจะไม่สนุกเหมือนเกม เพราะ compiler จะ detect แล้วขึ้นตัวแดงไม่ได้    

สุดท้าย ถ้า code ที่ drive ออกมาด้วย TDD ไม่น่าพอใจ ก็ Refactor ซะ(นั่นเป็นหลักข้อที่ 3) แล้วก็รัน test ที่คลุมไว้อยู๋แล้ว

จบ session ง่วงมาก  จริงๆ มี session discussion ต่อ แต่ง่วงมาก เลยกลับบ้าน เป็นอันจบงานวันนี้ครับ
ส่วนตัว อยากให้งานปีต่อๆไป เน้นหัวข้อ Practical หรือหัวข้อ Advanced ขึ้นอีกหน่อยก็ดีนะครับ

วันพรุ่งนี้ เป็นวันที่ 2 เป็น Training Day แต่ คงไม่ไป เพราะตื่นเช้าไม่ไหวแล้ว และมีอะไรต้องทำมากมาย

Update: เพิ่ม slide บางหัวข้อที่หาได้