Archive | ระบบ RSS feed for this section

Agile Meetup

ศุกร์ที่ผ่านมามี Meetup เกี่ยวกับ Software Development ที่นี่ซึ่งก็มีเป็นกลุ่มเลย คล้ายๆกับ Opendream ในไทยที่มีจัด Meetup เล่าเรื่องเทคนิคต่างๆในการทำระบบอะไรซักอย่างขึ้นมา เมื่อวานเป็นครั้งที่สองที่ไป Meetup ของที่นี่ แต่ก็ยังไม่คุ้นเคยอยู่ดี (พูดง่ายๆ คือฟังยังไม่ค่อยออก ฮะๆ) แต่ก็พยายามจะสรุปประเด็นที่พอฟังได้มาจดไว้ก่อน Meetup คราวนี้จัดที่บริษัท Odd-e ตอนแรกก็คิดว่าคล้ายๆ Opendream ก็คล้ายจริงๆ นั่นแหละเพียงแต่ว่าพื้นที่น้อยกว่ากันเยอะ และคนที่มาก็มากกว่ากันพอสมควร เรียกว่าแทบจะเข้ามาฟังกันไม่ได้เลยหละ เนื้อหาที่พูดมีให้โหวตกันก่อนหน้านั้นสุดท้ายแล้วมีสองเรื่องคือ Maintainability, Extensibility, Testability กับ ATDD and BDD เรื่องแรก Maintainability, Extensibility, Testability พูดถึงวิธีที่คนพูดใช้ในการทำเรื่องพวกนี้ต่างๆ ส่วนใหญ่จะเน้นไปที่ Aspect-J ว่าเอามาใช้แยก logic การทำงานให้ชัดเจนอย่างไร ทดสอบง่ายอย่างไร และเอา function เข้าและออกง่ายอย่างไร และการแยกแบบนี้มีข้อดีอย่างไร เมื่อแยกส่วนแล้วจะทดสอบยังไร สำหรับคนที่สนใจ Aspect-J ก็คงเหมาะกับ [...]

Read full story Comments { 4 }

Two approaches – Mock/Stub

เรื่องนี้พึ่งย่อยเสร็จแต่เป็นสิ่งที่คุยกับ @visibletrap ตั้งแต่วันแรกที่มาถึงสิงคโปร์ (คุยทีเดียวหลายเรื่อง ล่อไปสามชั่วโมงได้ ฮ่าๆ) เรื่องก็มีอยู่ว่าเวลาทำ TDD หลายค่ายมักบอกว่าให้ทำ Mock ซึ่งก็เคยพยายามทำหลายครั้งแต่ก็ไม่ประสบความสำเร็จเสียทีเพราะรู้สึกมันทำให้เขียนอะไรซ้ำหลายอย่าง วันนั้น @visibletrap ก็เลยอธิบายและคุยจนเคลียร์ว่าเค้าใช้ Mock เมื่อไหร่กัน วิธีการทำระบบอะไรซักอย่างปกติก็มีอยู่สองทางในการสร้างขึ้นมา คือ Top-Down / Bottom-Up วิธีที่คุ้นเคยสุดเพราะอะไรไม่รู้อาจจะเพราะที่เรียนมาในมหาวิทยาลัยต่างๆ ในวิชา SE ที่บอกว่าให้หาคำนาม บลาๆๆ ก่อนคือ Bottom-Up เริ่มจากหาว่าในระบบจะมี Model อะไรบ้าง แล้วหา Behavior เพื่อสร้างคลาสขึ้นมาทั้งหมดให้ครบทั้ง Flow โดยเริ่มจากฐานที่เป็นคำนาม จนถึงชั้นบนสุดที่เป็นส่วนติดต่อกับ User วิธีที่จะสร้าง Test กับระบบแบบนี้ง่ายสุดก็คือสร้าง Stub ขึ้นมาให้ทำหน้าที่แทน Third-party คอยให้ข้อมูลต่างๆ เพื่อให้ระบบทำงานได้ถูกต้องตลอด ปัจจุบันก็ยังคงชินกับการสร้างระบบด้วยวิธีนี้อยู่ เวลาทำอะไรก็เลยมักสร้าง Stub ขึ้นมาก่อน แล้วค่อยๆ ไล่จาก Model ขึ้นไปจนถึง User [...]

