14 คะแนน โดย baeba 3 시간 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

สารบัญ

บทความนี้แบ่งปันอินไซต์สำคัญที่ได้จากการอ่านหนังสือเทคนิค 45 เล่มตลอด 2 ปีที่ผ่านมา และทบทวนผลกระทบที่มีต่อการก่อร่างวิธีคิดในฐานะวิศวกรซอฟต์แวร์ โดยเฉพาะความเข้าใจเชิงลึกเกี่ยวกับยุค AI และกระบวนการพัฒนาที่มีประสิทธิภาพ

แนะนำพอดแคสต์และย้อนมองครบรอบ 2 ปี

แนะนำ Book Overflow

  • เป็นพอดแคสต์หนังสือเทคนิคสำหรับวิศวกรซอฟต์แวร์ โดยมีเป้าหมายเพื่อพัฒนาทักษะผ่านการอ่านหนังสือเทคนิคชั้นยอดทุกสัปดาห์

การวางแผนตอนพิเศษฉลองครบรอบ 2 ปี

  • เนื่องในโอกาสครบรอบ 2 ปีของพอดแคสต์ ผู้จัดได้ย้อนดูหนังสือทุกเล่มที่อ่านมาตลอด 2 ปีที่ผ่านมา และแบ่งปันเพียงหนึ่งอินไซต์จากแต่ละเล่มที่น่าจดจำที่สุดและยังคงมีอิทธิพลมาจนถึงปัจจุบัน

  • ไม่ได้มุ่งแค่การจดจำเนื้อหาในหนังสือเท่านั้น แต่เน้นว่าหนังสือเหล่านั้นส่งผลต่อการก่อร่างวิธีคิดในฐานะวิศวกรซอฟต์แวร์อย่างไร

การเปลี่ยนแปลงตลอด 2 ปีที่ผ่านมา

  • คาร์เตอร์และเนธาน ผู้ดำเนินพอดแคสต์ ได้พบกับความเปลี่ยนแปลงครั้งใหญ่ในชีวิตส่วนตัวตลอด 2 ปีที่ผ่านมา

    • เนธานย้ายไปอยู่ต่างประเทศ ทั้งคู่เรียนจบระดับบัณฑิตศึกษา และเนธานก็กำลังรอลูกที่จะเกิดในเร็ว ๆ นี้

    • ในด้านอาชีพก็มีความเปลี่ยนแปลงเช่นกัน เนธานเปลี่ยนไปทำคอนซัลติ้งแบบเต็มเวลา ส่วนคาร์เตอร์ย้ายงานจากบิ๊กเทคไปสตาร์ตอัป

  • แม้จะมีความเปลี่ยนแปลงส่วนตัวเหล่านี้ แต่การที่พอดแคสต์ยังดำเนินต่อมาได้ก็เป็นเพราะแรงสนับสนุนและความสนใจจากผู้ฟัง และพวกเขาได้แสดงความขอบคุณต่อสิ่งนั้น

อินไซต์สำคัญจากหนังสือเทคนิคแต่ละเล่ม

The Practice of Programming (Brian Kernighan, Rob Pike)

  • อินไซต์สำคัญ: หนังสือเล่มนี้บรรจุปรัชญาการเขียนโปรแกรมที่เป็นรากฐานของภาษา Go แม้บางส่วนจะล้าสมัยไปแล้ว แต่แนวคิดแกนกลางยังคงใช้ได้อยู่เสมอ

    • ในฐานะโปรแกรมเมอร์ Go ผู้พูดยังคงจดจำหนังสือเล่มนี้เพราะเป็นแฟนของ Rob Pike และมองว่าแนวคิดหลักของการเขียนโปรแกรมที่ดีมาจากหนังสือเล่มนี้

    • มีการกล่าวด้วยว่าเนื้อหาบางส่วน เช่น CSV parser นั้นล้าสมัยแล้ว

A Philosophy of Software Design (John Ousterhout)

  • อินไซต์สำคัญ: แนวคิด "Design It Twice" เน้นว่าการออกแบบที่ดีกว่าเกิดขึ้นได้จากการเรียนรู้และปรับปรุงระหว่างลงมือสร้างระบบ แทนที่จะพยายามออกแบบให้สมบูรณ์แบบตั้งแต่แรก

    • ในยุค AI การใช้ LLM ช่วยลดความพยายามที่ต้องใช้ในการออกแบบสองรอบ ทำให้การออกแบบมีประสิทธิภาพมากขึ้น

    • แม้หนังสือเล่มนี้จะตีพิมพ์ในปี 2018 แต่ก็ยังคงมีอิทธิพลสูงและถูกอ้างอิงในหนังสือหลายเล่ม

  • ข้อสังเกตเพิ่มเติม

    • หนังสือเสนอแนวคิดที่ทรงพลังเกี่ยวกับการ encapsulate ความซับซ้อน การออกแบบอินเทอร์เฟซ และการจัดการข้อผิดพลาด

    • จากการสัมภาษณ์กับ John Osterhout ยังทำให้ได้รับฟังมุมมองและคำวิจารณ์ของเขาต่อ TDD

