Look for any podcast host, guest or anyone
Showing episodes and shows of

Chaiyong Ragkhitwetsagul

Shows

SE CORNER2023-06-2512 minSE CORNER2023-06-1910 minSE CORNER2023-06-1107 minSE CORNER
SE CORNEREP97 - เล่างานวิจัย: การทดสอบ Microservice ที่ใช้ BFF patternEP นี้หยิบงานวิจัยของ นศ. ที่สร้างเครื่องมือในการทดสอบระบบ Microservice แบบที่ใช้ Backends for Frontends (BFF) pattern ชื่อ Microusity มาเล่าให้ฟังกันครับ งานวิจัยนี้ได้รับการตีพิมพ์ที่งานประชุมวิชาการ the 31st IEEE/ACM International Conference on Program Comprehension (ICPC '23) ในหมวด Tool Demonstration ครับ โดยวิธีการที่เราใช้ในการทดสอบ BFF microservice นั้น เราใช้เครื่อง RESTful API fuzzing tool ชื่อ RESTler จาก Microsoft ร่วมกับ network monitoring tool ชื่อ Zeek และเราสร้าง algorithm เพื่อทำการติดตาม request ที่เข้าไปยัง BFF ว่าถูกส่งไปที่ microservice ไหนบ้าง ด้านหลัง BFF ครับ นอกจากนี้ยังมี graph visualization ที่ช่วยให้เข้าใจการเดินทางของ request ได้ง่ายขึ้นด้วย เครื่องมือนี้ช่วยให้นักพัฒนา BFF microservice สามารถแก้ไขปัญหา HTTP 500 ที่เกิดขึ้นได้ง่ายมากขึ้น สามารถเข้าไปลองเล่นกันได้ที่ https://microusity.dev/ ครับ รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ หากสนใจงานวิจัย สามารถอ่านเปเปอร์ได้ที่นี่ครับ: https://arxiv.org/abs/2302.11150
2023-06-0407 minSE CORNER2023-05-2812 minSE CORNER2023-05-2107 minSE CORNER2023-05-1409 minSE CORNER2023-05-0710 minSE CORNER2023-04-3010 minSE CORNER2023-04-2309 minSE CORNER2023-04-1608 minSE CORNER2023-04-0915 minSE CORNER2023-04-0210 minSE CORNER2023-03-2612 minSE CORNER2023-03-1911 minSE CORNER2023-03-1209 minSE CORNER2023-03-0509 minSE CORNER2023-02-2611 minSE CORNER2023-02-1909 minSE CORNER2023-02-1213 minSE CORNER2023-02-0511 minSE CORNER
SE CORNEREP79 - เล่างานวิจัย: เอา VR มาใช้กับ SEEP นี้หยิบงานวิจัยของตัวเองมาเล่าให้ฟังกันครับ เป็นงานวิจัยที่ทำร่วมกับ อ. มรกต เชิดเกียรติกุล อ. อภิรักษ์ หุ่นหล่อ และ อ. โมเรศ ปรัชญพฤทธิ์ ครับ ในงานวิจัยนี้เราศึกษาว่าการนำ Virtual Reality (VR) มาใช้ในการเรียนการสอน Software Engineering โดยเฉพาะการนำเสนอผลงาน มีผลต่อการเรียนการสอนอย่างไร ผมคิดว่าผลที่ได้อาจจะนำไปประยุกต์ใช้กับการทำงานของทีมพัฒนาซอฟต์แวร์ในการทำงานแบบ WFH หรือ work from anywhere ได้เช่นกันครับ งานศึกษาวิจัยนี้เกิดขึ้นในช่วงโควิด-19 ที่ต้องมีการเรียนการสอนแบบออนไลน์ ทำให้การปฏิสัมพันธ์ระหว่าง อาจารย์-นักศึกษา และ นักศึกษาด้วยกันเอง ลดลงอย่างมาก เราพบว่าการนำ VR มาใช้ ทำให้นักศึกษารู้สึกว่ามีปฏิสัมพันธ์กับเพื่อนและอาจารย์ง่ายขึ้น รู้สึกถึงการมีตัวตนอยู่ร่วมกัน และทำให้การเรียนเป็นไปอย่างสนุกสนานมากขึ้นครับ   รายละเอียดไปฟังกันใน EP นี้ครับ 
2023-01-3008 minSE CORNER2023-01-2211 minSE CORNER2023-01-1508 minSE CORNER2023-01-0809 minSE CORNER2023-01-0113 minSE CORNER2022-12-2514 minSE CORNER2022-12-1811 minSE CORNER2022-12-1110 minSE CORNER2022-12-0409 minSE CORNER2022-11-2708 minSE CORNER2022-11-2012 minSE CORNER2022-11-1309 minSE CORNER2022-11-0610 minSE CORNER
SE CORNEREP66 - แนวทางการเรียนการสอนด้าน Software Engineering ในปัจจุบันในปัจจุบันการเรียนการสอนด้าน SE เป็นอย่างไร? ใช้วิธีการใดในการสอนบ้างเพื่อให้นักศึกษาที่จบออกไปมีความรู้ความสามารถที่ตรงกับความต้องการของตลาดจริงๆ EP นี้พาไปดูกันครับ  ผมนำงานวิจัยจาก University of Zagreb ที่ไปศึกษางานวิจัยด้านการศึกษาที่เกี่ยวกับ software development จำนวน 120 งานวิจัย และสรุปผลออกมาในสองด้าน คือ (1) วิธีการสอน (teaching methods and approaches) และ (2) ลักษณะของการสอนและวิธีการสอน (characteristics of teaching methods and approaches)  โดยผลพบว่าการเรียนการสอนที่ได้รับความนิยมมากที่สุดจะเป็นแบบ project-based learning และลักษณะการสอนที่ได้รับความนิยมสูงสุดจะเป็นการทำงานเป็นทีม (teamwork)  รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-10-3008 minSE CORNER2022-10-2310 minSE CORNER
SE CORNEREP63 - Test Doubles คืออะไรและควรใช้อย่างไร? (ตอนที่ 2) - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้มาคุยกันต่อเรื่อง Test Doubles จากบทที่ 13 ในหนังสือ Software Engineering at Google ครับ โดยจะลงรายละเอียดไปที่การใช้ test doubles สองแบบคือ 1. Fake - ตัวแทน implementation จริง ที่ทำงานเหมือนตัวจริง แต่ใช้วิธีการต่างกันบางอย่าง เพื่อให้เหมาะกับการเทสต์ เช่น การเขียน/อ่านข้อมูลจาก memory แทนที่จะเป็น disk  2. Stub - การใช้ mock object พร้อมกับการกำหนด return value หรือคำตอบจากการเรียก mock method ซึ่งทำให้ทดสอบ method ที่เราต้องการได้ โดยไม่ต้องมี object อื่นๆ ที่เกี่ยวข้องอยู่จริง และวิธีการทดสอบสองแบบคือ state testing vs. interaction testing ซึ่ง Google แนะนำว่าควรทำ state testing (เช็คไปที่ state ของ object ที่ถูกเทสต์ หรือ ผลลัพธ์ที่ได้ออกมา) มากกว่า interaction testing (เช็ควิธีการทำงาน เช่น method ที่ทดสอบถูกเรียกหรือไม่ กี่ครั้ง) รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-10-1610 minSE CORNER
SE CORNEREP63 - Test Doubles คืออะไรและควรใช้อย่างไร? - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้เล่าเรื่องจาก Chapter 13 ในหนังสือ Software Engineering at Google เรื่อง Test Doubles หรือ การใช้ตัวแทนของ implementation หรือ API บางส่วนที่จำเป็นในการเทสต์ เพื่อทำให้การทดสอบนั้นเป็นไปได้อย่างรวดเร็วและสะดวกมากขึ้น ส่ิงที่น่าสนใจคือ Google เชื่อว่า เราไม่ควรใช้ test doubles เยอะๆ เพราะมักจะนำไปสู่ปัญหาในการดูแลรักษาภายหลัง รวมถึงเทสต์ที่ใช้ test doubles ก็ไม่ค่อยมีประโยชน์ในการหาบั๊กสักเท่าไหร่ด้วย คำแนะนำจาก Google คือ เราควรเลือกใช้ implementation จริงเป็นหลักก่อน แล้วค่อยพิจารณาปัจจัยดังต่อไปนี้เมื่อจำเป็นจะต้องตัดสินใจว่าจะใช้ test doubles หรือไม่ Execution time: เวลาในการทำงานของ implementation หรือ API บางตัว หากว่านานเกินไปจะทำให้ test suite ช้าลงได้มาก จึงอาจจะต้องเปลี่ยนเป็น test doubles Determinism: implementation หรือ API บางตัว มีความไม่แน่นอนในการทำงาน หรือ ความไม่แน่นอนที่มาจาก network connection จึงอาจจะต้องพิจารณาเปลี่ยนโค้ดส่วนนั้นเป็น test doubles เช่นกัน Dependency construction: implementation หรือ API บางตัว มี dependency เยอะ ทำให้เสียเวลาในการเซ็ตอัพ จึงอาจจะสะดวกกว่าที่จะเปลี่ยนเป็น test doubles รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-10-0911 minSE CORNER
SE CORNEREP62 - "The Rise of SQL" การกลับมาของภาษา SQLEP นี้เป็นตอนต่อเนื่องมาจาก EP ที่แล้วที่เราคุยกันเรื่อง Top Programming Languages 2022 ที่จัดอันดับโดย IEEE Spectrum ครับ ผลการจัดอันดับในปีนี้มีจุดน่าสนใจอันหนึ่งคือ ภาษา SQL อยู่อันดับ 1 หากทำการจัดอันดับเรื่องการหางาน ใน EP นี้เลยมาเจาะลึกกันดูว่า เพราะเหตุผลใด SQL จึงกลับมาเป็นภาษาที่ได้รับความนิยมมากอีกครั้งหนึ่ง ผมเจอบทความที่อธิบายเรื่องนี้ใน IEEE Spectrum เขียนโดยคุณ Rian Diane Caballar ครับ เธอให้เหตุผลไว้ 3 ข้อหลักๆ ดังนี้ 1. Ralational database ได้เข้าไปอยู่ในทุกๆ แพลตฟอร์ม โดยเฉพาะ mobile application ที่มีการเติบโตอย่างสูงมาก 2. การทำการวิเคราะห์ข้อมูล หรือการสร้าง machine learning application จำเป็นจะต้องใช้ข้อมูลจำนวนมาก ซึ่งมักจะเก็บอยู่ใน relational database 3. เครื่องมือที่รองรับการทำงานของ SQL มีจำนวนมาก และมีการปรับปรุงมาอย่างยาวนาน แม้ว่า SQL อาจจะไม่ได้เป็นภาษาที่โดดเด่นมาก แต่เหมือนจะเป็นภาษาที่ขาดไม่ได้ในปัจจุบันครับ รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-10-0207 minSE CORNER2022-09-2506 minSE CORNER
SE CORNEREP60 - หลักการ Unit Testing แบบ Google ตอนที่ 2 - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้มาคุยต่อเนื่องเรื่องการเขียน unit testing แบบ Google ครับ โดยจะเน้นไปที่หลักการเขียนเทสต์ให้มีความชัดเจน (Clarity) โดยเทสต์ที่มีความชัดเจนจะมีประโยชน์ทั้งในแง่การ maintenance และในแง่การตรวจหาบั๊กที่เจอด้วยเทสต์นั้นๆ ด้วย  หลักการที่หนังสือ Software Engineering at Google แนะนำ เพื่อให้เทสต์มีความชัดเจนที่สุด มีดังต่อไปนี้ 1. Make Your Tests Complete and Concise ยึดหลักสองอย่างคือ เทสต์ต้องมีข้อมูลสมบูรณ์ในตัวเอง (complete) และไม่มีข้อมูลอื่นที่ไม่จำเป็น (concise) 2. Test Behaviors, Not Methods เปลี่ยนแนวคิดว่าเราทดสอบไปที่การทำงานของโค้ด (behaviours) ที่ต้องการ ไม่ใช่สร้างเทสต์ตามจำนวน method ที่มี 3. Don't Put Logic in Tests หลีกเลี่ยงการใส่ logic ทั้งหลาย (if-else, loop, หรือแม้แต่การต่อสตริง) เพราะทำให้เทสต์มีความซับซ้อน เข้าใจได้ยาก และเสี่ยงต่อการมีบั๊ก (ในเทสต์)  4. Write Clear Failure Messages เขียน failure message ให้ชัดเจน มีเนื้อหาครบถ้วนเพียงพอที่จะไปดีบั๊กต่อได้ง่ายๆ 5. DAMP, Not DRY มีโค้ดซ้ำบางส่วนได้บ้างในเทสต์ หากมันช่วยให้เทสต์ตรงไปตรงมา และเข้าใจได้ง่ายขึ้น 6. Shared Values, Shared Setup การมีตัวแปรที่ใช้ร่วมกัน หรือ setup methods ควรทำให้ชื่ออ่านเข้าใจง่าย และมีวิธีที่จะ override ค่าตั้งต้นใน setup method ได้ รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-09-1814 minSE CORNER2022-09-1113 minSE CORNER
SE CORNEREP58 - Software Apocalypse วันซอฟต์แวร์กลืนโลกEP นี้ ชวนคุยเรื่องน่าสนใจที่ไปอ่านเจอใน Article จาก The Atlantic ครับ เรื่อง "The Coming Software Apocalypse" (https://www.theatlantic.com/technology/archive/2017/09/saving-the-world-from-code/540393/) อ่านแล้วคิดว่าน่าสนใจมากๆ เลย บทความชี้ให้เห็นว่าโลกเรา ณ​ ปัจจุบันกำลังถูกกลืนกินด้วยซอฟต์แวร์ และถ้าเรายังปล่อยให้ซอฟต์แวร์มีปัญหา (บั๊ก) เยอะแยะแบบนี้ต่อไปเรื่อยๆ วันนึงซอฟต์แวร์จะทำให้เราถึงวันสิ้นโลก บทความนี้ยกตัวอย่างเคสปัญหาจากซอฟต์แวร์ที่ทำให้เกิดโศกนาฎกรรมหรือความเสียหายอย่างรุนแรงหลายๆ เคส ที่น่าสนใจครับ นอกจากนี้บทความยังชี้ให้เห็นว่าการเขียนโค้ดแบบที่เราทำอยู่ปัจจุบันอาจจะไม่ใช่วิธีที่ดีที่สุดในการพัฒนาซอฟต์แวร์อีกต่อไป นักพัฒนาซอฟต์แวร์น่าจะต้องผันตัวมาเป็น "นักออกแบบ"​ ซอฟต์แวร์มากกว่า รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-09-0414 minSE CORNER2022-08-2810 minSE CORNER2022-08-2110 minSE CORNER
SE CORNEREP55 - Testability เขียนโค้ดให้เทสท์ง่าย ต้องทำยังไง?EP นี้ชวนมาคุยเรื่องหลักการ testability ของซอฟต์แวร์ที่ผมคิดว่าเป็นหลักการพื้นฐานที่สามารถนำไปใช้ได้ทุกๆ แพลตฟอร์มและทุกๆ ภาษาครับ ซอฟต์แวร์ใดๆ จะทดสอบยากหรือง่าย เราเรียกว่า "testability" ถ้าค่านี้สูงก็คือทดสอบง่าย แต่ถ้าต่ำก็คือทดสอบยาก ซึ่งเจ้า testability นี้ไม่ต้องหาอะไรมาวัดก็ได้นะครับ ให้คิดถึงสองปัจจัยหลักๆ คือ  1. controllability - สามารถกำหนดหรือควบคุม behavior ของซอฟต์แวร์ที่จะทดสอบได้ง่ายแค่ไหน ผ่าน input ที่เราจะให้เข้าไป 2. observability - สามารถดูหรือวัดค่าผลลัพธ์จากการทดสอบซอฟต์แวร์ได้ง่ายแค่ไหน ผ่าน output ที่ออกมา ถ้าเข้าใจหลักการนี้แล้ว สามารถนำไปประยุกต์ใช้ให้การเขียนโค้ดของเราสามารถทดสอบได้ง่ายขึ้น ได้ทุกๆ ภาษา ทุกๆ เทคโนโลยีเลยครับ รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-08-1409 minSE CORNER
SE CORNEREP54 - Testing นั้น สำคัญไฉน? (ต้องถามอีกเรอะ!) ตอนที่ 2 - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้มาต่อกันที่ 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 นี้ครับ
2022-08-0712 minSE CORNER2022-07-3115 minSE CORNER2022-07-2418 minSE CORNER
SE CORNEREP51 - อ้าว เฮ้ย! รวมความเข้าใจผิดในกระบวนการพัฒนาซอฟต์แวร์ที่ใช้ Machine LearningMachine 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 นี้ครับ
2022-07-1712 minSE CORNER2022-07-1013 minSE CORNER2022-07-0316 minSE CORNER2022-06-2712 minSE CORNER
SE CORNEREP47 - ก๊อปปี้โค้ดจาก Stack Overflow อย่าลืม CC BY-SA 4.0 licenseEP ชวนคุยเรื่อง 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 นี้ครับ
2022-06-1908 minSE CORNER2022-06-1208 minSE CORNER2022-06-0516 minSE CORNER
SE CORNEREP44 - ลด Tech Debt ด้วยการสร้าง Tech Wealthเราน่าจะรู้จักหนี้ทางเทคโนโลยี technical debt (tech debt) กันอยู่บ้างแล้ว มีตัวอย่างมากมายที่แสดงให้เห็นว่า tech debt ก่อให้เกิดปัญหาในภายหลังได้ร้ายแรงขนาดไหน ซอฟต์แวร์ทีมส่วนใหญ่กลัวว่าจะเผลอสร้าง tech debt กัน แต่สุดท้ายก็หนีมันไม่พ้น EP นี้พาไปดูบทความเรื่อง "Reframing tech debt" ของคุณ Leemay Nassery ที่เป็น engineering manager ของ Dropbox ที่บอกว่า เราควรจะปรับความคิดเสียใหม่ ให้เน้นไปที่การสร้างความมั่งคั่งทางเทคโนโลยีหรือ "Tech Wealth" แทนที่จะคอยมาลดหนี้ทางเทคโนโลยี (Tech Debt) โดยคอยใส่แพลนในการเพิ่ม tech wealth เข้าไปในทุกๆ sprint หรือทุกๆ quarter และ เมื่อระบบเราร่ำรวยไปด้วยความพร้อมของ infrastructure, scalability, stability, ทีมพัฒนามีความสุข จำนวน unit test ที่เพิ่มขึ้น ส่ิงเหล่านี้จะส่งผลให้ tech debt ลดลงไปเอง รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-05-2907 minSE CORNER2022-05-2211 minSE CORNER
SE CORNEREP42 - โค้ดจาก GitHub Copilot ดีแค่ไหน?EP นี้หยิบงานวิจัยใหม่เอี่ยมจาก Mining Software Repositories (MSR '22) ชื่อ "An Empirical Evaluation of GitHub Copilot’s Code Suggestions" โดย Nhan Nguyen and Sarah Nadi จาก University of Alberta มาเล่าให้ฟังกันครับ ทีมวิจัยนี้ศึกษาความถูกต้องและความเข้าใจง่าย (understandability) ของโค้ดที่แนะนำมาจาก GitHub Copilot โดยได้ใช้ตัวอย่างคำถาม 33 คำถามจาก LeetCode ซึ่งเป็น website สำหรับฝึกฝนการเขียนโปรแกรม และให้ Copilot สร้างคำตอบใน 4 ภาษา ได้แก่ภาษา Python, ภาษา Java, ภาษา Javascript และภาษา C ทีมวิจัยพบว่าในแง่ของความถูกต้อง คำตอบของ Copilot ในภาษา Java นั้นถูกต้องมากที่สุด (ผ่าน test cases ทั้งหมดใน LeetCode 100%) จำนวน 57% ของคำตอบทั้งหมด ตามมาด้วย Python (42%), C (39%) แต่ Javascript ทำได้ไม่ดีนักที่ 27% ในแง่ของความเข้าใจง่าย ทีมวิจัยใช้ค่า cognitive complexity กับ cyclomatic complexity ของโค้ดที่ Copilot แนะนำให้เป็นคำตอบ ผลพบว่าโค้ดจาก Copilot ส่วนใหญ่มีค่า complexity ต่ำ หรือเข้าใจได้ง่ายนั่นเอง รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-05-1511 minSE CORNER
SE CORNEREP41 - เพิ่ม Developer Experience (DX) ได้ ถ้าเข้าใจตรงจุดEP นี้ชวนคุยเรื่อง developer experience หรือ DX ครับ คุณ Jean Yang เจ้าของบริษัท Akita ให้ความเห็นว่าต่อไปในอนาคต DX จะมีส่วนสำคัญอย่างมาก เพราะจำนวน developers ในโลกนี้เพิ่มขึ้นเรื่อยๆ (ตอนนี้มีจำนวนมากกว่าคนออสเตรเลียทั้งประเทศ!) เราจะสร้าง developer tools ที่ดีอย่างไร? เพื่อให้นักพัฒนามี DX ที่ดี และมีความสุขระหว่างการทำงาน เธอบอกว่านักพัฒนาซอฟต์แวร์จะต้องเจอกับซอฟต์แวร์ที่ซับซ้อนขึ้นเรื่อยๆ และเครื่องมือที่จะช่วยได้ดีที่สุด คือ เครื่องมือที่ทำให้พวกเขาเข้าใจความซับซ้อนของซอฟต์แวร์ได้มากขึ้น เครื่องมือเหล่านี้จะต้องเข้ากับ workflow และเครื่องมืออื่นๆ ที่ใช้ได้เป็นอย่างดี รวมถึงช่วยในการ package software และจัดลำดับความสำคัญของผลลัพธ์ที่อยากจะดูได้ รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-05-0811 minSE CORNER2022-05-0115 minSE CORNER
SE CORNEREP39 - Coding Style สำคัญอย่างไร? - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้กลับมาอ่านหนังสือ Software Engineering at Google ต่อ ในบทที่ 8 "Style Guides and Rules" ที่พูดถึงเรื่องการกำหนดแนวทางการเขียนโค้ดในบริษัทกูเกิ้ล EP จะเป็นตอนที่ 1 ที่พูดถึงหลักการสำคัญ 5 ประการในการกำหนด coding styles and guides ซึ่งได้แก่ Pull their weight - styles guide ควรมีแค่สิ่งที่สำคัญและจำเป็นจริงๆ Optimize for the reader - style guide ควรคำนึงถึงผู้อ่านมากกว่าผู้เขียนโค้ด Be consistent - style guide ควรทำให้โค้ดมีความสม่ำเสมอ ตรงกัน  Avoid error-prone and surprising constructs - style guide ควรทำให้นักพัฒนาหลีกเลี่ยงการใช้ code ที่ทำให้เกิดปัญหาหรือความเข้าใจผิดได้ง่าย Concede to practicalities when necessary - หากจำเป็นจริงๆ ก็สามารถแหกกฎบางส่วนได้ เช่น เพื่อ performance หรือเพื่อการรองรับแพลตฟอร์มที่หลากหลาย รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ Google coding style guide: https://google.github.io/styleguide/
2022-04-2416 minSE CORNER2022-04-1708 minSE CORNER
SE CORNEREP37 - Code Review เมื่อส่ิงที่หวัง กับ สิ่งที่ได้ อาจจะไม่ตรงกันEP นี้หยิบงานวิจัยที่เก่าหน่อยแต่ยังมีประโยชน์อยู่มาเล่าให้ฟังกันครับ เป็นงานวิจัยของ Alberto Bacchelli และ Christian Bird ที่ Microsoft ชื่อว่า "Expectations, Outcomes, and Challenges Of Modern Code Review" ซึ่งเป็นงานวิจัยที่ศึกษาจากนักพัฒนาของไมโครซอฟต์และพยายามเข้าใจ 3 อย่าง คือ (1) ความคาดหวังจากการทำ code review, (2) ผลที่ได้จากการทำ code review และ (3) ปัญหาหรือความท้าทายในกระบวนการ code review ส่วนใหญ่ทุกคนน่าจะคิดว่าการทำ code review มีเป้าหมายหลักอยู่ที่การหาบั๊กในโค้ดที่เขียนขึ้นใหม่หรือโค้ดที่ถูกแก้ไข นักพัฒนาที่ไมโครซอฟต์ก็คิดแบบนั้น แต่ผลลัพธ์ที่ได้จริงกลับพบว่าการหาบั๊กไม่ใช่ผลลัพธ์อันดับแรกๆ แต่กลับเป็น code improvement หรือการปรับปรุงการเขียนโค้ด  ทำไมสิ่งที่หวังกับสิ่งที่ได้จึงไม่ตรงกัน? ไปหาคำตอบใน EP นี้ครับ อ่านงานวิจัยฉบับเต็ม: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/ICSE202013-codereview.pdf
2022-04-1012 minSE CORNER
SE CORNEREP36 - "I test in production" เมื่อการทดสอบใน production เป็นส่ิงที่ควรและต้องทำท่านผู้ฟังอาจจะเคยเห็นมีมอันนี้ "I don’t always test my code, but when I do, I test in production." - the Most Interesting Man in the World ซึ่งก็เป็นมีมขำๆ ที่ให้ชวนหัวเราะว่า การปล่อยให้ซอฟต์แวร์ไปถูกทดสอบบน production นี่มันช่างกล้า เหมือนฆ่าตัวตายชัดๆ Charity Majors (CTO ของบริษัท honeycomb.io) เธอบอกว่าการทดสอบไม่ได้จำกัดหรือไม่ควรถูกจำกัดอยู่แค่ระหว่างการพัฒนาหรือ staging enviroment เท่านั้น แต่ควรจะต้องรวมถึง production ด้วย เนื่องจากการ deploy หรือการใช้งานจริงจากผู้ใช้ เราจะเจอกับตัวแปรที่ควบคุมไม่ได้ (หรือไม่ได้อยู่ในการควบคุม) ระหว่างที่เราทดสอบซอฟต์แวร์อีกเยอะมากๆ คำแนะนำคือเราต้องยอมรับและเตรียมพร้อมรับมือกับมันต่างหาก รายละเอียดจะเป็นอย่างไร ไปติดตามกันใน EP นี้ครับ
2022-04-0410 minSE CORNER
SE CORNEREP35 - Measuring Engineering Productivity เราจะนำการวัดมาใช้ประโยชน์ในกระบวนการพัฒนาซอฟต์แวร์อย่างไร? - คำแนะนำจากหนังสือ Software Engineering at GoogleEpisode นี้พาท่านผู้ฟังกลับไปอ่านหนังสือ Software Engineering at Google กันต่อ ใน Chapter 7 จะเป็นเรื่อง Measuring Engineering Productivity ที่อธิบายว่า Google นำการวัดมาใช้ประโยชน์ในกระบวนการพัฒนาซอฟต์แวร์ อย่างไร ที่ Google จะมีทีมวิจัยเฉพาะที่ตั้งขึ้นมาเพื่อทำการวัดผลในหลากหลายกระบวนการ โดยทีมวิจัยนี้จะประกอบไปด้วยนักวิจัยด้านวิศวกรรมซอฟต์แวร์และด้านอื่นๆ ที่เกี่ยวข้อง เช่น จิตวิทยา (เพื่อเข้าใจความรู้สึกของนักพัฒนา) หรือนักเศรษฐศาสตร์ เป็นต้น และทีมนี้จะช่วยเหลือองค์กรเมื่อต้องการผลไปใช้ทำการตัดสินใจ เช่น องค์กรควรทำกระบวนการนี้ต่อไปหรือไม่? สิ่งเหล่านี้มีประโยชน์ต่อนักพัฒนาหรือไม่?  วิธีการ measurement ใน Google เป็นอย่างไร และมีประโยชน์อย่างไร ไปฟังกันใน EP นี้ครับ
2022-03-2714 minSE CORNER
SE CORNEREP34 - Building for the 99% Developers เมื่อ dev tools ที่ชอบ อาจจะไม่ใช่ tools ที่ใช่?EP ที่ 34 นี้เอาบทความจากเว็บไซต์ a16z.com ของคุณ Jean Yang มาเล่าให้ฟังครับ ผู้เขียนบอกว่า developer tools/platforms/environments ทั้งหลายที่มีอยู่ในปัจจุบันนั้นเกือบทั้งหมดจะถูกสร้างขึ้นและนำมาใช้ในบริษัทใหญ่ๆ เช่น Facebook-Apple-Amazon-Neflix-Google ไม่ว่าจะเป็น microservices, GraphQL, DevOps นั้น อาจจะไม่ได้จำเป็นต้องนำมาใช้และยิ่งกว่านั้นคือ อาจจะไม่เหมาะกับบริษัทของเราด้วย เราต้องเลือกดูว่าบริษัทและทีมของเรามีรูปแบบการทำงานอย่างไร ขนาดของทีม Support ที่มี มีมากน้อยขนาดไหน รวมถึงลูกค้าและข้อจำกัดอื่นๆ ดังนั้นเพื่อ developer ของเรามีความสุขกับการทำงาน (เดี๋ยวนี้เรียกว่า developer experience) เราไม่ควรจะต้องไล่ตาม technology ใหม่ล่าสุดเสมอไป เราต้องคิดถึงคนส่วนใหญ่ของเรา นั่นก็คือ 99% Developers นั่นเอง เนื้อหาจะเป็นอย่างไร ไปฟังกันใน Episode นี้ครับ ที่มา https://future.a16z.com/software-development-building-for-99-developers/
2022-03-2013 minSE CORNER
SE CORNEREP33 - เล่างานวิจัยให้ฟัง "ความท้าทายด้าน Software Engineering ของซอฟต์แวร์ SME ในประเทศไทย"EP นี้ขอหยิบงานวิจัยล่าสุดมาเล่าให้ฟังกันครับ ผมและทีมอาจารย์จากคณะ ICT มหิดล ร่วมกับนักวิจัยจาก University College London ร่วมกันกับบริษัทซอฟต์แวร์ในประเทศไทย 4 บริษัท เพื่อศึกษาถึงปัญหาและความท้าทายในการพัฒนาซอฟต์แวร์ของบริษัทซอฟต์แวร์ขนาดเล็กไปถึงกลาง หรือที่เรียกว่า SME ในประเทศไทย ว่ามีอะไรบ้าง เพื่อที่เราจะให้หาวิธีการแก้ไขปัญหาและความท้าทายเหล่านั้นด้วยกัน ผ่านการใช้งานวิศวกรรมซอฟต์แวร์อัตโนมัติ หรือ Automated Software Engineering ซึ่งได้แก่ การนำเครื่องมือแบบอัตโนมัติเข้ามาใช้งานเพื่อให้นักพัฒนาไปโฟกัสกับงานส่วนอื่นที่จำเป็นต้องใช้ความสามารถและความคิดสร้างสรรค์ของคน ตัวอย่างความท้าทายที่เราพบ ได้แก่ software testing, software measurements, requirements และ effort estimation รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
2022-03-1312 minSE CORNER
SE CORNEREP32 - Coding for Humans and Computers สาขาวิจัยใหม่ที่จะช่วยปรับปรุงโค้ดให้เข้าใจง่ายขึ้นแบบอัตโนมัติEP นี้จะพาไปดูสาขางานวิจัยใหม่ที่บอกว่า "โค้ดที่เราเขียนขึ้นไม่ใช่แค่ให้คอมพิวเตอร์เข้าใจนะ แต่เรายังต้องการให้คนก็เข้าใจง่ายด้วย" ซึ่งทีมวิจัยจาก University of California Davis กำลังศึกษาอยู่ว่า เราสามารถที่จะใช้ machine learning เพื่อปรับปรุงโค้ดที่เราเขียนขึ้นมาแล้ว ให้อ่านง่ายขึ้น review ง่ายขึ้น และดูแลรักษาง่ายขึ้น ได้หรือไม่ นอกจากนี้เรายังสามารถใช้วิธีการคล้ายๆ กัน เพื่อช่วยแก้ปัญหาในการเขียนโปรแกรมที่คนเริ่มโค้ดใหม่ๆ มักจะมีปัญหาได้เช่นกัน แนวคิดนี้จะเป็นอย่างไร ลองไปฟังกันใน EP นี้ครับ
2022-03-0606 minSE CORNER2022-02-2709 minSE CORNER
SE CORNEREP30 - AlphaCode: เมื่อ AI เริ่มเขียนโค้ดได้เกือบเท่าคน แล้วคนไปทำอะไรดี?EP นี้เอางานวิจัยล่าสุดของ DeepMind ชื่อ "Competitive programming with AlphaCode" มาเล่าสู่กันฟังครับ งานนี้เป็นการพัฒนาระบบปัญญาประดิษฐ์ชื่อ AlphaCode ที่สามารถอ่านโจทย์ปัญหาภาษามนุษย์ (ภาษาอังกฤษ) แล้วสร้างโปรแกรมที่สามารถแก้ปัญหาดังกล่าวออกมาได้ โดยผลการทดสอบจากโจทย์จริงบนระบบของ Codeforces พบว่าเจ้า AlphaCode สามารถทำคะแนนได้ในระบบ Top 54% เทียบกับคนที่เข้าร่วมการแข่งขันทั้งหมด ทำให้น่าคิดว่า เหมือนว่างาน programming ก็จะสามารถให้คอมพิวเตอร์และซอฟต์แวร์ทำแทนเราได้แล้วในอนาคตอันใกล้ แล้วถ้าอย่างนั้นในอนาคต คนเราไปทำอะไรดี? ลองไปค้นหากันดูใน EP นี้ครับ
2022-02-2013 minSE CORNER2022-02-1316 minSE CORNER
SE CORNEREP28 - 6 Antipatterns ที่ Engineering Manager ควรหลีกเลี่ยง - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้กลับมาอ่านหนังสือ Software Engineering at Google ต่อครับ Chapter 5 เรื่อง How to Lead a Team เป็นเรื่องเกี่ยวกับการบริหารจัดการ software team ของ engineering manager และ teach lead โดยหนังสือได้ยกตัวอย่างทั้งวิธีการที่ควรหลีกเลี่ยงและวิธีการที่ควรปฏิบัติ ใน EP จะสรุปส่วนของ 6 antipatterns หรือ 6 วิธีการที่ควรหลีกเลี่ยงก่อน ดังนี้ครับ 1. Hire Pushovers - เลือกจ้างเฉพาะลูกน้องที่สั่งได้ง่ายๆ 2. Ignore Low Performers - ไม่สนใจคนที่ทำงานไม่ดี 3. Ignore Human Issues - ไม่สนใจปัญหาความสัมพันธ์ ให้ความสำคัญแค่กับปัญหาเทคนิคเท่านั้น 4. Be Everyone's Friend - อยากรักษาความสัมพันธ์กับเพื่อนร่วมงานไว้ ทำตัวเหมือนเป็นเพื่อนกับลูกน้อง 5. Compromise the Hiring Bar - ไม่มีมาตรฐานที่ชัดเจนในการรับคนเข้าทีม 6. Treat Your Team Like Children - ดูแลลูกน้องเหมือนเด็กๆ ไม่ให้ความเชื่อใจ รายละเอียดจะเป็นยังไง ไปฟังกันใน EP นี้ครับ :)
2022-02-0615 minSE CORNER
SE CORNEREP27 - Deliver Software ให้ดีขึ้น เร็วขึ้น ทำอย่างไร - งานศึกษาจาก DevOps Research and Assessment (DORA) ที่ Google CloudEP นี้นำผลการศึกษาจาก DevOps Research and Assessment (DORA) ที่ Google Cloud มาแชร์ให้ฟังกันครับ เราสามารถแบ่งองค์กร IT ออกเป็นกลุ่มๆ ในด้าน software delivery and operational performance ได้โดยใช้ตัวชี้วัด 4 อย่างคือ Deployment frequency (deploy บ่อยแค่ไหน), Lead time for change (โค้ดที่ commit ขึ้นไป production เร็วแค่ไหน), Time to restore service (เมื่อระบบมีปัญหาแล้ว กู้กลับได้เร็วแค่ไหน), และ Change failure rate (โค้ดที่แก้ทำให้เกิด software failure บ่อยแค่ไหน) และถ้าพบว่าเรายังสามารถหรือควรต้องปรับปรุงในด้านใดด้านหนึ่ง สามารถลองทำตามคำแนะนำต่อไปนี้ครับ ใช้ Cloud นำหลักการ Site Reliability Engineering (SRE) มาใช้ ทำ Document ให้ดี คิดถึง Security ตั้งแต่ตอนพัฒนา ใช้เทคนิค DevOps ต่างๆ เช่น CI/CD, continuous testing อ่านเพิ่มเติม: https://www.devops-research.com/research.html (2021 Accelerate State of DevOps Report)
2022-01-3018 minSE CORNER2022-01-2315 minSE CORNER
SE CORNEREP25 - สร้างเสริม Knowledge Sharing ในองค์กร (ตอนที่ 2) - Code Readability - คำแนะนำจากหนังสือ Software Engineering at GoogleEP นี้คุยกันต่อเรื่องการสร้างเสริม knowledge sharing ในองค์กร โดยเน้นไปที่ตัว code เช่น documentation, code comment, และกระบวนการที่ใช้กันใน Google ที่เรียกว่า "Readability" ซึ่งเป็นกระบวนการปรับปรุงคุณภาพของโค้ด รวมถึงการบังคับใช้ best practices ขององค์กรผ่าน code review  เรื่องนี้น่าสนใจมากเพราะ Google สามารถใช้วิธีนี้เพื่อควบคุมคุณภาพของโค้ดในหลากหลายโปรเจคท์ หลากหลายภาษา ใน repository ที่มีเพียงแค่หนึ่งเดียว (monorepo) ได้ และทำให้โค้ดอ่านได้ง่ายและเข้าใจได้แม้ว่าจะถูก maintain มานานเป็นระยะเวลาหลายปีก็ตาม รายละเอียดเป็นอย่างไร ไปฟังกันใน EP นี้ครับ :)
2022-01-1615 minSE CORNER2022-01-0915 minSE CORNER2022-01-0213 minSE CORNER2021-12-2616 minSE CORNER2021-12-1911 minSE CORNER2021-12-1212 minSE CORNER2021-12-0523 minSE CORNER2021-11-2713 minSE CORNER2021-11-2012 minSE CORNER2021-11-1416 minSE CORNER2021-11-0714 minSE CORNER2021-10-3114 minSE CORNER2021-10-2416 minSE CORNER2021-10-1716 minSE CORNER2021-10-1011 minSE CORNER2021-10-0315 minSE CORNER2021-09-2615 minSE CORNER2021-09-1917 minSE CORNER2021-09-1213 minSE CORNER2021-09-0511 minSE CORNER2021-08-2906 minSE CORNER2021-08-2210 minSE CORNER2021-08-1512 minSE CORNER2021-08-0811 minSE CORNER2021-08-0217 min