Read full story Comments { 1 }

My process goal

ขอจดไว้ก่อนกันตัวเองลืม และก็เพื่อให้ @hybridknight ที่จะรับช่วงต่อด้วย ช่วงสามสี่เดือนที่ผ่านมาได้ทดลอง process การทำงานใหม่บางอย่างที่ก็ขัดกับคนอื่นบ้างแต่ตอนนี้ก็เริ่มลงตัว ตอนเริ่มทำเป้าหมายก็ยังไม่ชัดเท่านี้ด้วย คิดแค่ว่าต้องการให้สิ่งที่ทำสามารถการันตีได้ว่ามันจะไม่พังเมื่อเวลาผ่านไปและมีปัญหาเหมือนระบบเดิมที่เคยทำมา แต่เมื่อสองวันก่อนคุยกับ @visibletrap จนได้ข้อสรุปสามข้อที่มันชัดจนคิดว่านี่แหละคือเป้าหมายที่ตัวเองดันมา ทั้งสามข้อก็ไม่มีอะไรมากแค่ process นี้ต้องทำให้ตรวจสอบความผิดพลาดต่างๆ ได้ง่ายๆ ข้อแรกนี้แก้ด้วยการหาทางให้เขียน test ได้ง่ายๆ รันง่ายๆ process นี้ต้องลด Interrupt ที่แต่ละคนจะเจอขณะทำงานให้มากที่สุด แน่นอนบางอย่างมันต้อง Interrupt เข้ามาได้ (เช่น production server down หรือสอบถามอะไรบางอย่าง) แต่บางอย่างก็ไม่ควรจะเข้ามา Interrupt เช่น QA ไม่ผ่าน หรือการเพิ่ม Feature อะไรบางอย่าง พวกนี้ควรจะจัดเวลาหรือที่ซักที่ให้ไปแปะไว้ แล้วนัดเวลามาดูร่วมกัน อันนี้พยายามดันโดยการให้ทุกคนใช้ task board และกำหนดเวลาตายตัวว่าจะคุยกันช่วงไหน  process นี้ต้องทำให้ทุกคนรู้ว่าใครทำอะไรอยู่บ้าง ว่างไม่ว่าง และติดอะไรอยู่ ข้อนี้มีเหตุผลคือ คนจัดงาน รู้ว่าไม่มีใครว่างงาน และไม่จัดงานหนักๆ เพิ่มเข้าไป [...]

Read full story Comments { 0 }

AIS Startup Weekends 2011

สุดสัปดาห์ที่ผ่านเข้าไปทำงานกับเพื่อนเพื่อ pitch platform ที่เพื่อนทำมาได้ซักพักแล้วให้มันหาเงินได้เสียทีในงาน AIS Startup Weekends วันที่ 16 – 18 ธันวาคม ที่ผ่านมา งานนี้จัดอยู่ใกล้ Office มากเพราะอยู่ตรงโรงแรมที่อยู่ในตึกโดมสีทอง ที่สามารถเห็นจาก Office และถ่ายรูปเล่นจนเบื่อ (ไม่คิดว่ามันจะเป็นโรงแรมด้วย) เลยเดินไปกลับงานแทบทุกวันอย่างสบายๆ (อากาศเย็นช่วงนี้พอดี บรรยากาศดีโคตร) เริ่มจากเตรียมงานกันต้นสัปดาห์ รีบปั่น prototype เตรียมของต่างๆ ภายในหนึ่งสัปดาห์ตั้งแต่หาข้อมูลว่างานเป็นอย่างไรจากงานที่เคยผ่านมาในประเทศอื่น ต้องเตรียมแผนอะไรบ้าง ทำตัวอย่างยังไง เรียกว่าเอาให้พร้อมที่สุดเท่าที่ทำได้ วันศุกร์ก็เข้าไปเจอกัน โหวตแล้วก็ปั่น (เกือบจะเข้าไปช่วยอีกทีมและ เพราะเห็นเตรียมมาเยอะแล้ว) ก็คิดว่าจะชิวที่ไหนได้ เริ่มจากวันเสาร์ปั่นกันตั้งแต่เช้าถึงค่ำ แถมมาต่อวันอาทิตย์ prototype เล่นได้แบบยังไม่ค่อยเนียนเท่าไหร่เสร็จเกือบไม่ทัน (ใช้ไม่ถึงสองนาที!!!) แต่ก็ได้ทดลองอะไรบางอย่าง พร้อมประสบการณ์ที่น่าจดจำพอสมควร (สำคัญที่สุด AIS เลี้ยงอย่างหรูทุกมื้อ น้ำหนักเพิ่มมาพอสมควร) สิ่งที่ได้จากงานครั้งนี้ก็มีตั้งแต่ Idea แปลกๆ ที่ตัวเองไม่เคยคิดมาก่อน หรือเคยคิดแต่ไม่กล้าที่จะเสนอและทำ มันถูกเอามาพูดแล้ว pitch จนมีคนทำ [...]

