มีคำถามมากมายว่าการใช้ Agile แทน Water Fall มันดีจริงหรือ มันเร็วจริงไหม ผมขอไม่เขียนเกี่ยวกับเรื่องนั้น

ผมขอเขียนในมุมของคนที่นั่งเป็น Team ที่ต้องลงมือเขียนโค้ด แล้วทำให้มันไปถึง Production ได้ดีกว่า

ไม่ว่าคุณจะใช้หรือไม่ใช้ Agile หรือจะใช้ Scrum อะไรก็แล้วแต่ ขอถามว่า คุณต้องการอะไรจากการใช้มัน?

  • ได้งานไวขึ้น ?

หรืออะไรที่คุณคาดหวัง ช่วยตอบคำถามนี้ในใจก่อน

ส่วนคำตอบของผมคือ ผมคาดหวังว่า การทำงานจะต้องมีความสุข ถ้าสนุกด้วยได้จะดีมาก

ไม่ว่าคุณจะเป็น Scrum Master หรือชื่ออื่นที่คุณอยากจะเลี่ยงไปใช้ เพราะกลัวเขาหาว่าทำ Scrum หรือคุณจะเป็น PO หรืออะไรก็แล้วแต่ เคยมีโจทย์นี้ในใจคุณบ้างไหม?

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

ถ้าเปลี่ยนมาทำ Agile แล้วสิ่งที่ต้องการคือ การ Tracking งานว่าคนของเราทำงานได้เต็มประสิทธิภาพ คุ้มกับเงินที่จ้างไปหรือเปล่า อย่าทำเลยครับ กลับไปทำแบบเดิม ผมยังเชื่อว่า โปรแกรมเมอร์ยังจะมีความสุขมากกว่า

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

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

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

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


มันอึดอัด ไม่สบายตัว เหมือนรู้สึกหายใจไม่ทั่วท้อง มันอึนๆอยู่ในใจ และในความคิดอยู่ตลอด บางครั้งรู้สึกหวาดผวา ในเวลาเช้า ตื่นมาแล้วไม่อยากทำงาน รู้สึกเหนื่อยมากกว่าที่ผ่านมา หรือรู้สึกท้อแท้

มนุษย์เป็นสิ่งมีชีวิต เพราะฉะนั้น เราทุกคนมีเวลาขี้เกียจ มีเวลาต้องผ่อนคลาย มีเวลาต้องพักสมอง

การต้องตื่นขึ้นมาทำงาน 8 หรือ 9 โมงตอนเช้า และไปเลิกงานตอนเย็น มันเป็นอะไรที่ เป็นตารางมาก จนบางครั้งก็รู้สึกว่า มันไม่ใช่ธรรมชาติของทุกคน

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

วันถัดมาก็อาจจะมีตารางเวลาใหม่ที่ไม่ซ้ำกับวันก่อนๆ

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

แต่นั่นไม่ได้แปลว่า การทำงานตรงตามเวลางานจะไม่สามารถทำได้ เพียงแต่เรารู้แล้ว และตระหนักได้ว่า แต่ละคนจะมีช่วงจังหวะที่ กระตือรือร้นในการทำงาน และมีจังหวะที่อยากจะผ่อนคลายไม่ตรงกัน

การจะกะเกณฑ์ให้ทุกคนต้องทำงานในเวลาเดียวกัน อย่างเข้มงวดนั้น อาจจะทำให้บางคนมีอาการหายใจไม่ทั่วท้อง

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

ให้เพื่อนร่วมงานของเราได้มีอากาศหายใจบ้าง

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


เหมือนฝันไปว่าเราจะได้ทำงานในบรรยากาศ Agile จริงเลยใช่ไหม และแล้ววันนั้นก็มาถึง เพราะว่ามี project ใหม่ของทีมเราเพิ่งจะ kick off และเราก็กำลังจะทำ Discovery/Inception กันแล้ว

Product Owner มาด้วยตัวเอง ทำงานเต็มเวลากับทีม พร้อมตอบคำถามตลอดเวลา ที่สำคัญ PO คนนี้รู้ Business ทุกอย่าง ที่สำคัญ เขารู้ว่าเขาต้องการอะไรชัดเจนมาก เพราะเขามี Story มากพอที่เราจะเอาเข้าไปทำในรอบการทำงานได้อีกหลายรอบล่วงหน้า

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