Refactoring: Improving the Design of Existing Code (Martin Fowler)

  • อินไซต์สำคัญ: การรีแฟกเตอร์สามารถหยุดเมื่อไรก็ได้ เพราะเป็นงานปรับปรุงการออกแบบโดยไม่เปลี่ยนผลลัพธ์ของโค้ด จึงสามารถทำอย่างต่อเนื่องทีละเล็กทีละน้อยได้

    • หลายคนมักเข้าใจผิดว่าการรีแฟกเตอร์คือการเขียนโค้ดใหม่ทั้งชุด แต่คำจำกัดความของ Fowler จำกัดขอบเขตไว้แคบมาก
  • กรณีการนำไปใช้จริง

    • ไม่นานมานี้ มีการนำรีแฟกเตอร์ที่แท้จริงมาใช้ระหว่างปรับปรุงการใช้ Next.js และ React เพื่อเพิ่มประสิทธิภาพของ roborobato.com

    • มีการปรับโครงสร้างโค้ดใหม่โดยไม่เปลี่ยนฟีเจอร์หรือ UI และแบ่งออกเป็น 5 คอมมิตเพื่อให้ตรวจทานและนำไปใช้ได้ง่าย

What Is ChatGPT Doing and Why Does It Work? (Stephen Wolfram)

  • อินไซต์สำคัญ: หนังสือช่วยให้เข้าใจวิธีการทำงานของ LLM โดยเฉพาะกลไกการทำนายโทเค็นถัดไป และแนวคิดเรื่อง temperature

    • อธิบายว่าความสุ่มที่มีอยู่ภายใน LLM นั้นเองคือสิ่งที่ทำให้มันทรงพลัง
  • คุณค่าของหนังสือ

    • ให้บทวิเคราะห์ที่เรียบเรียงอย่างดีซึ่งอธิบายหัวข้อซับซ้อนให้เข้าใจได้ง่าย

    • มอบคำศัพท์พื้นฐานและกรอบความคิดสำหรับทำความเข้าใจ LLM ซึ่งยังคงเป็นความรู้สำคัญอยู่เสมอ

Fundamentals of Software Architecture (Mark Richards, Neal Ford)

  • อินไซต์สำคัญ: หนังสือเน้นความสำคัญของความสามารถในการขายวิสัยทัศน์ด้านสถาปัตยกรรมให้กับผู้มีส่วนได้ส่วนเสียทั้งสายเทคนิคและไม่ใช่เทคนิค และถือว่านี่คือองค์ประกอบพื้นฐานของสถาปัตยกรรม

    • ต้องสื่อสารอย่างต่อเนื่องและพิสูจน์คุณค่าของตัวเองอยู่เสมอ ท่าทีแบบ "ต้องเป็นไปตามที่ฉันพูด" ไม่ใช่สิ่งที่พึงปรารถนา
  • หลักการเพิ่มเติม

    • ไม่ควรอยู่บนหอคอยงาช้าง แต่ต้องทำงานร่วมกับโค้ดและทีม สัมผัสการออกแบบด้วยตัวเอง และก้าวนำไปสองสามขั้นเพื่อคาดการณ์ปัญหาที่อาจเกิดขึ้น

    • หนังสือเน้นบทบาทของ ADR (Architectural Design Document) และกล่าวว่าการบันทึกและพัฒนากระบวนการตัดสินใจเป็นสิ่งสำคัญ

    • การบันทึกและแบ่งปันการตัดสินใจเป็นสิ่งจำเป็นเพื่อหลีกเลี่ยง "ปรากฏการณ์ Groundhog Day"

The Clean Coder (Robert C. Martin, "Uncle Bob")

  • อินไซต์สำคัญ: หนังสือสำรวจว่าความเป็นมืออาชีพที่แท้จริงคืออะไร โดยเฉพาะมุมมองอันสุดโต่งของ Uncle Bob ต่อเดดไลน์และการประเมินเวลา

    • ในวัฒนธรรมวิศวกรรม มักมีความสับสนระหว่างการประเมินกับเดดไลน์ แต่หากต้องการความเป็นมืออาชีพ ก็จำเป็นต้องแยกสองสิ่งนี้ออกจากกันอย่างชัดเจน
  • ลักษณะเด่นของหนังสือ

    • เต็มไปด้วยเรื่องเล่า และช่วยให้รู้จักตัวตนของ Uncle Bob ได้ลึกขึ้น

    • หนังสือเขียนได้ดี อ่านง่าย และเหมาะกับการอ่านตั้งแต่ต้นจนจบ

Working Effectively with Legacy Code (Michael Feathers)

  • อินไซต์สำคัญ: โค้ดที่แก้ไขยากหรือทำให้รู้สึกกลัวนั้นเป็นโค้ดที่ออกแบบไม่ดี และเราสามารถทำให้ใครก็ตามแก้ไขโค้ดได้ง่ายขึ้น

    • หนังสือให้นิยาม legacy code ว่าเป็นโค้ดที่ไม่มี test coverage หรือเป็นโค้ดที่เราไม่เข้าใจวิธีการทำงาน

    • ให้แนวทางว่าจะเริ่มต้นอย่างไรเมื่อไม่ได้อยู่ในโปรเจกต์ greenfield หรือมีอำนาจควบคุม codebase ไม่มากพอ

  • คุณค่าของหนังสือ

    • แต่ละส่วนเป็นอิสระต่อกัน จึงเหมาะสำหรับใช้อ้างอิง และมีประสิทธิภาพกว่าหากเปิดอ่านเฉพาะส่วนที่ต้องการ แทนการอ่านรวดเดียวตั้งแต่ต้นจนจบ

