Archive | งี่เง่า RSS feed for this section

Less behavior, more case

คำเตือน blog นี้เขียนเพื่อบ่นการทำงานโดยเฉพาะ! ช่วงนี้ประชุมเยอะ เลยคิดอะไรได้นิดหน่อยเนื่องจากพยายามจะจำกัดให้ Project ไม่โตเกินไปแต่รู้สึกจะห้ามไม่ได้เท่าไหร่ เคย Tweet ลอยๆว่าจริงๆ ควรทำระบบในรูปแบบกลับด้านจากเผื่อเหลือ ให้เป็นระบบที่ยังขาดบางอย่างอยู่ซะ แต่ก็ไม่ได้คิดต่อว่าเพราะอะไรจนช่วงนี้แหละที่ประชุมรวบรวมว่าระบบต้องทำอะไรบ้างถึงเขียนยาวๆ ได้ เนื่องจากระบบที่ทำอยู่ เป็นระบบที่ใหญ่มากประกอบด้วยการทำงานจากชั้นย่อยๆ หลายๆส่วน มีพฤติกรรมล้านแปดจาก Marketing เมื่อจะเริ่มทำเจ้าของระบบก็เอา Requirement ทั้งหมดมาแปลงเป็น Design ขนาดใหญ่เพื่อให้ระบบทำตาม Requirement/Bahavior ได้ทั้งหมดตั้งแต่เริ่มต้น!!! ซึ่ง Requirement ก็เปลี่ยนแปลงไปมาเพิ่มนู่นนี่จนปัจจุบันก็ยังไม่ได้ Finale design ที่สมบูรณ์พร้อมที่จะให้ Programmer ตาดำๆ ไปเขียนหรือแบ่งส่วนให้ชัดเจนเสียที เพราะรายละเอียดจุกจิกทั้งหลายมักจะโผล่มาจากคนนู้นทีคนนี้ทีจนมันไม่เสร็จ ก็เลยคิดได้ว่า จริงๆแล้วถึงแม้ระบบมันจะใหญ่ขนาดไหนก็ตาม มันควรจะตัด Behavior พื้นฐานแล้วค่อยๆทำก่อน ไม่จำเป็นต้องออกแบบหรือคิดถึง Behavior ทั้งหมด เมื่อได้ชั้นต่างๆ ที่มีหน้าที่ชัดเจน มี test(case) ครอบคลุมแล้วเราถึงค่อยทำ Behavior เพิ่ม การออกแบบก็ไม่ใช่ออกแบบทั้งหมดตั้งแต่ต้น แต่ต้องทำเพื่อให้มันค่อยๆ เพิ่มได้เพราะงั้นสิ่งที่ควรทำจริงๆ คือ [...]

Read full story Comments { 2 }

Scrum & TDD, Month and a half after

อยากเขียนเก็บไว้ซักหน่อย ประสบการณ์หนึ่งเดือนครึ่งหลังจากทดลองใช้จริงจัง ตอนนี้สามารถบอกได้ว่า อะไรเสร็จบ้างไม่เสร็จบ้าง ความคืบหน้าชัดเจน สามารถบอกความสามารถของคนในทีมได้ ว่าทำอะไรได้เร็วแค่ไหน ใช้เวลาเท่าไหร่ TDD เข้ามาช่วยบอกเรื่องความชัดเจนของ Module/Class ว่าแต่ละชั้นมีหน้าที่อะไร ทำอะไรซ้ำซ้อนหรือป่าว (ถ้าเขียน UnitTest ซ้ำกันเมื่อไหร่ก็บอกได้หละว่ามีบางชั้นที่ซ้ำซ้อนกัน) เมื่อมีบั๊กสามารถบอกได้ว่ามันผิดพลาดที่ชั้นไหน เพิ่ม Input เข้าไปจนทำให้บั๊กมัน Reproduce ได้เร็ว แก้ได้เร็ว ด้านบนคือสิ่งที่ประทับใจและสำเร็จไปแล้ว ปัญหาตอนนี้คือ เหนื่อยเพราะต้องคอยวางแผนและติดตามงานเป็นรายวัน เพื่อกะเวลาบางอย่างแล้วแจกงานไป จริงๆ จะ list งานออกมาแล้วค่อยๆ ให้ไปเลยก็ได้ แต่สิ่งที่จะไม่ได้กลับมา คือแต่ละคนมีปัญหาอะไรบ้าง แล้วจะแก้ร่วมกันยังไง รวมถึงจะกะเวลาจริงไม่ได้ด้วย ขัดแย้งกับคนอื่นมากขึ้น ช่วงนี้ต้องคอยชักชวน และคอยตัดห้ามใครเข้ามารบกวน Process บางอย่างที่ยังไม่ต้องทำ ก็ยังไม่เอาเข้ามา แม้จะโดนบอกว่าอยากได้แค่ไหน ก็ต้องตัดไม่ให้มันเข้าไปถึง Dev ด้านล่างต้องหาทางผลักมันออกไปในช่วงเวลาถัดไปให้มากที่สุด ไม่ให้แผนเวลาเสียไป ความสามารถในการ Review Code เริ่ม Drop หลังจากเพิ่มคนที่เข้ามาทดลอง หลังๆ นี่เริ่มปล่อยไม่สามารถดูละเอียดได้จริงๆ [...]

