54 คะแนน โดย GN⁺ 2025-03-11 | 9 ความคิดเห็น | แชร์ทาง WhatsApp
  • วิศวกรซอฟต์แวร์จำนวนมากทำงานโดยไม่มี ความหลงใหลในซอฟต์แวร์
    • หลายคนทำงานเพียงเพื่อให้ได้ค่าตอบแทนที่ดี แต่หากขาดความหลงใหล สุดท้าย ผลงานจะลดลง
    • หากยึดติดอยู่กับเทคโนโลยีเก่าและความเชื่อที่ผิดโดยไม่เรียนรู้ ก็จะไม่สามารถเติบโตได้
  • องค์ประกอบที่จำเป็นในการเป็นวิศวกรที่ดี
    • ต้อง เข้าใจแก่นแท้ของวิศวกรรม และสั่งสมความรู้เชิงลึก
    • ต้อง เรียนรู้เทคโนโลยีใหม่อย่างต่อเนื่องและเข้าหาอย่างมีวิจารณญาณ
    • จำเป็นต้องมี นิสัยในการนำความรู้ที่เรียนมาไปใช้จริงและปรับปรุงต่อ

# อะไรที่ทำให้เป็น วิศวกรที่ดี

  • นิยามของวิศวกร

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

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

ความเข้าใจเชิงลึกเกี่ยวกับโดเมน

  • จำเป็นต้องมีความเข้าใจที่แข็งแรงเกี่ยวกับหลักการพื้นฐาน
    • วิศวกรเครื่องกล → คุณสมบัติของวัสดุและความรู้ในการประยุกต์ใช้
    • วิศวกรซอฟต์แวร์ → เข้าใจหลักการทำงานของหน่วยความจำและ CPU
    โฆษณา
  • ต้องเรียนรู้ตั้งแต่หลักการพื้นฐาน
    • จำเป็นต้องเข้าใจแนวคิดพื้นฐานอย่างลึกซึ้ง เช่น HTTP, โครงสร้างหน่วยความจำ, การทำงานของระบบ
    • อย่าเริ่มจากระดับบน แต่ค่อย ๆ สร้างจากพื้นฐานขึ้นไป

การเรียนรู้อย่างต่อเนื่อง

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

ทำความเข้าใจข้อจำกัดและปัญหาของเทคโนโลยี

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

นำความรู้ไปใช้ในงานจริง

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

# วิธีเป็นวิศวกรที่ดีขึ้น

พัฒนาความสามารถในการคิดเชิงวิพากษ์

  • การคิดเชิงวิพากษ์คือองค์ประกอบสำคัญของวิศวกรรม
    • จำเป็นต่อการทำความเข้าใจแนวคิด ผลกระทบ และการตั้งคำถามต่อสิ่งเหล่านั้น
    • หากขาดการคิดเชิงวิพากษ์หรือมองข้ามไป จะนำไปสู่ความไม่มีประสิทธิภาพและความซับซ้อน
    โฆษณา
  • เสริมสร้างความสามารถในการคิดเชิงวิพากษ์
    • เมื่อพบแนวคิดใหม่ อย่ารับมาโดยอัตโนมัติ แต่ควรตรวจสอบประสิทธิผลและความสมเหตุสมผล
    • ต้องวิเคราะห์ข้อดีข้อเสียและทางเลือกของแนวทางหนึ่ง ๆ อย่างมีเหตุผล
  • แหล่งเรียนรู้การคิดเชิงวิพากษ์: ดู Critical Thinking

อ่านหนังสือให้มากขึ้น

  • การอ่านเป็นวิธีที่มีประสิทธิภาพในการรับความรู้
    • มีหนังสือหลากหลายหัวข้อเกี่ยวกับวิศวกรรมซอฟต์แวร์
    • อย่ารับเนื้อหาในหนังสือมาแบบตรง ๆ แต่ควรเข้าหาอย่างมีวิจารณญาณ
  • ตัวอย่างคำถามเพื่อการอ่านอย่างมีวิจารณญาณ
    • "แนวทางนี้มีปัญหาหรือไม่?"
    • "มีวิธีที่ดีกว่านี้หรือไม่?"
    • "ถ้าเป็นฉันจะทำต่างออกไปอย่างไร?"
    • "สิ่งที่หนังสืออธิบายนี้ถูกต้องจริงหรือไม่?"
  • สร้างนิสัยในการจดโน้ต
    • จัดระเบียบและบันทึกสิ่งที่เรียนรู้รวมถึงความคิดของตนเอง
    • หากมีการกล่าวถึงหัวข้อที่ไม่รู้จัก ให้ค้นคว้าเพิ่มเติม
    • แนะนำ Obsidian เป็นเครื่องมือจดโน้ต (เลือกตามความชอบส่วนตัวได้)
  • รายการอ่านที่แนะนำ