ก่อนที่งานจะเข้าในรอบการทำงาน เรากับ PO คุยกันอย่างละเอียด เรารู้ acceptant criteria ชัดเจนมาก จนเอาไปเขียน script เพื่อเทส e2e ได้เลย แบบนี้ทุกครั้งที่ส่งมอบงาน มันจะทำงานได้ตรงความต้องการของ PO 100% แน่นอนเลยสินะ สุดยอดไปเลย

ทีมของเราก็มีความเข้าขากันเป็นอย่างดี ทุกคนสามารถทำ TDD หรืออย่างน้อยก็เขียน unit test เสมอ ที่สำคัญ ทุกคนชอบ Pair programming เพราะทุกคนตระหนักแล้วว่า การทำ Pair programming จะช่วยให้ Productivity สูงขึ้นมาก งานมีคุณภาพและเสร็จเร็วกว่าอย่างเห็นได้ชัด อีกทั้งทุกคนในทีมยังได้รับความรู้เฉลี่ยกันได้เร็วยิ่งกว่าแต่ก่อนมาก ทำไมคนอื่นถึงยังไม่เข้าใจเรื่องนี้ พวกเราก็ยังสงสัย

ทุกคนในทีมตระหนักว่าการมี CI/CD ที่ดีนั้นช่วยให้ทีมทำงานได้คล่องตัวมากขึ้น มั่นใจในคุณภาพของงานได้ตลอดเวลา แถมยังรู้ตัวเสมอเมื่อมีสิ่งผิดปกติเกิดขึ้น และการนำของขึ้น production สามารถทำได้ตลอดเวลา ไม่น่าเชื่อ คนที่ไม่เคยใส่ใจเรื่องพวกนี้ เขายังสงสัยอะไรกันอยู่ เราก็ไม่เข้าใจว่า แค่ยอมลงทุนทำสิ่งนี้ เขาจะได้ไม่ต้องมี process ยุ่งๆ ที่ทำให้เขาเหนื่อยกันเหมือนทุกวันนี้เลยนะ แต่ก็ช่วยไม่ได้ เขาอาจจะงานยุ่งจนไม่มีเวลาลับขวานก็เป็นได้

ยังมีเรื่องราวดีๆอีกเพียบเลย ที่เกิดขึ้นในทีมของเรา แบบนี้สินะ ที่เขาลือกันว่า ทำ Agile แล้วงานจะเร็ว ที่แท้มันอยู่ที่ความเข้าใจของคนที่เลือกใช้มันนี่เอง ความเร็วมันคือการมี MVP และมาพร้อมกับ requirement ที่ชัดเจนจนเอามาเขียน acceptance test ได้เลย และทีมมี pipeline ที่ดี ทำให้เห็นความผิดพลาดทันที และของมีคุณภาพเสมอ เราช่างโชคดีจริงๆที่ได้ทำงานในบรรยากาศแบบนี้


ถ้าถามแบบนี้ อาจจะไม่มีใครยกมือเลยก็ได้ เอาใหม่ ถ้าถามว่าใครไม่เข้าใจยกมือขึ้น ก็อาจจะเจอคนยกมือเท่ากับคำถามแรก!!

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

ความไม่เข้าใจของคนในทีม มีได้หลายเงื่อนไขจนไม่อาจนับได้ ไม่ว่าจะด้วย context ที่ซับซ้อน ประสบการณ์ไม่ตรงกับสิ่งที่ทีมทำอยู่ วิธีคิดที่มาจากพื้นฐานคนละแบบ เป็นพนักงานใหม่ หรือมีสิ่งที่ต้องกังวลคนละด้าน แม้กระทั่งพูดคนละภาษา ฯลฯ

การมี facilitator ในทีมสักคนจะช่วยให้บรรยากาศผ่อนคลายได้มาก ซึ่ง ideal ก็คือทุกคนสามารถมีส่วนช่วยได้ตลอดเวลา โดยหน้าที่หลักๆแสนจะง่าย คำถามง่ายก็ผ่อนคลายความเครียดได้ ยกตัวอย่างเช่น

  • มีตรงไหนสงสัยบ้างไหม?
  • ถ้าไม่ทัน ให้เล่าให้ฟังส่วนตัวใหม่ไหม?
  • อยากให้ช่วยอธิบายตรงไหนเพิ่มไหม?
  • นั่งทำด้วยกันไหม?