Web Scalability for Startup Engineers (Artur Ejsmont)

  • อินไซต์สำคัญ: ในช่วงเริ่มต้นของสตาร์ตอัป สิ่งสำคัญคือการเดินหน้าให้เร็ว มากกว่าการทำ optimization มากเกินไปหรือไล่ตามความพร้อมใช้งานระดับสูง และควรลงทุนในจังหวะที่เหมาะสม

    • สตาร์ตอัประยะแรกไม่ควรพยายามสร้าง fault tolerance หรือ high availability ที่สมบูรณ์แบบตั้งแต่ตอนที่ยังมีลูกค้าไม่มาก
  • ข้อจำกัดตามยุคสมัยและข้อเสนอแนะ

    • สิ่งที่หนังสือกล่าวถึงคือประเด็นสำคัญของยุค 2010s ซึ่งปัจจุบันบริษัท SaaS และ PaaS จำนวนมากเข้ามาช่วยแก้ปัญหาส่วนนี้แล้ว

    • เวอร์ชันใหม่ควรถูกอัปเดตให้เป็นแฮนด์บุ๊กสำหรับผู้ก่อตั้งครั้งแรกหรือผู้นำทางเทคนิค

Recoding America (Jennifer Pahlka)

  • อินไซต์สำคัญ: หนังสือแสดงให้เห็นถึงความไร้ประสิทธิภาพของซอฟต์แวร์ภาครัฐและความเป็นไปได้ในการปรับปรุง พร้อมชี้ว่าซอฟต์แวร์ภาครัฐก็สามารถสร้างให้มีคุณภาพดีได้มากพอ

    • ซอฟต์แวร์ภาครัฐมักถูกประเมินจากการทำเช็กลิสต์ให้ครบ มากกว่าการพิจารณาว่ามันทำงานได้จริงหรือไม่

    • หนังสือเน้นความสำคัญของการนำหลักการแกนกลางของ Agile อย่าง "การทำงานร่วมกับลูกค้าอย่างใกล้ชิด" และ "การส่งมอบซอฟต์แวร์ที่ใช้งานได้อย่างต่อเนื่อง" ไปใช้กับการพัฒนาซอฟต์แวร์ภาครัฐ

Building Evolutionary Architectures (Neal Ford, Rebecca Parsons, Patrick K. Kua, Pramod Sadalage)

  • อินไซต์สำคัญ: หนังสือเสนอแนวคิด "Fitness Functions" เพื่อประเมินอย่างเป็นกลางว่าระบบทำงานได้ตามที่คาดหวังหรือไม่ และแสดงวิธีสร้างสถาปัตยกรรมที่พัฒนาเปลี่ยนแปลงได้

    • Fitness Functions เป็นสิ่งจำเป็นต่อการติดตามวิวัฒนาการของระบบ และตรวจสอบว่าการตัดสินใจด้านการออกแบบทำงานตามเจตนาหรือไม่

    • ต้องคำนึงถึงผลกระทบของโครงสร้างองค์กรที่มีต่อสถาปัตยกรรมซอฟต์แวร์ เช่น กฎของ Conway เมื่อจัดทีมและออกแบบระบบ

Looks Good to Me (Adrian Bergeron)

  • อินไซต์สำคัญ: แม้จะจำคำแนะนำเฉพาะเจาะจงในหนังสือไม่ได้ แต่หนังสือก็ช่วยย้ำเตือนอีกครั้งถึงความสำคัญของ pull request (PR)

  • จากกระบวนการย้ายระบบที่เพิ่งทำในบริษัทเมื่อไม่นานมานี้ ทำให้ได้ทบทวนว่าการรีวิว PR ไม่รัดกุมพอ และรู้สึกว่าจำเป็นต้องกลับมาอ่านหนังสือเล่มนี้อีกครั้ง

  • คุณค่าของหนังสือ

    • ให้แนวทางที่ดีเกี่ยวกับการกำหนดข้อตกลงทางสังคมและมาตรฐานภายในทีม

    • หนังสือเทคนิคมีประโยชน์สำหรับการกลับมาเปิดอ่านอีกครั้งเมื่อจำเป็น และช่วยต่อยอดไอเดียได้

Slow Productivity (Cal Newport)

  • อินไซต์สำคัญ: ข้อความที่ว่า "ทำงานให้น้อยลงและโฟกัสกับงานที่มีความหมาย" เน้นให้ระวัง pseudo-productivity และควรมุ่งไปที่กิจกรรมที่มีมูลค่าสูง

    • เป็นหนังสือที่แสดงให้เห็นวิธีคิดอันลุ่มลึกของ Cal Newport และช่วยลดกิจกรรมที่ไม่จำเป็นเพื่อไปโฟกัสกับงานสำคัญ เช่น การทำพอดแคสต์

    • ยิ่งอาชีพก้าวหน้ามากขึ้น ก็ยิ่งต้องโฟกัสกับงานที่มี leverage และมูลค่าสูงที่สุด และ pseudo-productivity คือสิ่งที่ขัดขวางเรื่องนั้น