นำความรู้ที่เรียนไปใช้กับโปรเจ็กต์

  • เชื่อมจากทฤษฎีสู่ภาคปฏิบัติ
    • การเรียนรู้ที่แท้จริงจะเกิดขึ้นเมื่อคุณนำสิ่งที่เรียนไปใช้ในโปรเจ็กต์จริง
    • การลงมือทำแนวคิดจริงช่วยให้เข้าใจได้ลึกยิ่งขึ้น
    • ต่อให้เป็นโปรเจ็กต์เล็กหรือต้นแบบก็สำคัญที่จะลองสร้างด้วยตัวเอง
    โฆษณา
  • ประโยชน์ที่ได้จากกระบวนการนำไปใช้จริง
    • จะได้เผชิญกับ ปัญหาจริง ที่มองไม่เห็นจากทฤษฎี
    • สามารถทำให้ความรู้เป็นรูปธรรมและปรับปรุงได้ผ่านกระบวนการแก้ปัญหา
    • ความสามารถในการแก้ปัญหาและการคิดอย่างมีเหตุผลจะแข็งแกร่งขึ้น
  • วิธีนำสิ่งที่เรียนไปใช้
  • สร้างต้นแบบขนาดเล็ก
    • หลังเรียนรู้เฟรมเวิร์ก ภาษา หรือแนวคิดใหม่ ให้ลองทำโปรเจ็กต์เล็ก ๆ
    • ตัวอย่าง: หลังเรียนรู้การทำ indexing ของฐานข้อมูล ให้สร้างระบบค้นหาอย่างง่ายและเปรียบเทียบประสิทธิภาพ
    • แก้ปัญหาจริง
      • ลองแก้ปัญหาเล็ก ๆ ที่เกิดขึ้นในชีวิตประจำวันหรือการทำงาน
      • ตัวอย่าง: ทำงานที่ต้องทำซ้ำด้วยมือให้เป็นอัตโนมัติ หรือปรับปรุงปัญหาประสิทธิภาพที่ตกลง
    • สอนสิ่งที่เรียนมา
      • การอธิบายสิ่งที่เรียนให้ผู้อื่นฟังช่วยเสริมความเข้าใจ
      • เขียนบล็อก เขียน Twitter thread หรืออภิปรายกับเพื่อนร่วมงาน
      • ระหว่างการสอน คุณอาจค้นพบมุมมองใหม่ได้
  • หากนำความรู้ไปใช้อย่างต่อเนื่อง ความเข้าใจเชิงทฤษฎีจะเปลี่ยนเป็นความสามารถเชิงปฏิบัติ และช่วยให้เติบโตเป็นวิศวกรที่มีความสามารถมากขึ้น

ประเมินและปรับปรุงโค้ดของตนเอง

  • การวิจารณ์ตนเองคือหนึ่งในนิสัยหลักของวิศวกรที่ยอดเยี่ยม
    • วิศวกรจำนวนมากทำผิดพลาดโดยคิดว่าเมื่อโค้ดทำงานได้ก็ "เพียงพอแล้ว"
    • แต่วิศวกรที่แท้จริงตระหนักว่า ยังมีพื้นที่ให้ปรับปรุงได้เสมอ
  • เป้าหมายของการประเมินตนเอง
    • ไม่จำเป็นต้องเข้มงวดกับตัวเองจนเกินไป
    • หัวใจสำคัญคือการมองหาโอกาสในการพัฒนาอย่างต่อเนื่อง
    • อย่าพอใจเพียงแค่ทำให้โค้ดทำงานได้ แต่ควรมองหาวิธีปรับปรุงด้านประสิทธิภาพ การบำรุงรักษา และความอ่านง่าย
  • ผลของการประเมินตนเองอย่างต่อเนื่อง
    • คุณภาพของโค้ดจะดีขึ้นทีละน้อย
    • ความสามารถในการแก้ปัญหาจะแข็งแกร่งขึ้นผ่านการวิจารณ์ตนเอง
    • สามารถพัฒนาความรู้และความสามารถของตนได้อย่างไม่หยุดยั้ง
โฆษณา

# รายการแนะนำสำหรับวิศวกรซอฟต์แวร์

หนังสือแนะนำ

  • Designing Data-Intensive Applications – การออกแบบแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูล
  • Introduction to Algorithms – (ฉบับภาษาเกาหลีก็ใช้ชื่อภาษาอังกฤษ)
  • Writing a C Compiler
  • Essential Maths for Data Science – คณิตศาสตร์ที่จำเป็นสำหรับนักพัฒนา
  • Elements of Information Theory

