169 wordpress feature image (13)

QA แบบไหนที่ AI แทนไม่ได้

ทำงาน QA มา 3 ปี รู้สึกว่าทำไมงานมันก็วนไปวนมาอยู่ที่เดิมอยากย้ายไปที่อื่นก็ไม่กล้า จะขอเลื่อนตำแหน่งก็ไม่ได้ซักที ใครรู้สึกแบบนี้อยู่ ปัญหาอาจจะไม่ใช่แค่เรื่อง skill ก็ได้นะคะ . ช่วงที่ผ่านมาพี่กิ่งได้ไปฟังคลิปนึงของ Dan Koe มาค่ะ ชื่อว่า “How to become so valuable AI will never replace you” ทำยังไงถึงจะเป็นคนที่มีคุณค่ามากจน AI ก็มาแทนไม่ได้ เขาพูดถึง 6 ไอเดีย ที่ทำให้เราเป็นคนที่ AI มาแทนไม่ได้ 1️⃣ Agency: ลงมือทำโดยไม่ต้องรอให้ใครสั่ง2️⃣ Taste: รู้ว่าอะไรดี หรือไม่ดี ได้เอง โดยไม่ต้องถามใคร3️⃣ Flow state: ทำงานที่ท้าทาย ในจุดที่พอดี4️⃣ Persuasion: สื่อสารให้คนอื่นเข้าใจและเห็นคุณค่าสิ่งที่เราทำ5️⃣ Trial & Error: เรียนรู้จากความผิดพลาด ไม่ใช่กลัวมัน6️⃣ […]

QA แบบไหนที่ AI แทนไม่ได้ Read More »

169 wordpress feature image (12)

Coding Interview ยังไงให้คนรู้ว่ามีของ

พี่กิ่งเป็นคนนึงที่จะทำ coding interview เวลาต้องสัมภาษณ์ตำแหน่ง Automation QA ค่ะไม่ใช่เพราะอยากเช็คว่าเขียนโค้ดเก่งแค่ไหนนะคะแต่อยากรู้ว่ามีวิธีรับมือกับปัญหายังไงบ้าง ที่ผ่านมาสัมภาษณ์มาหลายคน สิ่งที่เห็นประจำเลยคือ “หลายคนไม่กล้าทำ” มีทั้งคนที่ขอไม่ทำเลย บอกว่าทำไม่ได้แล้วก็จบแค่นั้นบางคนขอเอากลับไปทำที่บ้านบางคนนิ่งไปเลย แล้วนั่งทำเงียบๆ ไม่ถามอะไร . พี่กิ่งเข้าใจทุกคนนะคะ เพราะน่าจะกดดันมาก อยู่ๆ มาโดนขอให้เขียนโค้ดให้ดูบางคนอาจจะคิดว่า คนสัมภาษณ์ต้องการเห็นคำตอบที่ perfect, syntax เป๊ะ รันผ่านในครั้งเดียว แต่จริงๆ แล้ว อยากบอกทุกคนว่า พี่กิ่งไม่ได้ให้คะแนนอะไรพวกนั้นเลยค่ะ 💡 สิ่งที่อยากเห็นจริงๆ คือ “วิธีคิด” ต่างหาก คำถาม coding มักจะเป็นแค่จุดเริ่มต้น เพื่อที่จะดูวิธีการจัดการกับปัญหาค่ะเช่น ดูว่าถ้าให้โจทย์ไปแล้ว จะทำยังไง จะถามเพื่อเช็คให้แน่ใจก่อนมั้ย หรือจะโดดลงไปเขียนโค้ดเลยมีการจัดลำดับความคิดของตัวเองก่อนมั้ย หรือคิดไปโค้ดไป สุยๆ ไปตามทาง บางทีอาจจะมีคำถามต่อหลังจากนั้นอีก เช่น จะเทสยังไง คิดว่ามีตรงไหนที่จะเจอบั๊กได้บ้าง บางคนที่ได้ไปต่อ ก็ไม่ใช่คนที่เขียนโค้ดได้เป๊ะแบบเอามารันได้จริง ก็มีบ่อยไปค่ะ . และความจริงก็คือ QA อย่างเรา

Coding Interview ยังไงให้คนรู้ว่ามีของ Read More »

169 wordpress feature image (11)

ตอบสัมภาษณ์ไปตามจริง แต่ก็ยังรู้สึกว่าตอบไม่ได้เรื่องอยู่ดี

