How to ask questions

เมื่อสามอาทิตย์ที่แล้วมี front line ติดต่อมาเรื่อง Java api ของผมเกี่ยวกับตัวอย่าง code ไว้ส่ง message

  1. สิ่งที่ front line ส่งมาก็คือ “ขอ example code ที่ส่ง message service down หน่อย”
  2. ผมใช้เวลาครึ่งวันในการเขียน code (Java) อันนั้นแล้วส่งไปให้เขา
  3. front line หายไป 1 อาทิตย์ พร้อมกับกลับมากับปัญหาว่า หาวิธีรัน code นั้นไม่ได้
  4. ใช้เวลาอีก 1 อาทิตย์ในการสอนเขารัน classpath
  5. อาทิตย์ที่สามบอกว่าขอ example code ส่ง message service up ตาม spec นี้ๆ หน่อย ซึ่งผมก็ใช้เวลาวันนึงทำให้ ก็เจอว่า service ไม่ up เหมือนกัน
  6. วันนี้ front line เพิ่งมาบอกปัญหาที่แท้จริงว่า “มีลูกค้าเจ้านึงเจอปัญหาว่าใช้ Java api ส่ง service down, service up แล้วโปรแกรมที่รับข้อความมันไม่ service up ตาม ลูกค้ารอวิธีแก้มาสามอาทิตย์แล้วนะ”
  7. ควย!
  8. ดองแม่งละกัน ลูกค้าตามฝั่งโน้น ไม่ใช่ฝั่งเรา ♥

พออ่าน email วันนี้แล้วความคิดแรกที่แว๊บมาคือ “ทำไมมึงไม่ส่งปัญหาที่แท้จริงมาให้กูตั้งแต่แรกวะ”

กำลังคิดว่าจะส่ง How To Ask Questions The Smart Way ไปให้แม่งอ่าน

ผมชอบทำเอกสารและชอบจัด training

ผมชอบทำเอกสารและชอบทำ training (ทั้งเป็นคนสอนและคนทำสื่อประกอบการสอน)

ผมโกหก

ผมเกลียดแม่งฉิบหาย แต่ตอนนี้ทุกคนคิดว่าผมชอบมันและบอกว่าผมต้องทำอะไรพวกนั้น

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

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

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

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

ควย

ใครผิด (วะ)?

Java Script API ที่ผม support อยู่ปัจจุบันเป็น version 5 ออกมาตอนกลางปี ส่วน version 3 และ 4 ออกเมื่อปีที่แล้วครับ

ปีที่แล้วมีลูกค้าเจ้าหนึ่งใช้ version 2 ที่ออกตอนปี 2011 แล้วเจอปัญหาร้ายแรงปัญหาหนึ่ง ขณะนั้น version 3 ออกได้ไม่นานและ dev กำลังเขียน version 4 อยู่

ผมใช้เวลาเป็นเดือนในการทำ issue นี้ (replicate ยากมากๆ) ระดม dev มาช่วยแล้วก็ยังไม่ได้ สุดท้ายก็ส่งเรื่องไป Microsoft Support ถึงได้รู้ว่า setTimeout() บน IE มันทำงานผิด MS ยอมรับว่าเป็นบั๊กของ IE 7/8 และแก้ไปใน IE 9 แล้ว แน่นอนว่าลูกค้าแม่มไม่ยอมเปลี่ยนไป IE 9 แน่ๆ ตอนนั้นผมกะ dev จึงช่วยการหาทางป้องกันและยัดมันลงไปใน patch หนึ่งของ version 2 ซึ่งลูกค้าก็เอาไปใช้ได้ดีจนถึงทุกวันนี้

ต้นเดือนที่ผ่านมา ลูกค้าจะ upgrade ไปเป็น version 5 ซึ่งเป็นอันล่าสุด ผมได้รับงานมาว่าลูกค้าจะต้องทำอะไรบ้างเพื่อที่จะ migrate page เขาได้เพราะมันมีอะไรเปลี่ยนข้างในเยอะเหมือนกัน ผมทำ list จะเสร็จแล้วรู้สึกตะหงิดๆ อะไรบางอย่างเลยลองดู code ส่วนที่เจอปัญหาคราวโน๊นดูถึงเพิ่งเห็นว่า code patch นั้นไม่ถูกใส่มาใน version 5 ด้วย…

ไล่ย้อนไปพบว่า version 3, 4, 5 code ที่เจอปัญหายังเหมือนกับ version 2 เด่ะๆ สำหรับ version 3 ผมไม่แปลกใจอะไร แต่ที่งงคือทำไม version 4 และ 5 เสือกไม่ merge patch นี้ไปด้วย ถาม dev ก็ไม่รู้ คนเขียนออกไปแล้ว ไม่มีใครตอบได้

แน่นอนว่าด้วยบาปที่ผมแม่งเป็นคนเจอไอ้ code diff เหี้ยนี่ ผมเลยได้รับคำสั่งมาว่าให้ simulate ปัญหานี้ใน version 5 ให้ได้ภายในเวลา 1 อาทิตย์…

3 วันที่ผ่านมาผมยัง replicate ปัญหาแม่มไม่ได้เลย issue อื่นๆ ที่ลูกค้าส่งเข้ามาถูกผลักไปเป็นเรื่องรองๆ ไปทั้งหมดเพื่อดูเรื่องนี้โดยเฉพาะ ผมมานั่งนึกว่าทำไมกูต้องมานั่งทำเหี้ยอะไรเสียพลัง เสียเวลาไปเปล่าๆ ปลี้ๆ อันนี้ด้วยวะ

ที่กูต้องมานั่งทำไอ้เหี้ยนี่อยู่แม่งผิดที่ใครวะ