อย่าลืมบอกว่าทักมาส่วนตัวได้ทุกคน ตลอดเวลา(ในเวลางานนะ) ตามธรรมชาติ เรามักจะทักไปหาคนที่เราคิดว่า เราน่าจะสบายใจที่คุยด้วยมากที่สุดอย่างน้อย 1–2 คน ที่เรามั่นใจว่า ถ้าถามไปแล้ว เขาจะไม่ด่าเรากลับ นั่นจึงเป็นสาเหตุที่ว่า ทำไมทุกคน ควรสามารถพร้อมให้คำแนะนำคนอื่นๆได้ในทุกสถานการณ์

และผมชอบพฤติกรรมอย่างหนึ่งของ Chokchai Phatharamalai ทุกครั้งที่เราคุยกัน และผมเชื่อว่าจั๊วะถามแบบนี้กับทุกคนนั่นคือ

ผมสามารถนำเรื่องที่เราคุยกันนี้ไปบอกคนอื่นด้วยได้ไหม?

สิ่งนี้มันมีความหมายว่าเขาให้เกียรติทุกคนอยู่เสมอ และจะไม่เปิดเผยความลับระหว่างเรา ถ้าไม่ได้รับ permission ก่อน เรื่องนี้จะยิ่งเพิ่มความไว้วางใจให้คนอื่นๆกล้าที่จะกลับมาปรึกษาเราได้อยู่เรื่อยๆ (ถ้าคุณไม่รำคาญนะ)

สิ่งหนึ่งที่น่ากลัวคือ เวลามีคน cap หน้าจอที่คุยกันส่วนตัวไปให้คนอื่นดู บางครั้งมันจะกลายเป็นเรื่องตลกในสายตาคนอื่น และเป็นการลดคุณค่าของคนอื่นโดยที่อาจจะรู้หรือไม่รู้ตัว เพราะฉะนั้น เรามาเลิกพฤติกรรมนั้นกันเถอะ

โดยสรุปคือ การมีใครสักคนที่พร้อมจะสอดส่องช่วยเหลือคนในทีม ลดความโดดเดียวของเขาลงได้ จะช่วยลดความตึงเครียดของสมาชิกในทีมได้มากเลยทีเดียว


ในสมัยที่ผมทำงานช่วงแรกๆ ชีวิตก็จะวนเวียนอยู่กับการเขียน HTML ง่อยๆ มีเขียน CGI ในยุคที่ ASP ยังไม่ฮิต จนมาถึงยุค VB6 อยู่หลายปี ตามมาด้วย Siebel ชีวิตผมไม่เคยรู้จักการเขียน unit test มาก่อน จนกระทั่งในช่วงปี 2014 พี่รูฟ Twin Panichsombat เป็นคนที่พาผมนั่งเขียนภาษา Go และสอนผมเขียน unit test โดยใช้ Ginkgo เป็นครั้งแรกที่ได้เปิดโลกการเขียนเทส

แต่ว่า หลังจากนั้นความ งง ก็ติดอยู่ในหัวมาอีกเป็นเดือน เพราะไม่เข้าใจว่าเขียนเทสไปเพื่อ!!!

ผมใช้เวลาอยู่ในโปรเจคที่มี Working Agreement และ DoD ว่าต้องมี unit test เสมอ โดยที่ไม่รู้อิโหน่อิเหน่เลยว่า การเขียนเทสที่ดีมันต้องเป็นยังไง ดังนั้น สิ่งที่ได้ออกมาก็คือ มีเทสเพื่อให้มันมี มันจะเทสตะบักตะบวยอะไรก็ได้ เรียกฟังก์ชันเฉยๆก็ได้

มีเทสเพียงเทสเดียวที่ไม่ assert หอกอะไรเลยก็ได้ด้วย

ก็มันยังไม่เข้าใจนี่นา แต่ว่า มันจะมีอยู่วันนึงที่นั่งๆเขียนไปแล้วเหมือนมีแสงวาบมาในหัว แล้วก็ร้องอ๋อดังๆในใจว่า เฮ้ย! เริ่มจะเข้าใจหน่อยๆละ ว่าทำไมต้องเขียนเทส ซึ่งอาการนี้ Anuchit Prasertsang ให้คำนิยามว่า WoW!!