The Unicorn Project (Gene Kim)

  • อินไซต์สำคัญ: อธิบายความสำคัญของกระบวนการ DevOps จากมุมมองของวิศวกรรมซอฟต์แวร์ และเน้นว่าต้องแก้ปัญหาที่รากเพื่อเร่งความเร็วในการพัฒนา

    • ระบบที่ต้องพึ่งพา release manager นั้นไม่มีประสิทธิภาพ และควรมีโปรเซสอัตโนมัติที่ทำให้ใครก็จัดการ release ได้
  • โครงสร้างและอิทธิพลของหนังสือ

    • ต่างจากงานก่อนหน้าอย่าง 'The Phoenix Project' ตรงที่อธิบาย DevOps จากมุมมองวิศวกรรมซอฟต์แวร์ จึงนำไปใช้กับนักพัฒนาได้กว้างกว่า

    • ใช้รูปแบบอุปมาเพื่อถ่ายทอดเนื้อหาเชิงเทคนิคให้เข้าใจง่าย และเป็นผู้นำเทรนด์การผสานเรื่องเล่าเข้ากับหนังสือเทคนิค

Tidy First (Kent Beck)

  • อินไซต์สำคัญ: เน้นคุณค่าของ "optionality" ในโครงสร้างโค้ด หรือก็คือความยืดหยุ่นและความสามารถในการขยาย ซึ่งสร้างผลประโยชน์ที่เป็นไปได้ในอนาคตคล้ายกับมูลค่าของเวลา

    • เพราะตอนเขียนโค้ดครั้งแรกยากจะคาดเดาได้ว่าฟีเจอร์ใดจะจำเป็นในอนาคต จึงสำคัญที่จะเขียนให้เปลี่ยนแปลงได้อย่างยืดหยุ่น
  • ลักษณะเด่นและคุณค่าของหนังสือ

    • แม้จะเป็นหนังสือสั้นและกระชับ แต่ให้มุมมองที่ลึกซึ้ง และทำให้รู้สึกถึงความสนุกของการพัฒนาซอฟต์แวร์

    • การนำไอเดียจากอุตสาหกรรมอื่น เช่น การเทรดออปชัน มาประยุกต์ใช้กับซอฟต์แวร์ เป็นสัญญาณของการพัฒนาที่เป็นผู้ใหญ่

Unix: A History and a Memoir

  • อินไซต์สำคัญ: ทำให้เข้าใจวิธีการทำงานและความสำคัญของ "pipes" ซึ่งเป็นหนึ่งใน building block หลักของ Unix

    • ด้วยปรัชญาแบบ Unix ที่ให้แต่ละโปรแกรมรับอินพุตแล้วส่งคืนเอาต์พุต จึงสามารถเชื่อมเอาต์พุตระหว่างโปรแกรมได้ง่ายผ่านตัวดำเนินการ pipe
  • บทบาทของ Doug McIlroy

    • Doug McIlroy มีบทบาทสำคัญในการหลอมรวมแนวคิดของ Unix ผ่าน pipe และมีส่วนช่วยกำหนดปรัชญาแบบ Unix

The Twelve-Factor App

  • อินไซต์สำคัญ: นำเสนอหลักการ 12 ข้อสำหรับการสร้างแอปพลิเคชันแบบ cloud-native แต่หากนำหลักการเหล่านี้ไปใช้อย่างผิดวิธีก็อาจเพิ่มความซับซ้อนได้แทน

    • เป็นหลักการที่ถูกสร้างขึ้นในยุค Heroku และเมื่อดูหลักพื้นฐานแล้วก็เป็นสิ่งที่ชวนพยักหน้าเห็นด้วย

    • เช่นเดียวกับกรณีที่นำเทคโนโลยีบางอย่างอย่าง Kubernetes ไปใช้โดยไม่เข้าใจ หลักการเหล่านี้ก็สามารถถูกใช้อย่างผิดทางได้เช่นกัน

The Agile Manifesto

  • อินไซต์สำคัญ: Agile เป็นปฏิกิริยาตอบโต้ต่อโมเดล waterfall โดยมีเป้าหมายเพื่อส่งมอบซอฟต์แวร์ที่ใช้งานได้อย่างรวดเร็ว และสะท้อน feedback จากลูกค้าให้ไว

    • แก่นของ Agile คือการทำงานร่วมกับลูกค้าและผู้มีส่วนได้ส่วนเสียอย่างใกล้ชิด เพื่อปรับปรุงซอฟต์แวร์แบบ iterative
  • การประยุกต์ใช้สมัยใหม่และคำวิจารณ์

    • แม้สาระสำคัญของ Agile จะคุ้นเคยสำหรับนักพัฒนาจำนวนมาก แต่หากไม่มีความพยายามอย่างตั้งใจ ก็อาจสูญเสียความหมายไปได้ง่าย

    • เพราะมันฝังรากลึกในงานพัฒนาซอฟต์แวร์ยุคใหม่ จึงทำให้เป็นการหันกลับมาทบทวนวิธีเดิมมากกว่าการเรียนรู้สิ่งใหม่

    • มันมีประสิทธิภาพมากในฐานะแรงต้านต่อโมเดล waterfall และย้ำว่าด้วยความซับซ้อนของซอฟต์แวร์ การส่งมอบสิ่งที่มีคุณค่าเป็นหน่วยเล็ก ๆ สำคัญกว่าการวางแผนระยะยาว