จริงๆ ปัญหาอาจจะไม่ได้อยู่ที่คำตอบนะคะ . พี่กิ่งก็เป็นบ่อยเลยค่ะ สัมภาษณ์จบไปแล้ว ก็คิดว่าตอบไปตามความจริงแล้ว ไม่ได้โกหก ไม่ได้แต่งเรื่องขึ้นมา แต่ก็มางงตัวเองว่า พูดอะไรไป แล้วที่เล่าไปมันได้อะไรบ้างนะ ทั้งๆ ที่ก็ไม่ได้พูดอะไรผิดเลย . ปัญหามันอาจจะไม่ได้อยู่ที่เรื่องเล่านะคะแต่เราอาจจะเผลอเล่าโดยคิดว่า “คนฟังรู้เรื่องราวเบื้องลึกเบื้องหลังอยู่แล้ว” แต่ความจริงแล้ว คนที่มาสัมภาษณ์เรา เค้าเป็นคนแปลกหน้าไม่ได้รู้ว่าทีมเราทำงานยังไงไม่รู้ว่าบั๊กที่เล่าไปมันใหญ่แค่ไหนไม่รู้ว่าคำว่า “หาอยู่หลายวัน” ที่เราพูดไป มันหมายความว่ายังไง แล้วพอเราตอบออกไป มันก็จะฟังดูเลื่อนลอย จับประเด็นไม่ค่อยได้ตามไปด้วยค่ะ . วันนี้พี่กิ่งเลยอยากพาไปชวนดูเรื่อง STAR ที่ถูกออกแบบมาเพื่อแก้ปัญหานี้ ⭐ STAR คือ framework ที่บังคับให้เราเล่าเรื่องแบบให้คนนอกตามได้ 📍 เริ่มจากสถานการณ์ที่เจอ (Situation) -> หน้าที่ของเรา (Task) -> สิ่งที่เราทำจริงๆ (Action) -> ผลลัพธ์ที่เกิดขึ้น (Result) มันไม่ใช่สิ่งที่ทำให้เราพูดเกินจริงไม่ใช่เพื่อให้เราเตรียมสคริปต์สำหรับจำเข้าไปตอบ แต่เพื่อให้เราสามารถเล่าประสบการณ์ของเรา ในแบบที่คนนอกจะเข้าใจได้เป็นการร้อยเรียงเรื่องราว ให้คนฟังเห็นภาพตามและเข้าใจ impact ที่เกิดขึ้นได้จริงๆ . สมมติเราเจอคำถามว่า “เล่าบั๊กที่ซับซ้อนที่สุดที่เคยเจอให้ฟังหน่อย”

ตอบสัมภาษณ์ไปตามจริง แต่ก็ยังรู้สึกว่าตอบไม่ได้เรื่องอยู่ดี Read More »

169 wordpress feature image (10)

นั่งงมมาทั้งวันก็ยังไม่ไปไหน

แล้วก็เริ่มสงสัยว่า “หรือเราเองที่เก่งไม่พอ” 🫠 เป็นกันมั้ยคะ เวลาที่ติดอยู่กับอะไรซักอย่างมาทั้งวัน คิดเท่าไหร่ก็คิดไม่ออกบั๊กที่ทำยังไงก็หาวิธี reproduce ไม่ได้Requirement ที่แสนจะซับซ้อน ที่คิด test case ยังไงก็รู้สึกว่ายังไม่ครบAutomation Test ที่เขียวๆ แดงๆ หาทางแก้ไม่ได้ซักที งานที่มัน “ควรจะเสร็จได้แล้ว” แต่ทำยังไงก็ไม่มีความคืบหน้าซักที พอเวลาผ่านไปนานเข้า เสียงในหัวก็เริ่มเปลี่ยนจาก“มันติดตรงไหนกันนะ” ไปเป็น “หรือจริงๆ ปัญหาไม่ได้อยู่ที่งาน… แต่อยู่ที่ตัวเราที่ยังเก่งไม่พอ” แล้วก็จมอยู่ตรงนั้น พยายามฝืนทำต่อไปเรื่อยๆ เพราะคิดว่า “มันต้องเสร็จได้แล้ว” . แต่จริงๆ แล้ว อาจจะไม่ใช่แบบนั้นนะคะการที่เราติดปัญหาอะไรซักอย่างนานๆ หาทางไปต่อไม่ได้ มันไม่ได้แปลว่าไม่เก่งเสมอไปแต่มันอาจจะแปลว่า สมองเรา overload แล้ว สมองเราตอนนั้นมันเหมือนสมองที่ไม่ยอม clear cache ออกไปซักทีมันมักจะมีอะไรเดิมๆ ค้างอยู่เต็มไปหมด ไม่ว่าจะเป็น assumption ที่เราคิดว่าน่าจะใช่มุมมองที่เราเคยคิดไปแล้ววิธีที่เราเคยลองไปแล้วแล้วมันก็จะวนๆ อยู่อย่างนั้น ที่สำคัญคือ สิ่งที่เราชอบทำกันเวลาที่ติดแบบนี้คือ “ฝืนทำต่อไปเรื่อยๆ”นั่งยาวๆ ไม่ยอมลุก ไม่พักกินข้าว บอกตัวเองว่า ขอดูตรงนี้อีกนิด