ผมบอกได้ว่า ผมมีอาการ WoW นี้หลายครั้งมากๆ โดยเฉพาะตอนที่ฝึกทำ TDD (Test Driven Development) ยิ่งฝึก ยิ่ง WoW ไปทีละขั้น

ไอ้คำถามที่เคยถามตอนไม่รู้เรื่องว่า

  • เขียนเทสต้องละเอียดแค่ไหน
  • ทำไมห้ามลบเทสคนอื่น

ถ้าถามว่า WoW คืออะไร ก็ต้องบอกว่า อธิบายได้ แต่ไม่รู้จะเข้าใจไหม แต่ถ้าอยากจะ WoW ทางที่ได้แน่ๆคือ ฝึกมันเยอะๆครับ ยิ่งถ้ามีคน Pair ด้วย แล้วเขาประสบการณ์สูงพอ รับรองว่าสนุก และได้ประโยชน์มากๆๆ แน่ๆ


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

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

ภาวะนี้ เราอาจจะตั้งชื่อมันว่า ภาวะทบทวนความทุกข์ ซึ่งแม้ว่าเราจะรู้ แต่ก็ยากที่จะห้ามความคิด เพราะมันทุกข์ ความเสียใจ ผิดหวัง ความน้อยใจ มันดึงดูดให้เราต้องคิด

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

2. เมื่อเจอสาเหตุแล้ว ค้นหาให้เจอว่า ถ้ากลับไปแก้ไขได้ จะแก้ยังไง หรือถ้ามีโอากาสในครั้งหน้า เราจะไม่พลาดแบบเดิมได้อย่างไร

เมื่อเราคิดมันมากจนล้น เราจะเหนื่อยกับมัน และหยุดคิดไปในที่สุด ซึ่งแต่ละคนจะใช้ระยะเวลาต่างกันไป

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

ส่วนแนวคิดที่จะทำให้ดีขึ้นให้คิดเรื่องพวกนี้ไว้

  • เราเป็นคน 1 คนในจำนวน 7.6 พันล้านคนในโลก น้อยขนาดไหน ก็คือ มีเงิน 7.6 พันล้าน ทำหายไป 1 บาท ถามว่ารู้ตัวไหม แน่นอนว่าไม่มีทาง และด้วยจำนวนคนมากขนาดนั้น เราคนเดียวซะที่ไหนที่มีความทุกข์ อาจจะมีเป็นร้อยล้านในเวลาเดียวกันก็ได้
  • ยิ่งถ้าเทียบว่า ขนาดในโลกนี้ เรายังแทบไม่มีตัวตน แล้วถ้าทั้งจักรวาลนี้ล่ะ เราอยู่ตรงไหน มันเล็กยิ่งกว่าฝุ่น เราทุกข์ขนาดไหนก็แทบไม่มีผลกระทบกับอะไรทั้งนั้น เพราะฉะนั้น ถ้าความทุกข์นี้ มันจะไม่มีใครเห็น ก็นั่นแหล่ะ สิ่งที่มันเป็น

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

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


ต่อเนื่องจากคราวที่แล้วที่ผมตั้งคำถามไปว่า Pair Programming ไปทำไม?

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

ถามแบบนี้มันดูถูกกันชัดๆ

ความจริง การสร้างซอฟท์แวร์สักตัว มันก็เหมือนคุณเปิดร้านขายอาหารวันแรก ถ้าลูกค้ามาซื้อไปกินแล้วพบว่า รสชาติมันห่วยบรม เนื่องจากคุณเพิ่งจะ Kick Off ร้านนี้เมื่อสามวันก่อน โดยที่คุณก็ไม่เคยทำอาหารชนิดนี้มาก่อน และพอเตรียมทุกอย่างเสร็จ ก็ถึงวันเปิดร้านแล้ว คุณไม่ทันได้ลองชิม แต่ก็ได้เวลาเปิดร้านแล้ว

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