The Software Engineer's Guidebook (Jorge Orozco)

  • อินไซต์สำคัญ: เมื่ออาชีพเติบโตขึ้น ควรโฟกัสกับงานที่มี leverage สูง และต้องบริหารเส้นทางอาชีพของตนเองอย่างเชิงรุก

    • เน้นความสำคัญของผู้จัดการและสปอนเซอร์ โดยผู้จัดการจะสนับสนุนคุณเพื่อการเลื่อนตำแหน่ง และคุณเองก็ต้องพยายามตอบให้ได้ตามความคาดหวังนั้น
  • ลักษณะเด่นของหนังสือ

    • คล้ายกับจดหมายข่าว 'The Pragmatic Engineer' ตรงที่ให้คำแนะนำเชิงปฏิบัติเกี่ยวกับการจัดการอาชีพ

    • ให้เฟรมเวิร์กที่จำเป็นต่อการทำความเข้าใจเส้นทางอาชีพที่ซับซ้อน และการทำให้ผู้อื่นเห็นคุณค่าในตัวเองอย่างเชิงรุก

Hypermedia Systems (Carson Gross, et al.)

  • อินไซต์สำคัญ: ด้วยเทคโนโลยีอย่าง HTMX ก็สามารถสร้างเว็บแอปพลิเคชันที่ไดนามิกเพียงพอด้วย server-side rendering ได้ และลดความจำเป็นของ JavaScript client ที่ซับซ้อนลงได้

    • โดยอาศัยข้อดีของระบบ hypermedia ซึ่งเป็นแนวคิดดั้งเดิมของเว็บ หากมีสเปกที่ดี ก็สามารถทำฟังก์ชันจำนวนมากฝั่งเซิร์ฟเวอร์ได้โดยไม่ขึ้นกับเทคโนโลยี backend
  • ข้อดีและข้อจำกัดของ HTMX

    • โค้ดที่เขียนด้วย HTMX เรียบง่ายและดูแลรักษาง่าย อีกทั้งมีโอกาสอยู่ได้นานกว่าเฟรมเวิร์กสมัยใหม่

    • HTMX อาจไม่ใช่อนาคตของการพัฒนาเว็บ แต่ความเห็นที่คัดค้านเช่นนี้ก็ช่วยให้ตัดสินใจได้ดีขึ้นในฐานะวิศวกร

Team Topologies (Matthew Skelton, Manuel Pais)

  • อินไซต์สำคัญ: ทีมควรถูกจัดให้ลดการพึ่งพากันที่ต้องคอยประสานงานให้เหลือน้อยที่สุด และโครงสร้างของทีมมีผลโดยตรงต่อสถาปัตยกรรมซอฟต์แวร์

    • Team Topologies มุ่งเน้นการลดการประสานงานระหว่างทีมเพื่อเพิ่มประสิทธิภาพของ flow

    • เนื่องจากโครงสร้างของทีมเป็นตัวกำหนดโครงสร้างของซอฟต์แวร์ จึงต้องระมัดระวังในการออกแบบทีม

Ace the System Design Interview (Alex Xu)

  • อินไซต์สำคัญ: ในการสัมภาษณ์ system design การใช้ "back-of-the-napkin math" เพื่อประเมินขนาดและความต้องการด้านประสิทธิภาพเป็นสิ่งสำคัญ

    • หากจำค่าทั่วไปอย่างเวลา ขนาดข้อมูล ฯลฯ และนำมาใช้เพื่อทำให้ข้อกำหนดของระบบเป็นรูปธรรม ก็จะออกแบบบนพื้นฐานของเหตุผล ไม่ใช่การเดา

    • ตัวอย่างเช่น หากต้องรองรับจำนวนทวีตต่อชั่วโมง เมื่อรู้จำนวนไบต์ต่อทวีตและความยาวของทวีต ก็สามารถคำนวณพื้นที่จัดเก็บและ throughput ที่ต้องใช้ได้

  • วิธีใช้ในการสัมภาษณ์

    • หากคิดออกเสียงและแชร์กระบวนการคำนวณกับผู้สัมภาษณ์ ก็จะได้รับ feedback และนำไปสู่การออกแบบที่ดีขึ้นได้

    • สิ่งสำคัญไม่ใช่แค่การไล่รายชื่อเทคโนโลยีล่าสุด แต่ต้องอธิบายเหตุผลที่เลือกเทคโนโลยีนั้นด้วย