โปรเจ็กต์แนะนำ

  • Compiler - ลองเขียน compiler สำหรับภาษาที่คุณเลือก โดยอ้างอิง LLVM หรือ JVM
  • Emulator - เขียน emulator สำหรับ CPU แบบง่าย (เช่น 8086)
  • Render engine / game engine - เขียนโปรแกรมกราฟิกโดยใช้ OpenGL หรือ Vulkan
  • เขียน memory viewer และ editor - เขียนโปรแกรมที่โต้ตอบกับหน่วยความจำของโปรแกรมอื่น
  • เขียน HTTP server - เขียน HTTP server ด้วยภาษาระดับต่ำ
  • ควรหลีกเลี่ยงเว็บไซต์หรือโปรเจ็กต์ที่เรียบง่าย เพราะอาจให้ผลต่อการเรียนรู้น้อย เลือกหนึ่งโปรเจ็กต์จากที่กล่าวข้างต้น ศึกษาหัวข้อนั้น แล้วลองลงมือทำเอง

สรุป

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

สรุป

  • แก่นแท้ของการเป็นวิศวกรที่ดี
    • ไม่ใช่การรู้ภาษาการเขียนโปรแกรมมากที่สุด การเชี่ยวชาญเฟรมเวิร์กล่าสุด หรือการไล่ตามเทคโนโลยีใหม่
    • หัวใจสำคัญคือ ความเข้าใจอย่างลึกซึ้งในหลักการพื้นฐานของวิศวกรรม
    • ต้อง นำความรู้ที่เรียนไปใช้กับโปรเจ็กต์จริง, คิดอย่างมีวิจารณญาณ, และ เติบโตอย่างต่อเนื่อง
  • ลักษณะของวิศวกรระดับยอดเยี่ยม
    • ไม่หยุดเรียนรู้และแสวงหาความรู้ใหม่อยู่เสมอ
    • ตั้งคำถามกับสมมติฐานของตนเองอยู่ตลอดและมองหาวิธีปรับปรุง
    • นำความรู้ที่เรียนมาไปใช้แก้ปัญหาจริง และเติบโตร่วมกับเพื่อนร่วมงานผ่านการทำงานร่วมกัน
  • วิศวกรรมคือการเดินทางตลอดชีวิต
    • ต้องมี ความอยากรู้อยากเห็น (curiosity), ความมีวินัย (discipline) และ ความมุ่งมั่นต่อการเติบโต
    • หากนำหลักการเหล่านี้ไปปฏิบัติ คุณอาจก้าวข้ามจากการเป็นวิศวกรที่ดีไปสู่การเป็น วิศวกรที่ยิ่งใหญ่

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

 
gurugio 2025-03-11

ผมเองก็เคยมีส่วนร่วมกับงานด้านการจัดการหน่วยความจำของ Linux kernel และคิดว่าพอเข้าใจการทำงานระดับล่างอยู่พอสมควร แต่พอมองว่าท้ายที่สุดกลับต้องมาทำงานที่ไม่ได้เกี่ยวกับการพัฒนาอย่างที่ไม่ได้ตั้งใจ ก็เลยรู้สึกว่าถ้าอยากเป็นวิศวกรที่ไปได้สวย อาจต้องทำตรงกันข้ามกับสิ่งที่บทความนี้พูดก็ได้

  • ต้องตามเทคโนโลยีใหม่ ๆ ให้ทันอย่างรวดเร็ว
  • ต้องมองตลาดมากกว่าความอยากรู้อยากเห็นส่วนตัว
  • ต้องเก่งเรื่องพรีเซนต์ตัวเองมากกว่าการวิจารณ์ตัวเอง
  • ต้องโฟกัสที่การสอบโค้ดดิ้งมากกว่าหลักการพื้นฐาน/การเติบโต
    พอกลับเกาหลีมาก็พบว่าตลาดที่นี่เล็กเกินไปและการแข่งขันก็รุนแรง ทำให้มีบริษัทหรือโพสิชันที่สามารถโฟกัสกับงานพัฒนาได้จริง ๆ ไม่มากนัก และเมื่อทุกคนแย่งชิงตำแหน่งอันน้อยนิดนั้นกัน สุดท้ายก็ดูเหมือนว่าต้องโฟกัสกับสิ่งที่สะดุดตาคนอื่นให้มาก ถึงจะได้ทำงานพัฒนาที่ตัวเองอยากทำ
 