ส่วนลูกค้ารายถัดไป อาจจะรู้สึกว่า อืม ก็พอกินได้ แต่ก็ยังไม่ดีมากนัก ไม่คุ้มค่า แถมยังติดเค็มไปสักหน่อย กินเสร็จคอแห้งผาดเลย แถมยังมี fix bug จนต้องนั่งรอกันไป วันหลังไม่มาละ

โอเค ซอฟท์แวร์ของคุณมันมีข้อผิดพลาด และคุณก็กลับมาแก้ไขมัน แต่บางทียิ่งแก้ก็ยิ่งไปกันใหญ่ สุดท้ายร้านนี้ก็อาจจะล้มไม่เป็นท่า ซึ่งอาจจะต้องแก้ด้วยการ ไปจ้างแม่ครัวมืออาชีพเก่งๆมาแก้สูตร ทำเมนูใหม่ โปรโมทกันใหม่ ก็แล้วแต่วิธีกันไป

ครับ นั่นแหล่ะครับคือชีวิตของการที่ไม่มีเทส

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

จากนั้นผมอาจจะไปต้มซุป แล้วชิมดูว่า เข้มข้นพอดีไหม รสชาติเค็มไป หวานไป หอมหรือยัง

ผมอาจจะต้องทดสอบวัตถุดิบอีกหลายอย่าง สุดท้าย ผมต้องทำ integrate test ด้วยการเอามันมารวมกันเป็น เส้นเล็กน้ำลูกชิ้นปลา สูตรปกติ แล้วชิมดูว่า ปริมาณ รสชาติ ความหอม อุปกรณ์การกิน เครื่องปรุง มันเหมาะสมกับราคาที่ตั้งไว้หรือยัง

ผมอาจจะอยากรู้ไปถึงว่า วันนึงผมรับลูกค้าได้กี่ราย ในช่วงเวลาเดียวกันนั่งได้กี่โต๊ะ แล้วพวก async process ที่สั่งผ่าน lineman ผ่าน grab เราจะทำให้เขาไหวไหม ต้องเพิ่ม node (ลูกจ้าง)เท่าไร

เรื่องพวกนี้บางครั้งเราจะเริ่มเห็นมันชัดขึ้นตอนที่เราทำเทสด้วยซ้ำ

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


เนื่องจาก คำถามยอดฮิตจริงๆว่า การทำ Pair Programming มันต้องใช้คน 2 คนทำงานเดียวกัน มันคุ้มยังไง ทำไมต้องทำ?

คำตอบที่จะได้พบอยู่บ่อยๆก็จะประมาณ

  • สองตาช่วยกันดูเร็วกว่าไง
  • บลาๆๆ ไปเปิด google ไปหากราฟมาให้ดู

เรื่องนี้มันค่อนข้างเบลอ จากมุมมองความคุ้มค่า เพราะตัวเลขมันชัดมากว่าเอาคน 2 คนไปทำงานเดียวกัน วิธีมองเรื่องนี้อาจจะต้องเปลี่ยนเลนส์มองโดยเอาตัวเลข 1+1 =1 แบบนั้น แต่เปลี่ยนเป็น 1+0 = 2

ถ้าคุณใช้เวลา 1 ชั่วโมง เอาคน 1 คนใส่เข้าไปแล้วได้งาน 1 ชิ้น มีคนเข้าใจงานนี้ 1 คน

คุณเอาคน 2 คน ไปทำงาน 1 ชั่วโมง ได้งาน 1 ชิ้น…


เรื่องนี้เป็นอีกเรื่องหนึ่งที่วนอยู่ในหัวผมมาตั้งแต่ยังเด็ก ครั้งแรกที่ผมคิดถึงเรื่องนี้ ผมน้ำตาไหล และตัวสั่น

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

ผมคิดต่อไปว่า แล้วถ้ามีชาติหน้าอีก ผมก็คงจะจำอะไรในชาตินี้ไม่ได้เลย เช่นเดียวกับที่ตัวเราในชาตินี้ไม่เหลือความทรงจำในชาติก่อนๆ ถ้าเป็นแบบนั้นแล้ว เรายังจะเป็นจิตวิญญาณเดียวกันไหม มันมีอะไรเชื่อมโยงกัน แล้วมันเชื่อมโยงกันไปเพื่ออะไร

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

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