The Good News Factory (Kent Beck)

  • อินไซต์สำคัญ: หากทีมซอฟต์แวร์จะเป็น "โรงงานข่าวดี" ที่ส่งมอบ "ข่าวดี" ได้อย่างต่อเนื่อง การมี clean code และการสร้างระบบที่ขยายได้จึงเป็นสิ่งจำเป็น

    • หากทีมไม่สามารถแสดงผลลัพธ์เชิงบวกได้อย่างสม่ำเสมอ ก็อาจเกิดเรื่องเล่าเชิงลบจากภายนอกขึ้นมาแทน
  • ลักษณะเด่นของหนังสือ

    • เป็นหนังสือรูปแบบรายงานที่สั้นและกระชับ ซึ่งถ่ายทอดสารหลักได้อย่างมีประสิทธิภาพ

Thinking in Systems (Donella Meadows)

  • อินไซต์สำคัญ: แนวคิดเรื่อง "stocks and flows" ช่วยให้เข้าใจคุณลักษณะเชิงพลวัตของระบบ และมอบเฟรมเวิร์กที่มีประโยชน์ต่อการวิเคราะห์ระบบที่ซับซ้อน

    • เช่นเดียวกับการเข้าใจความแตกต่างระหว่าง GDP (flow) กับมูลค่าตลาด (stock) การแยกแยะสถานะปัจจุบันของระบบกับอัตราการเปลี่ยนแปลงเป็นสิ่งสำคัญ
  • คุณค่าของหนังสือ

    • แม้จะเป็นนามธรรม แต่ก็มอบมุมมองระดับสูงที่ทรงคุณค่าต่อการคิดเชิงกลยุทธ์และการคิดเชิงระบบ

Grokking Concurrency (Karol Bobrov)

  • อินไซต์สำคัญ: การ "ปรับขนาดให้เหมาะสม" ของโมเดล concurrency เป็นเรื่องสำคัญ เพราะทั้งการแบ่งละเอียดเกินไปและการทำกว้างเกินไปต่างก็มีข้อเสีย

    • หนังสืออธิบายวิธีทำความเข้าใจหน่วยงานที่สามารถทำแบบขนานหรือแยกเป็นงานพร้อมกันได้ และวิธีจูนระบบตามนั้น

Rework (Jason Fried, David Heinemeier Hansson)

  • อินไซต์สำคัญ: เราสามารถใช้ข้อได้เปรียบจากการเป็นผู้เล่นรายเล็กและยังไม่เป็นที่รู้จัก เพื่อเดินหน้าทำซ้ำ สร้างใหม่ และสร้างความสำเร็จได้

    • ข้อเสียของการยังไม่โด่งดังอาจกลายเป็นโอกาสของนวัตกรรมได้ และควรใช้ประโยชน์จากมันเพื่อไม่ให้พลาดข้อดีของความสำเร็จ
  • ลักษณะเด่นและอิทธิพลของหนังสือ

    • เป็นหนังสือที่เขียนดีและมีเหตุผล ช่วยสร้างแรงบันดาลใจให้กับคนที่ต้องการสร้างสิ่งใหม่ผ่านการ bootstrap หรือสร้างสิ่งที่ไม่สอดคล้องกับนิยามความสำเร็จกระแสหลัก
  • กรณีความสำเร็จของ Basecamp และ 37signals พิสูจน์ว่าปรัชญาของพวกเขายังคงใช้ได้แม้เวลาจะผ่านไป

In the Plex (Steven Levy)

  • อินไซต์สำคัญ

    • ความสามารถของวิศวกร Google ในการคิดค้นแนวคิดซับซ้อนอย่างทฤษฎีการประมูลขึ้นมาใหม่อย่างสร้างสรรค์ คือผลลัพธ์ที่ได้เมื่อจ้างคนเก่งและไว้วางใจพวกเขา

    • ความสำเร็จของสตาร์ทอัพไม่ได้การันตีไว้ จึงต้องพยายามอย่างต่อเนื่องและมีส่วนร่วมเพื่ออนาคตของบริษัท

  • ความเชื่อมโยงกับผู้เขียน

    • Steven Levy ผู้เขียนเป็นนักเขียนชั้นยอด และหนังสืออีกเล่มของเขาอย่าง 'Crypto' ก็น่าแนะนำเช่นกัน

    • ประสบการณ์ที่ได้ไปสัมภาษณ์กับบริษัทซึ่งมีบุคคลในหนังสือเป็น CEO อยู่ในปัจจุบันนั้นน่าสนใจมาก

Thinking Like a Large Language Model (Mukund Sundararajan)

  • อินไซต์สำคัญ: แม้ความทรงจำเฉพาะเกี่ยวกับหนังสือเล่มนี้จะเลือนราง แต่ก็ช่วยให้เข้าใจวิธีคิดของ LLM ได้