นั่งงมมาทั้งวันก็ยังไม่ไปไหน Read More »

169 wordpress feature image (9)

คำถามสัมภาษณ์ QA ที่เจอบ่อยๆ และสิ่งที่คนสัมภาษณ์อยากได้ยินจริงๆ

❓ “เคยปล่อยบั๊กหลุดขึ้น production มั้ย” เป็นคำถามที่พี่กิ่งใช้ถามเวลาสัมภาษณ์บ่อยมากเลยค่ะและก็จะสังเกตว่า หลายๆ คน จะตอบว่า “ไม่เคย” แล้วก็จบ พี่กิ่งก็ไม่แน่ใจเหมือนกันว่าในใจของคนที่ตอบว่า “ไม่เคย” จะคิดอะไรอยู่นะคะอาจจะอยากแสดงความมั่นใจว่าเป็น QA ที่จับบั๊กได้ทุกตัวเป็น QA ที่เขียน test case ได้ครอบคลุมจนไม่เคยมีบั๊กหลุด แต่จริงๆ แล้ว “ไม่เคย” อาจจะไม่ใช่คำตอบที่ดีเสมอไปมันอาจจะแปลว่า ไม่เคยไปตามดูเลยว่าหลังเทสเสร็จแล้ว เกิดอะไรขึ้นบ้างหรืออาจจะแปลว่า ไม่เคยเจอ เพราะทีม track production bug ที่ user ส่งเข้ามาไว้ใน project ของ customer support ทำให้ไม่เคยเห็นหรืออาจจะแปลว่า ไม่เคย จริงๆ ก็ได้ (นั่นแปลว่าคุณโชคดีมากๆ ค่ะ 😂) . แล้วในฐานะคนสัมภาษณ์ อยากได้คำตอบแบบไหน 📍 ถ้าไม่เคยจริงๆ ก็ตอบไปตามตรงได้เลยค่ะ อาจจะเล่าต่อซักหน่อยว่า มีกระบวนการยังไง ที่ทำให้มั่นใจได้ว่าจะเจอบั๊กก่อนขึ้นจริง หรือมีการ

คำถามสัมภาษณ์ QA ที่เจอบ่อยๆ และสิ่งที่คนสัมภาษณ์อยากได้ยินจริงๆ Read More »

169 wordpress feature image (8)

วาง Data ผิดที่ แก้นิดเดียว พังทั้งก้อน

พอถึงจุดนึง Automation Test ของเราจะเริ่ม “หนัก” มีใครกำลังเจอบ้างคะ . ไม่ใช่หนักเพราะมี test case เยอะ มีข้อใหม่ๆ เพิ่มขึ้นทุกวัน แต่มันหนักเพราะ ทุกครั้งที่กลับมาอ่าน เราจะงง และต้องใช้เวลาทำความเข้าใจมากกว่าเดิมคนในทีมต้องมาทำต่อ ก็งง “ตัวแปรนี้มาจากไหนเหรอ เอาไว้ทำอะไร”ส่งให้ Dev ช่วยดูก็งง ให้ Business ช่วยเช็ค ก็งง หรือไม่ก็ แก้ requirement นิดเดียว แต่ Test พังหลายที่รัน local ผ่าน แต่ขึ้น CI แล้วต้องไปลุ้นตลอด . ส่วนใหญ่เรามักจะคิดว่า ก็ Test มันซับซ้อนขึ้น เยอะขึ้น มันก็เป็นเรื่องธรรมดาแต่จริงๆ ปัญหามักไม่ได้อยู่ที่โค้ดของ Automation Test ของเราค่ะหลายครั้งที่พี่กิ่งเจอ ต้นเหตุส่วนหนึ่งมาจาก test data ที่กระจัดกระจายอยู่เต็มไปหมดเพราะเราไม่ได้วางมันไว้ให้ถูกที่ตั้งแต่แรก . ลองนึกภาพตามดูค่ะ

วาง Data ผิดที่ แก้นิดเดียว พังทั้งก้อน Read More »

169 wordpress feature image (7)

กลัว = สัญญาณว่ากำลังจะเติบโต