เอาล่ะ กลับมาที่หัวเรื่องดีกว่าว่า สุดท้ายแล้วปลายทางของชีวิต มันต้องมาถึงสักวัน วันนั้นเราเคยจินตนาการไว้ว่าอย่างไร ตายอย่างสงบ หรือมีสิ่งไม่คาดฝันเกิดขึ้น

ซึ่งไม่ว่าจะเป็นแบบไหนเราก็ควรจินตนาการไว้บ้าง เพื่อไม่ให้ตื่นตระหนกมากเกินไปเมื่อเวลานั้นมาถึง นี่อาจจะเรียกว่า มรณานุสติ

ครั้งแรกๆอาจจะจิตตก ตกใจ เสียใจ เพื่อเมื่อจินตนาการแล้ว บางคนจะพบว่า ช่างเสียดายเหลือเกิน

แต่มันจริงเหรอ เพราะเมื่อเวลานั้นจะมาถึงในบางครั้ง เราอาจจะอยากเรียกร้องให้มันเกิดก็ได้ หรือเมื่อมันเกิดขึ้นแล้ว เรายังจะมีสติมานั่งเสียดายอะไรอีกเหรอ ก็มันไม่มีอะไรยั่งยืนอยู่แล้วตั้งแต่ต้น แม้แต่โลกเราก็ต้องหายไปในสักวันเหมือนกัน


ผมเป็นคนที่เล่นกีฬาอะไรก็ได้… ได้แย่มากๆ เพราะตอนเด็กๆผมสุขภาพไม่ค่อยจะดี อีกเหตุผลหนึ่งคือ ผมเป็นคนขี้เกียจ ไม่อยากเคลื่อนไหวร่างกายมาก ติดเกม ติดการ์ตูน และเน้นผ่อนคลายสมองมากมาย นั่นทำให้ทุกครั้งที่ต้องลงไปเล่นกีฬาใดๆ ไม่ว่าจะโดนบังคับในชั่วโมงเรียน หรือโดนกดดันจากเพื่อนๆ ก็ตาม

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

ผมเกริ่นถึงเรื่องนี้เพราะว่า ผมเริ่มสังเกตสิ่งนี้เทียบกับการทำงานที่ผมถนัดมากๆ โดยงานของผมคืองานทำ Software ผมลองเทียบตัวเองเป็นผู้เล่นคนหนึ่ง ผมพบว่า ผมสามารถเป็นกองหน้า เป็นตัวทำประตู ในขณะเดียวกัน ผมเล่นเป็นผู้ป้องกันประตูได้ด้วย นั่นเพราะผมเห็นภาพทุกอย่างค่อนข้างชัด ผมมีประสบการณ์กับมัน ผมดูคนอื่นทำ ผมทำด้วยตัวเอง สรุปคือผมชอบมัน

ในช่วงที่ผมเป็นผู้เล่นในงาน Software นอกจากผมจะเห็นภาพทั้งหมดแล้ว ผมยังคาดการณ์บางอย่างได้ว่าผู้เล่นในเกมจะทำอะไร

ผมเชื่อว่าคนที่ชอบกีฬาก็จะมีพฤติกรรมคล้ายๆกันนี้ ถ้าชอบฟุตบอล ก็จะชอบดูการแข่ง ดูบ่อยๆก็จะเห็น pattern เห็นสิ่งที่เกิดขึ้นบ่อยๆ และเมื่อชอบดูก็จะหาโอกาสเล่น และเมื่อลงไปเล่น ก็จะเห็นภาพรวม และอาจจะคาดการณ์บางอย่างได้ เช่น เมื่อไรที่เพื่อนร่วมทีมจะส่งลูกมา ส่งมาตอนไหน ส่งไปทางไหน เราจะวิ่งไปรอแถวๆไหน ต้องกันพื้นที่ ต้องส่งสัญญาณยังไง

เรื่องนี้บอกผมว่า ไม่ว่าเราจะทำอะไรก็ตามให้ได้ดี เมื่อเราชอบมัน เราจะศึกษามัน เราจะลองทำมัน ทำจนเห็นภาพรวม และคาดการณ์บางอย่างได้ เมื่อนั้นเราจะกลายเป็นผู้เล่นที่ดี และเป็นที่ต้องการครับ

Pallat Anchaleechamaikorn

I am a programmer.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store