The DevOps Handbook

  • อินไซต์สำคัญ

    • ให้แนวทางด้านการทำ DevOps ในทางปฏิบัติ เช่น CI/CD pipeline, automatic rollback และ observability ที่ดีขึ้น ซึ่งช่วยยกระดับความสามารถด้านซอฟต์แวร์เอ็นจิเนียริงของทีมอย่างมาก

    • เมื่อต้องปล่อยฟีเจอร์ใหม่อย่าง "ฟังก์ชันค้นหาใหม่" หนังสือแนะนำเทคนิค "shadow traffic" ที่ส่งทราฟฟิกจริงบางส่วนไปยัง API ใหม่เพื่อสังเกตผลลัพธ์

    • เน้นความสำคัญของการแยก deployment ออกจาก release และสามารถใช้ feature flag เพื่อรับมือ regression ที่อาจเกิดขึ้นระหว่างการย้ายระบบได้อย่างรวดเร็ว

  • ผู้เขียนและคุณค่าของหนังสือ

    • มีผู้เขียนชื่อดังอย่าง Gene Kim, Jess Humble, Patrick Dubois, Nicole Forsgren และ John Willis ร่วมเขียน และมีเนื้อหาที่เสริมกับ 'Unicorn Project' และ 'The Phoenix Project'

Just for Fun: How Linus Torvalds Started an Accidental Revolution

  • อินไซต์สำคัญ: Linus Torvalds สร้าง Linux ขึ้นมาด้วยการโฟกัสกับสิ่งที่เขาสนุก และสิ่งนั้นก็นำไปสู่ผลลัพธ์ที่เปลี่ยนโลก

    • การโฟกัสกับสิ่งที่สนุกคือแรงจูงใจที่ทำให้เราทำงานหนักที่สุด และอาจนำไปสู่ความสำเร็จครั้งใหญ่แบบไม่คาดคิด
  • นวัตกรรมของซอฟต์แวร์โอเพนซอร์ส

    • Linus Torvalds บุกเบิกแนวทางที่ไม่ดั้งเดิมในการสร้างรายได้จากซอฟต์แวร์โอเพนซอร์สพร้อมยึดมั่นในหลักการของตน ซึ่งส่งผลอย่างมากต่อการดูแลเซิร์ฟเวอร์และวิธีการ commit โค้ด

Made to Stick

  • อินไซต์สำคัญ: ไอเดียที่น่าจดจำมีรูปแบบบางอย่างร่วมกัน และแม้จะไม่ใช่อัจฉริยะด้านความคิดสร้างสรรค์ ก็สามารถใช้รูปแบบเหล่านี้เพื่อสื่อสารไอเดียได้อย่างมีประสิทธิภาพ

    • ข้อความที่ว่า "จงโฟกัสกับสิ่งที่สนุก และเชื่อว่าคุณจะทุ่มเทที่สุดกับสิ่งที่สนุกที่สุด" ส่งผลอย่างมากต่อการตัดสินใจด้านอาชีพส่วนตัว

Staff Engineer (Will Larson)

  • อินไซต์สำคัญ: ในระดับ Staff Engineer ควรโฟกัสกับงานที่มีลำดับความสำคัญสูงและมีอิมแพกต์มาก ซึ่งเป็นตัวชี้วัดสำคัญที่ใช้ได้ตลอดเส้นทางอาชีพ

    • ไม่มีเส้นทางตายตัวในการเป็น Staff Engineer และผู้คนจากหลากหลายพื้นเพต่างก็แก้ปัญหาที่ซับซ้อนได้

Finite and Infinite Games (James P. Carse)

  • อินไซต์สำคัญ: "เกมจำกัด" มีผลแพ้ชนะชัดเจน แต่ "เกมไม่สิ้นสุด" มีเป้าหมายเพื่อสนุกกับการเล่นเกมนั้นเอง และการมุ่งสู่เกมไม่สิ้นสุดในชีวิตเป็นสิ่งสำคัญ

    • ตอนที่ Linus Torvalds สร้าง Linux เขาไม่ได้เล่นเกมจำกัดแบบการสร้างระบบปฏิบัติการที่ดังที่สุด แต่เล่นเกมไม่สิ้นสุดอย่างการสร้างระบบปฏิบัติการที่ดีที่สุดและสร้างชุมชนขึ้นมา

Radical Candor (Kim Scott)

  • อินไซต์สำคัญ: ฟีดแบ็กที่ตรงไปตรงมาและซื่อสัตย์กลับเป็นหนทางที่ใส่ใจอีกฝ่ายจริง ๆ และควรหลีกเลี่ยง "ruinous empathy"

    • การให้ฟีดแบ็กอย่างตรงไปตรงมาเกิดจากความห่วงใยต่อความเป็นอยู่ของอีกฝ่ายอย่างจริงใจ และต่างจากการเสียมารยาท

    • เวลาจะให้ฟีดแบ็กควรคำนึงถึงความรู้สึกของอีกฝ่าย แต่ก็ต้องสื่อสารประเด็นสำคัญให้ชัดเจน

Mastering OpenTelemetry and Observability (Steve Flanders)

  • อินไซต์สำคัญ: ควรหลีกเลี่ยง vendor lock-in และใช้ OpenTelemetry แต่ในยุค AI ก็ทำให้กลับมาทบทวนว่าความสำคัญของ vendor lock-in อาจเปลี่ยนไป

    • ความสะดวกของเครื่องมืออย่าง DataDog อาจทำให้ vendor lock-in ดูน่าสนใจ แต่ก็ควรคำนึงถึงความเสี่ยงอย่างการเปลี่ยนราคา หรือการควบรวมกิจการ