เคยเป็นมั้ยคะ โดน assign งานที่ไม่เคยทำมาก่อน พอเห็นก็คิดในใจเลยว่า อันนี้มันเกินไป ทำไม่ได้แน่ๆ ยังไม่ทันได้เริ่มทำเลย แต่ในหัวก็ตัดสินไปแล้วว่าสู้ไม่ได้ ความรู้สึกนี้มันปกติมากเลยนะคะ ไม่ได้แปลว่าเราไม่เก่งด้วยค่ะความกลัวแบบนี้ มันเป็นของแถมที่มักจะพ่วงมากับงานของเราเสมอ แต่ไม่ค่อยมีใครพูดถึงกันแต่จริงๆ ทุกคนก็เคยผ่านมันมาทั้งนั้นค่ะ . มีครั้งนึง พี่กิ่งต้องรายงาน test result ใน conference call เป็นภาษาอังกฤษตอนนั้นภาษาก็ยังไม่ดีเท่าไหร่ ไม่เคยพูดภาษาอังกฤษในที่ประชุมเลยด้วยซ้ำแต่ก็คิดว่าลองดูซักตั้ง ก็ไปเตรียมตัว เขียนโน้ตไว้ ซ้อมพูดกับคนอื่น สรุปว่าในมีตติ้ง ทุกคนคุยเรื่องอื่นกันจนหมดเวลา ไม่ได้มีจังหวะให้พูดเลยซักคำจบมีตติ้งนั้น ทั้งขำทั้งโล่ง แต่ก็ทำให้ได้รู้ว่า เราก็เตรียมได้นี่นา ถ้ามีครั้งหน้าอีกก็คงไม่กลัวเท่าเดิมแล้ว 💡 ความกลัว มันไม่ได้บอกว่าเราไม่เก่งพอแต่มันแค่บอกว่าเรื่องนี้สำคัญสำหรับเรา . และเรื่องแบบนี้ ก็เป็นสิ่งที่เกิดซ้ำๆ กับงานของเรามากมายจนนับไม่ถ้วน 🔸 เวลาต้องค้านใครซักคนในที่ประชุมไม่ว่าจะเป็น requirement ที่ไม่ได้คิดเรื่องเทสให้ดี หรือคุยเรื่องบั๊กที่เห็นไม่ตรงกัน “ถ้าพูดไปแล้วทีมจะมองเรายังไง”“ถ้าความเห็นเราผิด แล้วจะดูไม่ professional รึเปล่า” 🔸 มีเรื่องที่สงสัยอยากจะถามฟังคนอื่นคุยกันในที่ประชุมแล้วไม่เข้าใจเลย แต่ทำไมไม่มีใครถามอะไรเลยนะ “ถ้าเราถามไปแล้วจะดูโง่มั้ย”“หรือเป็นเราเองที่ตามไม่ทัน” 🔸

กลัว = สัญญาณว่ากำลังจะเติบโต Read More »

169 wordpress feature image (6)

เทสอันเดิมเดี๋ยวผ่าน เดี๋ยวไม่ผ่าน ผีหลอกหรือเปล่า

มาคุยเรื่อง Automation Test กันต่ออีกซักหน่อย กับอีกหนึ่งปัญหาที่ทำให้“เมื่อวานยังรันผ่านอยู่เลย ทำไมวันนี้เฟลอีกแล้ว ไม่มีใครแก้อะไรซักนิด” เคยเจอกันมั้ยคะเมื่อวาน pass วันนี้ fail ลอง rerun ดูซักหน่อย pass อีกแล้ว ยังไม่ได้แตะโค้ดสักบรรทัดอยากจะจับ Automation Test ของเรามาถามว่าเกิดอะไรขึ้น ทำไมผีเข้าผีออกทำอะไรตามใจแบบนี้ บอกเลยว่าคุณไม่ได้เจออยู่คนเดียว(ใช่ค่ะ พี่กิ่งก็เคยเจอ กว่าจะหาทางแก้ปัญหาได้ บางทีใช้เวลาเป็นเดือน) และส่วนใหญ่มันไม่ได้เกิดจาก tool ไม่ดี หรือ เราเขียนไม่ดีหรอกค่ะอีกหนึ่งในสาเหตุที่เจอบ่อยๆ คือ วิธีที่เราจัดการกับ test data วันนี้จะพาไปเจาะลึกอีกหนึ่งเรื่องที่มักจะทำให้เจอปัญหาบ่อยๆ ค่ะคือ Static Data กับ Dynamic Data . 🧊 Static Data คืออะไร คือค่าที่เรากำหนดไว้ตายตัวใน test เลย บางทีเราเรียกว่า hardcode ค่ะเช่น บอกไปเลยว่าใช้ username: “test01@test.com”

