มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
การทำ Software เป็นทีมจะต้องมีการ review code แต่เราจะ review กันอย่างไรให้ได้ประโยชน์และประสิทธิภาพสูงสุด ดังนั้นใน EP นี้เรามีบทความที่น่าสนใจมาแชร์ให้ทุกๆ คนได้ฟัง เราจะมาคุยถึง Code Review Pyramid และเจาะลึกในวิธีการ review ในแต่ละ layer พร้อมประสบการณ์จากเราที่เสริมเข้าไปให้ทุกคนได้ฟังกันอีกด้วย
Resources: https://newsletter.techworld-with-milan.com/p/how-to-do-code-reviews-properly
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
ใน EP นี้เรามาคุยกันเรื่อง Microservice ที่ทุกๆ คนน่าจะเคยได้ยินกันมา แต่เราจะลงลึกขึ้นว่า microservice มีความจำเป็นหรือไม่ ทำอย่างไรถึงจะได้ประโยชน์ รวมถึงปัญหาต่างๆ ที่จะได้เจอเมื่อใช้ microservice architecture
ใน EP นี้เรามีคุณพรต พลสวัสดิ์ มาแชร์ประสบการณ์จริงจากคนที่เบื่องาน burnout และอยากจะเลิกเป็น Programmer อะไรคือสิ่งที่ทำให้เค้ายังอยู่ต่อ ยังสนใจการทำงานในสายนี้และมีความสุขไปกับมัน
มาฟังเทคนิค แนวคิดดีๆ รวมถึงฟังเรื่องราวแรงบันดาลใจด้วยกันครับ
มาต่อกันใน EP นี้ เรามารู้จักรูปแบบของ Encryption Key ได้แก่ Data Encryption Key (DEK) และ Key Encryption Key (KEK) และวิธีการใช้งานรวมถึงการจัดการ Key เหล่านี้ให้เหมาะสม
และในกรณีที่เกิด Data breach หากเรา manage key และ key metadata ได้ดีจะช่วยให้เราแก้ไขสถานการณ์ได้เร็วขึ้นได้อย่างไร
การพัฒนา Software ไม่ได้มีแค่การพัฒนา feature ให้สามารถใช้งานได้ แต่ยังจะต้องคำนึงถึงความปลอดภัยของระบบด้วย ใน Episode Cryptography ฉบับคนทำงาน จะมาเล่าถึงหลักการพื้นฐานของ Security (CIA triad) การวิเคราะห์ความเสี่ยงด้วย Threat modeling ที่เกี่ยวข้องกับการรักษาความลับ (Confidentiality) ของข้อมูล รวมถึงเราจะได้รู้ปัญหาที่อาจจะเกิดขึ้นและสร้างความเสียหายกับให้กับองค์กรได้หากขาดการออกแบบที่ดีเมื่อเราต้อง encrypt ข้อมูล
เราได้รับเกียรติจาก K.Taweesin Wongpinkaew (Pun) มาเป็นแขกรับเชิญ ใน EP นี้เราได้คุยกันถึงเรื่อง Domain Driven Design และ Event Stroming รวมถึงลงรายละเอียดใน Strategic design และ Tactical design กันอีกด้วย
นอกจากนั้นยังมีเทคนิคในการออกแบบระบบ, Onion Architecture, การวิเคราะห์และวางแผนการออกแบบโดยแบ่งประเภทของระบบเป็น Core, Support และ Generic เพื่อให้เกิดความคุ้มค่าที่สุด, และยังมีประสบการณ์มากมายจากคุณปันมาแชร์ให้กับเรา
ปิดท้ายด้วยแนวคิดดีๆ
>> งานของ Software Engineer ไม่ใช่แค่เขียน code เราไม่ใช่ feature factory ที่ทำตาม checklist แต่งานของเราคือการเรียนรู้และเข้าใจ Business เป็นหลัก แล้วการเขียน code เป็นแค่ side-effect ของการเรียนรู้ที่ดี
===
Links:
LinkedIn K.Taweesin - https://www.linkedin.com/in/taweesin-wongpinkaew-2b7b5b109/
Domain-Driven Design: Tackling Complexity in the Heart of Software (by Eric Evans) - https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
Implementing Domain-Driven Design (by Vaughn Vernon) - https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy (by Vlad Khononov) - https://www.amazon.com/Learning-Domain-Driven-Design-Aligning-Architecture/dp/1098100131
Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# (by Scott Wlaschin) - https://www.amazon.com/Domain-Modeling-Made-Functional-Domain-Driven/dp/1680502549
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
Feature flag เป็นเครื่องมือสำคัญในที่ช่วยให้สามารถ release software ได้อย่างต่อเนื่อง ทำให้เกิด CI/CD ได้อย่างแท้จริง ใน EP นี้จะมาทำความรู้จักเครื่องมือทำ feature flag กันให้ลึกยิ่งขึ้น มีความสามารถอะไรที่น่าสนใจ วิธีการเลือก feature flag ในท้องตลาด รวมถึงการ maintain technical debt ที่เกิดจาก feature flag
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
การรู้จัก Code smell และสามารถมอง code smell ออก รวมถึงแก้ code smell ได้ เป็นสิ่งที่ช่วยให้ developer สามารถปรับปรุงคุณภาพ code base ให้ดีขึ้นได้อย่างต่อเนื่อง ช่วยทำให้สามารถดูแลระบบได้ง่ายขึ้นในระยะยาว ใน EP นี้เรามารู้จัก code smell แบบต่างๆ พร้อมตัวอย่างและแนวทางการแก้ไขกันครับ
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
หลายๆ คนน่าจะเคยสมัครงานแล้วเจอด่านในการ interview ต่างๆ ด่านที่ยากที่สุดด่านนึงคือ Technical Interview ใน EP นี้เรามาดูภาพรวมการ interview ไปจนถึงสิ่งที่ interviewer มองหาในตัว candidate เราจะมีเทคนิคและเตรียมตัวอย่างไรให้สามารถผ่านด่าน Interview ได้อย่างราบรื่น
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
เรามาดูตัวอย่างโจทย์ระบบจองตั๋วงาน event ว่ามี challenge อย่างไรเมื่อมีคนใช้งานเพิ่มขึ้น เราจะแก้ปัญหาเหล่านั้นโดยการเปลี่ยน Architecture ของระบบให้รองรับการ scaling ได้อย่างไร มี technique และ trade-off ที่เราต้องพิจารณาอะไรบ้าง
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
เรามาทำความรู้จักเกี่ยวกับ Application Performance ว่ามันคืออะไร เราจะวัด performance ของโปรแกรมเราได้อย่างไร มีรายละเอียดเชิงลึกและเทคนิคอะไรน่าสนใจบ้าง รวมถึงเครื่องมือต่างๆ และสิ่งที่ engineer มักจะทำพลาดกันบ่อยๆ คืออะไร
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
ต่อเนื่องจาก EP ที่แล้ว เรามารู้จัก End to end และ Integration testing รวมถึงเทคนิค เครื่องมือในการทำ test ที่จะช่วยให้เรา deliver product ได้อย่างมั่นใจ นอนหลับสนิทในตอนกลางคืน รวมถึงส่งมอบ quality software สู่มือของผู้ใช้งาน
มาพบกับ 2 software engineer -- ชาร์ป & เจมส์ ที่จะแบ่งปันความรู้ให้กับ developer community ในไทยทาง podcast ช่อง Software Engineering in Thai
===
ใน EP นี้เราจะมาคุยกันถึง software testing โดยเฉพาะเรื่องของ Unit test ว่ามีแนวคิด เทคนิค วิธีการทำอย่างไร