Beyond Vibe Coding (Addy Osmani) & Advanced React (Nadia Makarevich)

  • อินไซต์สำคัญ

    • 'Beyond Vibe Coding' นำเสนอแนวคิดของ "augmented AI" ที่วิศวกรผู้มีประสิทธิภาพทำงานร่วมกับ coding agent เพื่อเขียนโค้ด

    • 'Advanced React' เหมาะสำหรับใช้เป็นเอกสารอ้างอิง

The Tao of Programming (Jeffrey James)

  • อินไซต์สำคัญ: การสร้างระบบปฏิบัติการสำคัญแค่ความถูกต้องทางเทคนิค แต่การจำลองโลกจริงอย่างระบบเงินเดือนนั้นยากกว่า เพราะมีปัญหาซับซ้อนรวมถึงผู้มีส่วนได้ส่วนเสียเข้ามาเกี่ยวข้อง

    • เรื่องนี้อาจไม่ใช่สิ่งที่เป็นธรรมชาติสำหรับโปรแกรมเมอร์ และชี้ให้เห็นว่าการจำลองโลกจริงเป็นซอฟต์แวร์นั้นมีความซับซ้อนโดยเนื้อแท้
  • ความเชื่อมโยงกับบทความ "Worse Is Better"

    • 'The Tao of Programming' และ "Worse Is Better" เป็นงานเขียนประเภทคล้ายกันที่สั้นแต่ชวนให้คิดลึก

Mastering the Behavioral Interview (Austin McDonald)

  • อินไซต์สำคัญ: สามารถเรียนรู้วิธีเล่าประสบการณ์ของตัวเองให้เข้ากับ archetype แบบ "แฮ็กเกอร์ผู้เดียวดาย" ในการสัมภาษณ์สายเทคสไตล์ซิลิคอนแวลลีย์

    • ทักษะการเล่าเรื่องอย่างมีประสิทธิภาพในการสัมภาษณ์สำคัญมาก และหนังสือเล่มนี้ก็อธิบายวิธีทำไว้อย่างชัดเจน

Designing Data-Intensive Applications (Martin Kleppmann)

  • อินไซต์สำคัญ: เจาะลึกแนวคิดพื้นฐานของ distributed systems เช่น reliability, latency เทียบกับ throughput และ resilience เทียบกับการฟื้นตัวอย่างรวดเร็ว

    • ยังครอบคลุมหัวข้ออย่าง data privacy และการฉกฉวยความสนใจ ทำให้ต้องคิดทบทวนมากขึ้นเมื่อต้องสร้างระบบที่มีความต้องการสูง

Reflections on Trusting Trust (Ken Thompson) & Coding Machines (Lawrence Kesteloot)

  • อินไซต์สำคัญ: ในยุคที่ AI สร้างโค้ดได้ ประเด็นเรื่องความไว้วางใจต่อโค้ดที่ถูกสร้างขึ้น และเจตนาร้ายที่อาจแฝงอยู่ (เช่น steganography) เป็นสิ่งที่ชวนให้ขบคิดอย่างลึกซึ้ง

Frictionless (Nicole Forsgren, Abby Noda)

  • อินไซต์สำคัญ: หนังสือเล่มนี้โฟกัสการทำ initiative ด้าน DevEx โดยมุ่งไปที่ผู้นำในองค์กรขนาดใหญ่เป็นหลัก จึงยังไม่ส่งผลมากนักในช่วงอาชีพปัจจุบัน

    • แม้จะมีเนื้อหาด้าน DevEx ที่ยอดเยี่ยม แต่ก็อาจสำคัญกว่ากับบริษัทที่อยู่หลัง Series C ไปแล้ว

Project Hail Mary (Andy Weir)

  • อินไซต์สำคัญ: อนาคตไม่ใช่สิ่งที่ต้องหวาดกลัว แต่เป็นปัญหาที่ต้องแก้ และหนังสือแสดงมุมมองเชิงบวกต่อบทบาทของมนุษยชาติและเทคโนโลยี

    • ถ่ายทอดข้อความที่ให้ความหวังว่า แม้อยู่ในสถานการณ์ยากลำบาก ก็ยังสามารถสร้างสิ่งน่าทึ่งได้ด้วยสมาธิและนวัตกรรม

2 ความคิดเห็น

 
laeyoung 2 분 전
  1. ลิงก์ในสารบัญวนกลับมาที่หน้านี้แบบเรียกซ้ำ
  2. ไม่แน่ใจว่าคุณสรุปทั้งหมดด้วยมือเอง หรือเอาสรุปจาก AI มาถ่ายทอดต่อ แต่ใน YouTube มีฟังก์ชัน Ask อยู่แล้ว เลยดูเหมือนไม่มีปัญหาแม้จะไม่ได้สรุปทั้งหมดให้ครบ ตรงกันข้าม ผมกลับสงสัยมากกว่าว่าทำไมถึงอยากแชร์สิ่งนี้ และคิดว่าเนื้อหาแค่สรุป 3 บรรทัดก็น่าจะเพียงพอแล้วครับ
 
baeba 3 시간 전

ที่อยู่เว็บไซต์อยู่ด้านล่างนี้
https://bookoverflow.io/