เทสอันเดิมเดี๋ยวผ่าน เดี๋ยวไม่ผ่าน ผีหลอกหรือเปล่า Read More »

169 wordpress feature image (5)

Shift-Left ยังไงในวันที่ทีมยังไม่พร้อม

เคยรู้สึกมั้ยคะว่าตัวเองเป็นคนสุดท้ายที่ต้องรับจบตลอด เวลาเกิดอะไรขึ้น 🐛 เจอบั๊กก่อนขึ้น production… ทำไมก่อนหน้านี้เทสไม่เจอ🐛 ลูกค้าเจอบั๊ก… QA เทสรึเปล่า ทำไมหลุด🐛 Requirement เปลี่ยนกลางคัน… ต้องเริ่มเทสใหม่หมด แต่ deadline ยังเป็นวันเดิม ทั้งๆ ที่บางทีปัญหามันก็เกิดมาตั้งนานแล้ว ก่อนจะมาถึงมือเราด้วยซ้ำแต่ทำไมถึงจะต้องมาพังเอาตอนท้ายๆ แล้วงานก็ดีเลย์ทุกที . พี่กิ่งเดาว่าหลายๆ คนที่อ่านอยู่ตอนนี้ ก็น่าจะเคยรู้สึกแบบนี้ใช่มั้ยคะQA แบบเรามักจะโดนถามเสมอ “เทสรึยัง ทำไมไม่เจอ” แล้วเราก็ “รับจบตลอด” ทั้งๆ ที่ปัญหามันเกิดขึ้นมาตั้งแต่ตอน design แล้วแล้วทำไมเราไม่ไปหามันให้เจอตั้งแต่ต้นทางไปเลยล่ะ! . ลองมาดูเคสตัวอย่างกันดีกว่าค่ะ สมมติว่าเรากำลังสร้างแอปช็อปปิ้งตัวนึงอยู่ แล้วก็ต้องเก็บข้อมูลวันที่ของออเดอร์นั้น แต่ไม่มีใครคุยกันว่าเราจะเก็บวันที่ใน timezone ไหน ทุกคนเข้าใจเอาเองว่าก็ต้องรู้อยู่แล้วว่าต้องเป็น timezone ที่เป็น local time สิ ไม่ใช่ UTC (ที่เป็นเวลาสากลคือ GMT+0) ก็เลยไม่มี requiremnt ตรงไหนพูดถึงเรื่องนี้ เพราะทุกคนคิดว่า “ก็น่าจะเข้าใจอยู่แล้ว”

Shift-Left ยังไงในวันที่ทีมยังไม่พร้อม Read More »

169 wordpress feature image (4)

วิธีเตรียมเทสให้พร้อมก่อนรัน ที่ทำให้ debug ง่ายขึ้น

มีคำถามที่พี่กิ่งได้ยินบ่อยมากตอนบอกให้ใครแตก e2e ยาวๆ ออกเป็น scenario ย่อยๆ คือ “แล้วเราจะรันสเต็ปเดิมซ้ำหลายรอบเหรอ”“แบบนี้เทสก็จะเพิ่มขึ้นเยอะเลย”“จะไม่เสียเวลารันนานเกินไปเหรอ” พี่กิ่งจะมาเล่าสิ่งที่เคยเจอให้ฟังค่ะ . ตอนที่พี่กิ่งเริ่มเขียน automation test ใหม่ๆ ก็เขียนเป็น flow ยาวๆ เหมือนกันค่ะคิดว่าไหนๆ ก็เทสแล้ว ก็ทำให้ครบไปทีเดียวเลย Login -> สร้าง product -> verify -> แก้ไข product -> verify -> ลบทิ้ง รันผ่านก็ดีใจ รันครั้งเดียว ไปใส่ result ว่าผ่านได้หลายข้อเลย แต่พอมันพังขึ้นมา… ก็งงว่ามันพังตรงไหนเสียเวลาไล่หาไปอีกเป็นวัน . รอบสอง “ฉันจะแยก” ทีนี้ก็ทำแบบที่เราคุยกันไปโพสก่อนหน้านี้ค่ะไปแตก test scenario ออกให้ย่อยลงไปอีก เพื่อให้มันเทสแค่อย่างเดียว ตอนนี้การ “แก้ไข product” ก็เลยมี test scenario แยกออกมาเป็นของตัวเองทำให้อ่านง่ายขึ้นมาก

วิธีเตรียมเทสให้พร้อมก่อนรัน ที่ทำให้ debug ง่ายขึ้น Read More »