malcomjj 2025-03-15

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

 
takesixnotfive 2025-03-12

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

 
ethanhur 2025-03-11

ผมคิดว่าในเกาหลีก็มีวิศวกรเก่ง ๆ อยู่มากเหมือนกัน แต่ผมเองก็รู้สึกเสียดายในหลายจุดเพราะขนาดของตลาด

ก็เลยอดคิดไม่ได้ว่าคงดีไม่น้อยถ้าที่อย่าง FuriosaAI ประสบความสำเร็จได้มากกว่านี้

 
roxie 2025-03-16

FuriosaAI เจ๊งแล้วเหรอ...?

 
yoonda5898 2025-03-11

ก็พอจะรู้สึกร่วมอยู่บ้างนะ.. 555
หรือว่าเป็นแค่ตลาดเกาหลีเท่านั้น...

 
tsboard 2025-03-11

เมื่อไม่นานมานี้ที่บริษัท ผมเคยจัดสัมมนาเพื่อการศึกษาเกี่ยวกับภาษา Kotlin อยู่ครั้งหนึ่ง และพอลองอธิบายโดยใช้วิธีเปรียบเทียบกับภาษา C++ ที่แผนกใช้เป็นหลัก ก็จำได้ว่าได้รับการตอบรับที่ดี ทั้งที่จริงแล้วผมแทบไม่ได้ใช้ C++ เอง และสมาชิกในแผนกก็เป็นสถานการณ์ที่เพิ่งได้สัมผัส Kotlin เป็นครั้งแรก แต่ดูเหมือนว่าในหลายแง่มุมมันจะช่วยต่อการเติบโตของทุกคนได้มากครับ

 
GN⁺ 2025-03-11
ความคิดเห็นบน Hacker News
  • ชอบความเห็นเรื่องการอ่านหนังสือมาก มักเห็นบ่อยว่าวิศวกรจำนวนมากพลาดหลายอย่างไป เพราะชอบวิดีโอและโพสต์สั้นตื้น ๆ มากกว่าเอกสารและหนังสือ

    • นอกจากนี้ยังน่าแปลกใจว่าผู้คนจำนวนมากแค่ไหนที่เลือกถามคำถามเกี่ยวกับเรื่องเล็กน้อย แทนที่จะอ่านเอกสารหรืออย่างน้อยก็ลองค้นหาใน Google
    • ความสามารถในการค้นหาข้อมูลเป็นทักษะที่สำคัญมาก
  • เห็นด้วยกับหลายประเด็นที่กล่าวถึงในบทความนี้ แต่ยังไม่แน่ใจว่าการรู้พื้นฐานเชิงลึกอย่าง CPU, หน่วยความจำ, HTTP ฯลฯ ช่วยให้เป็นวิศวกรที่ดีขึ้นได้อย่างไร

    • วิศวกรส่วนใหญ่ทำงานอยู่บนชั้นนามธรรมระดับสูงมาก และภาษาและเฟรมเวิร์กที่ใช้ในระดับนั้นก็ไม่เปิดให้เข้าถึงระดับล่างอย่างหน่วยความจำได้
    • ไม่ควรไม่รู้เรื่องพื้นฐานเหล่านี้ แต่สำหรับการประยุกต์ใช้ในชีวิตการทำงานประจำวันนอกแวดวงวิชาการ ก็ยังไม่ค่อยเข้าใจนัก
 
sankalpa 2025-03-27

ผมอาจไม่ได้รู้ลึกถึงขั้นพื้นฐานอย่างแท้จริง แต่ผมเคยเห็นว่าถ้าไม่รู้พื้นฐาน จะสร้างผลลัพธ์ที่ทั้งน่าเหลือเชื่อและคาดไม่ถึงอย่างยิ่งได้จริง ๆ
ยกตัวอย่างเช่น ทำระบบให้ดึงทุกเรคอร์ดใน DB มาใส่ไว้ในหน่วยความจำทั้งหมด แล้วค่อยค้นหาในหน่วยความจำ
ตอนที่มีเรคอร์ดน้อยก็ทำงานได้ดี แต่พอเรคอร์ดมากขึ้น หน่วยความจำก็ระเบิด
ที่เขียนแบบนี้ก็เพราะไม่เข้าใจเลยว่าหน่วยความจำกับ DB ต่างกันอย่างไร
นี่เป็นแค่ตัวอย่างหนึ่ง และทุกครั้งก็มักจะอิมพลีเมนต์ไปในทิศทางที่คาดไม่ถึงจริง ๆ
โปรแกรมเมอร์ทั่วไป(?) คงจินตนาการไม่ออกจริง ๆ