Read full story Comments { 0 }

QA & Support

หลังจากทดลองเปลี่ยน Process ต่างๆของทีม Dev ไปตัวละครที่แทบไม่ได้กล่าวถึงเลยคือฝ่าย Support และ QA ที่ไม่ค่อยพูดถึงเพราะยังนึกไม่ออกว่าหน้าที่จริงๆของสองฝ่ายหนี้คืออะไรบ้าง ควรจะรู้อะไรแค่ไหน แต่วันนี้ถกเถียงเรื่อง Process อีกครั้งก็เริ่มคิดจะเปลี่ยนอะไรบ้างอย่างอีกครั้งและเริ่มนึกถึงสองฝ่ายนี้มากขึ้น เริ่มจาก Process ที่เคยเขียนทิ้งๆ ไว้หลายบล๊อกช่วงก่อนมีอยู่เรื่องนึงที่ถูกเถียงตกมามากคือ Task ที่จะไม่ให้เปิดค้างไว้หลัง Milestone สิ้นสุด ที่ถูกเถียงกลับมาเพราะว่า Task เหล่านี้ไม่สามารถ Guarantee ได้ว่ามันจะทำงานถูกต้องและปิดได้จริงคราวที่แล้วบ่นและเถียงกับพี่ที่ทำงานไปรอบนึงแต่ไม่ได้จดไว้มันเลยหายไป สิ่งที่คิดว่าเปลี่ยนไปคือตอนนี้งานทั้งหมดจะถูกแบ่งเป็นสองส่วน คือ งานที่เกิดจาก Requirement และ Bug จาก QA งานส่วนนี้แหละที่มีปัญหา เพราะว่าคนที่บอกว่าเสร็จไม่ใช่ Dev แต่เป็น QA เพราะงั้นการจะบอกว่า Milestone จบโดยการยึด Bug/Feature จาก Task กลุ่มนี้จะทำให้ Milestone ที่กำหนดตามเวลา ปิดได้ตามกำหนดแทบจะเป็นไปไม่ได้เลย หาก Dev process ปัจจุบันยังไม่สามารถ Guarantee ได้ว่า [...]

Read full story Comments { 5 }

Software Development Team