Read full story Comments { 2 }

Visual or Physical task board

ตอนเริ่มเข้ามาแก้ไข Dev process ใหม่ๆ วิธีที่อยู่ในหัวและได้ยินชื่อมาพอสมควรคือ Scrum ซึ่งมีเครื่องมืออย่างนึงที่เรียกว่า Task board แม้ตอนนี้จะปลื้มและใช้ Kanban มากกว่าแต่ก็มีเครื่องมือเดียวกันคือ Task board ทั้งสองวิธีพูดอย่างนึงตรงกันคือ มันควรจะมีกระดานจริงๆ ที่ให้ทุกคนมาเขียนแปะ ส่วนตัวแล้วไม่ชอบที่จะต้องสร้างกระดานจริงขึ้นมาเท่าไหร่ในที่ทำงานปัจจุบันด้วยเหตุผลว่า คนในทีมแต่ละคน แม้จะอยู่ใน Office เดียวกัน แต่นั่งกันกระจัดกระจายมาก เหมือนอยู่คนละทีม คือไม่สามารถสร้างกระดานที่ทุกคนมองเห็นได้ หรือมาแก้ไขได้สะดวกๆ นั่นเอง เดือนที่แล้วที่น้ำท่วมหนักๆ ทุกคนแยกย้ายกลับต่างจังหวัดกันหมด ถ้าทำกระดานจริงขึ้นมามันคงไร้ประโยชน์มากหรือไม่คนที่คุมก็เหนื่อยมาเพราะต้องคอยถามและแก้ไขตลอด จากเหตุผลสองข้อด้านบนทำให้ไม่ได้สร้างกระดานจริงขึ้นมาใช้งาน แต่ไปสร้าง กระดานเสมือน ขึ้นมาแทนเพื่อให้ทุกคนเข้ามาเห็นได้ง่ายๆ แน่นอนสิ่งที่ขาดไปจากการใช้กระดานแบบนี้คือการสื่อสารที่ลำบากขึ้นเมื่อมีการเปลี่ยนแปลงสถานะของงานที่กระดานจริงจะทำได้ (ทำกระดานจริงคงเอามาไว้ใกล้ตัว แก้ไขทีแต่ละคนคงได้มาคุยตัวต่อตัวก่อนที่จะเปลี่ยนแปลง) เพราะงั้นจะใช้กระดานจริง หรือโปรแกรมที่แสดงงานต่างๆ หรือจะใช้คู่ไปเลยก็ได้ ส่วนตัวแล้วคิดว่ามันขึ้นอยู่กับสภาพแวดล้อมรวมมากกว่า ว่ามันเอื้อแบบไหน และลองแก้ไขตามสิ่งที่อยากได้ดู จะมีกระดานจริงหรือไม่มีก็ได้ ขอแค่ทุกคนต้องคุยกันถึงเหตุการณ์ต่างๆ ที่เกิดขึ้นใน Project แล้วทำให้มันเสร็จได้เร็วที่สุด (จะตามกำหนดหรือไม่นั่นก็อีกเรื่องนึง) จะว่าไปแล้วของจริงที่ทำๆ อยู่จะบอกว่าเป็น Scrum มั้ยก็ไม่เหมือนเป๊ะซักทีเดียว มี Kanban [...]

Read full story Comments { 0 }