SE CORNER

SE CORNER

By Chaiyong RagkhitwetsagulTechnology
Download on the App Store

SE CORNER episodes

  • EP56 - Flaky Tests รันผ่านบ้าง ไม่ผ่านบ้าง เกิดจากอะไร?

    หากท่านเขียนเทสต์แล้วพบว่ามีเทสต์บางส่วนที่บางทีก็รันผ่าน บางทีก็ไม่ผ่าน สร้างความปวดหัวและหมดความมั่นใจในเทสต์ของตัวเอง ปัญหานี้เรียกว่า flaky test หรือ non-deterministic test ครับ EP นี้จะพาไปฟังคำแนะนำจาก Martin Fowler เจ้าพ่อสายวิศวกรรมซอฟต์แวร์ ว่า flaky test เกิดจากอะไร และแก้ปัญหาได้อย่างไรบ้าง

    รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ

    11 min
  • EP55 - Testability เขียนโค้ดให้เทสท์ง่าย ต้องทำยังไง?

    EP นี้ชวนมาคุยเรื่องหลักการ testability ของซอฟต์แวร์ที่ผมคิดว่าเป็นหลักการพื้นฐานที่สามารถนำไปใช้ได้ทุกๆ แพลตฟอร์มและทุกๆ ภาษาครับ ซอฟต์แวร์ใดๆ จะทดสอบยากหรือง่าย เราเรียกว่า "testability" ถ้าค่านี้สูงก็คือทดสอบง่าย แต่ถ้าต่ำก็คือทดสอบยาก ซึ่งเจ้า testability นี้ไม่ต้องหาอะไรมาวัดก็ได้นะครับ ให้คิดถึงสองปัจจัยหลักๆ คือ 

    1. controllability - สามารถกำหนดหรือควบคุม behavior ของซอฟต์แวร์ที่จะทดสอบได้ง่ายแค่ไหน ผ่าน input ที่เราจะให้เข้าไป

    2. observability - สามารถดูหรือวัดค่าผลลัพธ์จากการทดสอบซอฟต์แวร์ได้ง่ายแค่ไหน ผ่าน output ที่ออกมา

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

    รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ

    10 min
  • EP54 - Testing นั้น สำคัญไฉน? (ต้องถามอีกเรอะ!) ตอนที่ 2 - คำแนะนำจากหนังสือ Software Engineering at Google

    EP นี้มาต่อกันที่ Chapter 11 ของ Software Engineering at Google ครับ เรามาดูกันว่า Google ฝ่าฝันการนำ testing มาใช้จนเป็นวัฒนธรรมองค์กรได้อย่างไร 

    .

    ทีมใน Google มีกระบวนการในการปลูกฝังการทำ test ตั้งแต่ปี 2005 โดยใช้กระบวนการหลักๆ สามอย่างคือ

    1. อบรมเรื่องการทำ test และ automated test ตั้งแต่ตอนปฐมนิเทศน์ และให้คนใหม่ๆ ช่วยปรับแนวคิดของคนเก่าๆ ในองค์กร

    2. มีการให้ Test certified โดยแบ่งระดับของทีมออกเป็น 5 ระดับ ตั้งแต่ 1 (พื้นฐาน) จนถึง 5 (เทพสุดๆ) (หลักจากทำได้ 1,500 โปรเจคท์ แนวคิดนี้ได้ถูกแทนที่ด้วยกระบวนการใหม่ที่ automated ชื่อ Project Health (pH) แทน)

    3. ใช้โครงการ Testing on the Toilet (TotT) โดยเอาบทความส่งเสริมความรู้ด้าน testing ไปแปะในห้องน้ำ เรียกว่า โดนบังคับให้อ่านกันเลยทีเดียว ซึ่งได้รับผลตอบรับที่ดีมาก และยังทำมาจนถึงปัจจุบัน

    .

    รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ

    13 min
  • EP53 - Testing นั้น สำคัญไฉน? (ต้องถามอีกเรอะ!) ตอนที่ 1 - คำแนะนำจากหนังสือ Software Engineering at Google

    ต้อนรับ Season 2 ด้วย EP53 จาก Chapter 11 ของหนังสือ Software Engineering at Google กันครับ 

    .

    EP นี้เป็นเรื่องการทดสอบซอฟต์แวร์ (Software Testing) ซึ่งถือว่าเป็นรากฐานสำคัญของการพัฒนาซอฟต์แวร์ที่ Google และเป็นส่ิงที่ Google ทำได้ดีและมีชื่อเสียงมาก ใน EP นี้เลยชวนมาคุยเรื่องความสำคัญของการ test, ทำไมต้องทำ test automation, test size และ test scope 

    .

    รายละเอียดจะเป็นยังไง ไปฟังกันใน EP นี้ครับ

    16 min
  • EP52 - Retrospective: 1 ปีในการทำ SE Corner Podcast

    EP นี้ไม่ได้มาเล่าเรื่อง software engineering ครับ แต่จะขอทำรีวิวตัวเองในการทำ SE Corner Podcast นี้มาครบ 1 ปีเต็มๆ เนื่องจากเป็นพอดแคสต์เกี่ยวกับวิศวกรรมซอฟต์แวร์ ก็เลยขอใช้วิธีการ retrospective สักหน่อย จะได้เข้าธีม :-) 

    ใน EP นี้ผมเลยมาเล่าให้ฟังว่ามีเรื่องไหนบ้างที่ผมคิดว่า (1) ผมทำได้ดี (what we did well), (2) ผมยังสามารถปรับปรุงได้ (what we can do better), และ (3) อะไรที่จะเริ่มทำหลังจากนี้ไป (actions)

    รายละเอียด ไปฟังกันใน EP นี้เล้ย!

    19 min
  • EP51 - อ้าว เฮ้ย! รวมความเข้าใจผิดในกระบวนการพัฒนาซอฟต์แวร์ที่ใช้ Machine Learning

    Machine learning-enabled systems หรือระบบซอฟต์แวร์ที่มี machine learning เป็นส่วนประกอบ เป็นซอฟต์แวร์ที่พบได้มากขึ้นเรื่อยๆ ในปัจจุบัน งานวิจัยจาก Software Engineering Institute (SEI) ที่ Carnegie Mellon University โดย Grace Lewis และ Ipek Ozkaya พบว่า ทีมพัฒนาของระบบดังกล่าวมักจะประกอบด้วยทีม 3 ทีมที่มีความรู้และความเข้าใจในด้านที่แตกต่างกัน คือ data scientist, software engineering, และ operations 

    ทีม data scientist มีหน้าที่สร้าง ML model แล้วส่งต่อให้ทีม software engineering นำไปรวมกับส่วนอื่นๆ ของซอฟต์แวร์ให้ออกมาเป็นระบบที่คนใช้งานได้ง่าย และสุดท้ายส่งต่อให้ operations ทีม เพื่อนำไปติดตั้งและ monitor การทำงาน 

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

    รายละเอียดจะเป็นอย่างไร ไปติดตามกันใน EP นี้ครับ

    13 min
  • EP50 - สรุปเนื้อหาจาก Stack Overflow Developer Survey 2022

    EP นี้เอารายงานผลของ Stack Overflow Developer Survey 2022 มาเล่าให้ฟังกันครับ เนื้อหามีเยอะมากๆ เลยสรุปสั้นๆ ในแต่ละด้านมาให้ฟังกัน น่าสนใจทั้งนั้นเลย

    • คนเรียนที่จะโค้ดเองมากขึ้น
    • Docker ได้รับความนิยมสูงขึ้น
    • Rust เป็นภาษาที่คนรักที่สุด 7 ปีซ้อน
    • แต่ JavaScript เป็นภาษาที่คนเขียนเยอะที่สุด
    • Clojure เป็นภาษาที่ได้เงินเดือนเยอะสุด 
    • Tools ด้าน Big-data, data streaming ทำเงินได้เยอะสุด
    • บริษัทใหญ่ๆ เริ่มทำงานแบบ hybrid
    • คนจำนวนมากใช้เวลา 30-60 นาที (หรือมากกว่า) ต่อวันหาคำตอบเพื่อแก้ปัญหา programming 
    • รายละเอียดจะเป็นยังไง ไปฟังกันใน EP นี้ครับ

      ที่มา Stack Overflow Developer Survey 2022: https://survey.stackoverflow.co/2022/

      14 min
    • EP49 - Document มีประโยชน์อย่างไร? (ตอนที่ 2) - คำแนะนำจากหนังสือ Software Engineering at Google

      EP นี้มาคุยกันต่อจาก EP ที่แล้วเรื่องการเขียน document ครับ Google แบ่งชนิดของ document ออกเป็น 5 ชนิด คือ 

      1. Reference documentation, including code comments

      2. Design documents

      3. Tutorials

      4. Conceptual documentation

      5. Landing pages

      แล้วแต่ละอันมีความแตกต่างกันอย่างไร ใครคือคนอ่าน? มีวิธีเขียนอย่างไรให้เหมาะสม?

      นอกจากนี้เรายังไปดูว่ามีวิธีการ review ตัว document อย่างไร และมี tips & tricks อะไรในการเขียน document ที่ดีบ้าง

      รายละเอียด ติดตามได้ใน EP นี้ครับ :)

      17 min
    • EP48 - Document มีประโยชน์อย่างไร? (ตอนที่ 1) - คำแนะนำจากหนังสือ Software Engineering at Google

      EP นี้พากลับไปอ่าน Chapter 10 ในหนังสือ Software Engineering at Google เรื่อง Documentation กันครับ เราจะพาไปดูว่า Google แปลความหมายของ document อย่างไร และประโยชน์ของการเขียน document (ซึ่ง write once, read many times) นั้นมีอะไรบ้าง

      นอกจากนี้ผมจะเล่าให้ฟังว่าแนวทางการแก้ปัญหาว่า dev ไม่อยากเขียน document นั้นจะต้องทำอย่างไร จากประสบการณ์ของ Google เอง

      รายละเอียดไปฟังกันใน EP นี้ครับ

      13 min
    • EP47 - ก๊อปปี้โค้ดจาก Stack Overflow อย่าลืม CC BY-SA 4.0 license

      EP ชวนคุยเรื่อง software license โดยเฉพาะ license ของโค้ดบน Stack Overflow 

      โค้ดและเนื้อหาใดๆ บน Stack Overflow นั้น ไม่ได้เป็น public domain แต่อยู่ภายใต้ license ชื่อ Creative Commons Attribution-ShareAlike 4.0 International (หรือ CC BY-SA 4.0) ซึ่งมีแนวทางกำหนดไว้ว่าสามารถนำไปใช้ได้ แต่จะต้อง (1) ให้ attribution หรือให้เครดิตกลับมาที่เจ้าของเนื้อหา และ (2) หากนำไปใช้ต่อ ผลงานนั้นๆ ก็จะต้องมี license CC BY-SA 4.0 หรือ license ที่รองรับด้วย เช่น Free Art license 1.3 หรือ GPLv3

      EP นี้เลยอยากจะให้นักพัฒนาทุกท่านตระหนักไว้ทุกครั้งเรื่อง software license ก่อนที่จะก๊อปปี้โค้ดจาก Stack Overflow มาใช้ เพื่อจะได้ไม่ทำผิดข้อกำหนดของ license กัน

      รายละเอียดเพิ่มเติม ไปฟังกันใน EP นี้ครับ

      9 min

    About SE CORNER

    From the publisher's feed

    SE Corner "มุมซอฟต์ๆ ของวิศวกรรมซอฟต์แวร์" โดย ชัยยงค์​ รักขิตเวชสกุล