หลังจากทำงานมาสี่ปี เจอปัญหามามากมาย ได้แก่ Component ต่างๆ ไม่มีใครสามารถเล่าได้ หรือรันให้ดูเป็นส่วนว่ามันทำงานอย่างไร ต้องเข้าไปอ่าน Code แล้วลองรันดูเอง ถึงจะรู้ จะรันโค้ดส่วนต่างๆ ได้ต้อง setup นู่นนี่นั่น ขึ้นมาก่อนถึงจะรัน test ได้ รันแล้วยังคงไม่รู้อยู่ดีว่ามันทำงานยังไง เพราะตอนรันไม่มีคนมาอธิบาย ตอนอธิบายก็คือเป็นการสอนกลุ่มใหญ่ ดูสไลด์เอา บางครั้งถึงกับรันไม่ได้เลย จนเหนื่อยใจเลิกรัน test กันไป เมื่อมีการแก้ไข Component ไม่สามารถรู้ได้ว่าสิ่งที่เพิ่มไป ทำให้ของเก่าพังหรือป่าว ต้องถึงมือ QA ก่อนถึงจะรู้! เมื่อถึงมือ QA แล้วกลับมาแก้ก็ไม่รู้ไปพังส่วนไหนอีก ตอนทำงานพร้อมกันหลายๆ ส่วนแล้วเอามารวมกัน ไม่สามารถรู้ได้ว่าทำให้โค้ดคนอื่นพังป่าว เวลา Merge version ใหญ่ๆ ไม่สามารถบอกได้เลยว่าทุกอย่างยังทำงานถูกต้อง Code แต่ละคนแม้ส่วนใหญ่จะใช้รูปแบบเหมือนกัน แต่เวลามีน้องใหม่เข้ามาทำงาน ไม่มีการบอกกล่าวก็เจอรูปแบบประหลาดไปเต็มๆ เนื่องจาก แก้แล้วแก้อีก เพราะแก้เสร็จก็ทำให้เกิดปัญหาอีกอย่าง ทำให้งานไม่เสร็จซักที ช่วงสองสามเดือนที่ผ่านมา อาการพวกนี้เริ่มเข้าขั้นวิกฤต สามารถแก้แบบปะผุไปล่วงหน้าได้บ้าง [...]

Read full story Comments { 7 }

ปีที่ 3

สองปีก่อนจะเขียนเล่าไว้ว่า ปีที่ผ่านมาทำงานแล้วรู้สึกเป็นยังไงบ้าง แต่ปีนี้เขียนช้า ฮะ ๆ เพราะมันมีหลายอย่างที่เปลี่ยนไปมาก ตั้งแต่ปริมาณงาน ความรับผิดชอบ ความสนุก และเพื่อนร่วมงาน แต่พอเห็นบล๊อกของน้องที่ทำงานเขียนแล้วก็อดเขียนไม่ได้ (อีกเหตุผลหนึ่งคือกด comment ตอบในบล๊อกไม่ได้ต้องลงทะเบียนก่อนเลย เขียนตอบแบบนี้ละกัน) ปีที่แล้วเป็นปีที่เครียดทั้งจากเรื่องงานและเรื่องเรียนต่อ จนบางครั้งก็บอกตัวเองไม่ได้ ไม่ได้สนุกเหมือนอย่างน้องที่ทำงานเท่าไหร่ และได้เห็นปัญหาต่าง ๆ เป็นข้อ ๆ เลย ได้เห็นสิ่งที่ตัวเองคาดหวัง ทำจนเป็นรูปร่างแล้วก็ตกไปไม่มีใครสนใจ มีแต่คนบอกว่าอยากได้ ๆ ทำไมไม่ทำให้เสร็จ จนรำคาญในบางครั้ง แต่ก็บอกไม่ได้ว่ามันจะเสร็จยังไง ได้รู้ว่าการให้คนทำสิ่งหนึ่งร่วมกัน จะวาดฝันอันสวยงามให้เห็นอย่างเดียวภายในเวลาเพียงสิบนาทีไม่ได้ เพราะผลสุดท้ายแล้ว อาจต้องแยกทางกันเหลือแค่ไม่กี่คน ได้เห็นปัญหาของตัวเองในการทำสิ่งต่าง ๆ ว่าอะไรควรตัดทิ้งบ้าง เป็นภาระ และเริ่มคิดว่าจะตัดอะไร และควรเน้นไปทางไหนแทน ได้รู้ว่าความรู้ต่าง ๆ เมื่อมีคนออกไปแล้ว การจะหวังว่าให้คนนั้นกลับมาอธิบาย มันเป็นไปไม่ได้เลย และมันจะกลายเป็นภาระของคนที่เหลืออยู่นั่นแหละ ที่ต้องอธิบายให้คนมาใหม่ต่อไป ได้เห็นว่าเวลาประชุม เถียงกันแทบเป็นตาย สุดท้ายเริ่มใหม่จากศูนย์แทบทุกครั้ง แต่สิ่งเหล่านี้ก็ทำให้เริ่มทำหลายอย่างขึ้นมานะ จริง ๆ ต้องเรียกว่าระวังมากขึ้นมากกว่า เริ่มจาก [...]

Read full story Comments { 1 }