
Sign up to save your podcasts
Or


อ่านๆ Software Engineering at Google บทที่ 10 แล้วไปเจอเรื่องแทรก เลยเปลี่ยนเรื่องเล่าใน EP นี้เลย :-) เป็น case study ของการเปลี่ยนจาก Google Wiki มาใช้ระบบ g3doc ที่ผสานเข้ากับ workflow การทำงานของ developer ที่ Google ได้อย่างดี ทำให้การทำ documentation กลายเป็นเรื่องง่าย และได้รับการยอมรับเป็นอย่างดีจาก developer เลยไปนั่งอ่านและดู talk ของคุณ
SE at Google บทที่ 10 เรื่อง documentation เลยขอเลื่อนไปพูด EP ถัดไปแทนนะครับ ;-)
EP นี้พูดคุยเนื้อหาจากหนังสือ Software Engineering at Google ในบทที่ 9 เรื่อง Code Review มีเรื่องที่น่าสนใจหลายเรื่องเช่น
รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
เราน่าจะรู้จักหนี้ทางเทคโนโลยี 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 นี้ครับ
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 นี้ครับ
EP นี้ชวนคุยเรื่อง developer experience หรือ DX ครับ คุณ Jean Yang เจ้าของบริษัท Akita ให้ความเห็นว่าต่อไปในอนาคต DX จะมีส่วนสำคัญอย่างมาก เพราะจำนวน developers ในโลกนี้เพิ่มขึ้นเรื่อยๆ (ตอนนี้มีจำนวนมากกว่าคนออสเตรเลียทั้งประเทศ!) เราจะสร้าง developer tools ที่ดีอย่างไร? เพื่อให้นักพัฒนามี DX ที่ดี และมีความสุขระหว่างการทำงาน
เธอบอกว่านักพัฒนาซอฟต์แวร์จะต้องเจอกับซอฟต์แวร์ที่ซับซ้อนขึ้นเรื่อยๆ และเครื่องมือที่จะช่วยได้ดีที่สุด คือ เครื่องมือที่ทำให้พวกเขาเข้าใจความซับซ้อนของซอฟต์แวร์ได้มากขึ้น เครื่องมือเหล่านี้จะต้องเข้ากับ workflow และเครื่องมืออื่นๆ ที่ใช้ได้เป็นอย่างดี รวมถึงช่วยในการ package software และจัดลำดับความสำคัญของผลลัพธ์ที่อยากจะดูได้
รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
EP นี้ไปอ่านบทที่ 8 ของหนังสือ Software Engineering at Google กันต่อ มาดูกันว่า Google สร้าง Style Guide ขึ้นมาจากหลักการทั้ง 5 ที่กล่าวไปก่อนหน้าได้อย่างไร? กฎทั้งหลายใน Style Guide สามารถเปลี่ยนได้หรือไม่และมีวิธีการอย่างไร? การนำกฎไปใช้ นำไปใช้ตอนไหนและใช้อย่างไร?
เนื้อหาทั้งหมดนี้ ไปฟังกันใน EP นี้ครับ
EP นี้กลับมาอ่านหนังสือ Software Engineering at Google ต่อ ในบทที่ 8 "Style Guides and Rules" ที่พูดถึงเรื่องการกำหนดแนวทางการเขียนโค้ดในบริษัทกูเกิ้ล EP จะเป็นตอนที่ 1 ที่พูดถึงหลักการสำคัญ 5 ประการในการกำหนด coding styles and guides ซึ่งได้แก่
รายละเอียดจะเป็นอย่างไร ไปฟังกันใน EP นี้ครับ
EP นี้หยิบบทความเรื่อง "To Microservices and Back Again - Why Segment Went Back to a Monolith" ซึ่งเล่าตัวอย่าง case study ของบริษัท Segment ที่เคยพยายามจะแก้ปัญหา Environment Isolation ของซอฟต์แวร์ตนเองด้วยไมโครเซอร์วิส แต่สุดท้ายกลับพบว่าเจอปัญหาที่บริหารจัดการได้ยากกว่าเก่า และสุดท้ายเลือกที่จะกลับมาใช้สถาปัตยกรรมแบบ Monolith อีกครั้งหนึ่ง
ปัญหาเริ่มต้นคืออะไร ทำไมย้ายไปไมโครเซอร์วิสแล้วไม่เวิร์ค ไปฟังกันใน EP นี้ครับ
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
From the publisher's feed