3 คะแนน โดย GN⁺ 2024-01-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ทักษะการเขียนโปรแกรมเกิดขึ้นได้ยากจากหนังสือปูพื้นฐานแบบ 24 ชั่วโมงหรือ 21 วัน และสิ่งที่ได้จากการเรียนระยะสั้นมักใกล้เคียงกับ ความคุ้นเคยแบบผิวเผิน
  • งานวิจัยเรื่องความเชี่ยวชาญในหลายสาขา เช่น หมากรุก การประพันธ์ดนตรี จิตรกรรม ว่ายน้ำ และการวิจัย ชี้ว่าการไปถึงระดับสูงใช้เวลาประมาณ 10 ปี และหัวใจสำคัญไม่ใช่การทำซ้ำธรรมดา แต่คือ การฝึกอย่างมีเจตนา
  • หากต้องการเป็นโปรแกรมเมอร์ที่ดี ควรรักษาความสนุกไว้ สร้างสิ่งต่าง ๆ ด้วยตัวเอง อ่านโค้ดของผู้อื่น ทำงานร่วมกับคนที่เก่งกว่า และรับฟีดแบ็ก
  • การศึกษาในมหาวิทยาลัยและหนังสือช่วยเติมเต็มเรื่องคุณวุฒิ ระบบ และความลึกได้ แต่ไม่อาจแทนประสบการณ์จากโปรเจกต์จริงที่ต้องแก้ความล้มเหลวและรับมือการบำรุงรักษา
  • ภาษาแรกเลือกได้จากเพื่อนและชุมชน ความเรียบง่าย และสภาพแวดล้อมรันแบบโต้ตอบ สิ่งสำคัญคือเลือกสักภาษาแล้ว เริ่มอย่างต่อเนื่อง

ข้อจำกัดของคำสัญญาว่าจะเรียนโปรแกรมมิงได้ในเวลาอันสั้น

  • ในร้านหนังสือและออนไลน์มีหนังสือจำนวนมากที่อ้างว่าสอน Java, C, SQL, Ruby, อัลกอริทึม ฯลฯ ได้ภายในไม่กี่วันหรือไม่กี่ชั่วโมง
    • การค้นหาขั้นสูงใน Amazon พบว่าหนังสือตั้งแต่ปี 2000 เป็นต้นมาที่มี teach yourself hours อยู่ในชื่อเรื่องมี 512 เล่ม และ 9 ใน 10 เล่มแรกเป็นหนังสือโปรแกรมมิง
    • แม้เปลี่ยน teach yourself เป็น learn หรือเปลี่ยน hours เป็น days ก็ได้ผลลัพธ์คล้ายกัน
  • ชื่อเรื่องเหล่านี้ทำให้รู้สึกว่าผู้คนอยากเรียนโปรแกรมมิงอย่างเร่งด่วน หรือทำให้เกิดความประทับใจว่าโปรแกรมมิงเรียนง่ายกว่าสาขาอื่นมาก
  • How to Design Programs ของ Felleisen และคณะ เสียดสีแนวโน้มนี้ว่า “การเขียนโปรแกรมแย่ ๆ นั้นง่าย แม้แต่คนโง่ก็เรียนได้ใน 21 วัน”

“Teach Yourself C++ in 24 Hours” อาจหมายถึงอะไรได้จริง ๆ

  • Teach Yourself

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

    • หากรู้ภาษาอื่นอยู่แล้ว อาจเรียนไวยากรณ์บางส่วนของ C++ ได้ภายใน 24 ชั่วโมง
    • แต่ยากที่จะเรียนรู้ว่า C++ เหมาะกับอะไร ไม่เหมาะกับอะไร และควรใช้ภาษานี้จริง ๆ อย่างไร
    • ดังคำกล่าวของ Alan Perlis ว่า “ภาษาที่ไม่เปลี่ยนวิธีคิดของคุณเกี่ยวกับการเขียนโปรแกรม ก็ไม่คุ้มค่าที่จะรู้จัก”
  • 24 Hours

    • คุณอาจเรียน C++, JavaScript, Processing หรือสิ่งคล้ายกันได้เล็กน้อยเพื่อเชื่อมต่อกับเครื่องมือเฉพาะบางอย่าง
    • ในกรณีนี้ สิ่งที่เรียนใกล้เคียงกับ วิธีทำงานเฉพาะอย่างหนึ่ง มากกว่าการเรียนโปรแกรมมิงเอง

ความเชี่ยวชาญต้องใช้เวลา

  • งานวิจัยของ Bloom, Bryan & Harter, Hayes, Simon & Chase และคนอื่น ๆ แสดงผลว่า การสร้างความเชี่ยวชาญในหลายสาขาใช้เวลาประมาณ 10 ปี
    • ตัวอย่างสาขารวมถึงหมากรุก การประพันธ์ดนตรี โทรเลข จิตรกรรม เปียโน ว่ายน้ำ เทนนิส การวิจัยด้านประสาทจิตวิทยา และโทโพโลยี
  • หัวใจสำคัญไม่ใช่การทำซ้ำธรรมดา แต่คือ การฝึกอย่างมีเจตนา (deliberative practice)
    • เลือกงานที่ยากกว่าความสามารถปัจจุบันเล็กน้อย
    • วิเคราะห์ผลลัพธ์ระหว่างทำและหลังทำ
    • แก้ข้อผิดพลาดแล้วทำซ้ำอีกครั้ง
  • Mozart เป็นอัจฉริยะด้านดนตรีตั้งแต่อายุ 4 ขวบ แต่ต้องใช้เวลาเพิ่มอีก 13 ปีจึงสร้างดนตรีระดับโลกได้
  • Beatles ได้รับความสนใจจากรายการ Ed Sullivan ในปี 1964 และเพลงฮิตอันดับหนึ่งหลายเพลง แต่พวกเขาเริ่มเล่นในคลับเล็ก ๆ ที่ Liverpool และ Hamburg ตั้งแต่ปี 1957 และ Sgt. Pepper’s ซึ่งประสบความสำเร็จอย่างสูงในเชิงวิจารณ์ ออกมาในปี 1967
  • Malcolm Gladwell ทำให้คำว่า 10,000 ชั่วโมง เป็นที่รู้จักในวงกว้าง แต่สิ่งสำคัญตรงนี้ไม่ใช่ตัวเลขที่แม่นยำ หากเป็นการฝึกฝนอย่างต่อเนื่องตลอดหลายปี
  • สำหรับ K. Anders Ericsson ตัวเลข 10,000 ชั่วโมงเป็นตัวเลขที่ช่วยให้รู้สึกได้ว่า แม้แต่คนมีพรสวรรค์ก็ยังต้องใช้เวลาหลายปี โดยฝึกสัปดาห์ละ 10–20 ชั่วโมง เพื่อไปถึงระดับสูงสุด
  • ตัวเลขเดียวไม่อาจเป็นคำตอบทั้งหมดได้
    • ยากที่จะมองว่าโปรแกรมมิง หมากรุก หมากฮอส และดนตรีต้องใช้เวลาเท่ากันเป๊ะทั้งหมด
    • และยากที่จะมองว่าทุกคนเรียนรู้ด้วยความเร็วเท่ากัน

วิธีปฏิบัติเพื่อเป็นโปรแกรมเมอร์

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

ประสบการณ์ที่กว้างขวางกับภาษาและระบบ

  • ควรเรียน ภาษาโปรแกรมมิง อย่างน้อยหกภาษา
    • ภาษาที่เน้น abstraction แบบคลาส: Java, C++
    • ภาษาที่เน้น abstraction แบบฟังก์ชัน: Lisp, ML, Haskell
    • ภาษาที่รองรับ abstraction เชิงไวยากรณ์: Lisp
    • ภาษาที่รองรับข้อกำหนดแบบประกาศ: Prolog, C++ templates
    • ภาษาที่เน้นการทำงานพร้อมกัน: Clojure, Go
  • ต้องจำไว้ว่า “computer science” มีคำว่า computer อยู่ด้วย
    • ควรรู้เวลาที่ใช้ในการรันคำสั่ง การดึงคำจากหน่วยความจำ cache miss การอ่านดิสก์แบบลำดับ และการ seek ดิสก์
  • การลองมีส่วนร่วมในกิจกรรม มาตรฐานภาษา ก็ช่วยได้
    • อาจเป็นกิจกรรมใหญ่ เช่น คณะกรรมการ ANSI C++ หรือระดับการกำหนดสไตล์โค้ดภายในท้องถิ่นว่าจะเยื้อง 2 ช่องหรือ 4 ช่อง
    • คุณจะได้เรียนรู้ว่าคนอื่นชอบอะไรในภาษา และทำไมพวกเขาจึงรู้สึกแรงกล้ากับสิ่งนั้น
  • ในกิจกรรมมาตรฐาน ยังต้องมี วิจารณญาณ ที่จะถอนตัวออกมาให้เร็วที่สุดเท่าที่ทำได้ด้วย

หนังสือและการศึกษาเพียงอย่างเดียวไม่เพียงพอ

  • แม้อ่านหนังสือเกี่ยวกับการเลี้ยงลูกมามาก เมื่อมีลูกคนแรกก็ยังอาจรู้สึกเหมือนมือใหม่ และเมื่อลูกคนที่สองเกิด ก็มักพึ่งประสบการณ์ส่วนตัวมากกว่าจะกลับไปอ่านหนังสืออีกครั้ง
  • No Silver Bullet ของ Fred Brooks เสนอแผนสามส่วนเพื่อค้นหานักออกแบบซอฟต์แวร์ที่ยอดเยี่ยม
    • ระบุตัวนักออกแบบที่โดดเด่นให้เร็วที่สุดเท่าที่ทำได้อย่างเป็นระบบ
    • มอบหมายที่ปรึกษาอาชีพให้รับผิดชอบการพัฒนาและดูแลแฟ้มประวัติอาชีพ
    • เปิดโอกาสให้นักออกแบบที่กำลังเติบโตได้พบปะและกระตุ้นกันและกัน
  • Alan Perlis กล่าวว่า “ทุกคนเรียนการแกะสลักได้ แต่สำหรับ Michelangelo คงต้องสอนเขาว่าจะไม่แกะสลักอย่างไร”
  • โปรแกรมเมอร์ที่ยอดเยี่ยมอาจมีคุณลักษณะภายในบางอย่างที่เหนือกว่าการฝึกฝน แต่ไม่ตัดสินแน่ชัดว่าสิ่งนั้นเป็นมาแต่กำเนิดหรือพัฒนาจากความขยัน
  • หนังสือ Java, Ruby, JavaScript, PHP อาจมีประโยชน์ แต่จะไม่เปลี่ยนชีวิตหรือความเชี่ยวชาญทั้งหมดได้ภายใน 24 ชั่วโมงหรือ 21 วัน
  • การทำงานหนักเพื่อพัฒนาอย่างต่อเนื่องตลอด 24 เดือนเป็นจุดเริ่มต้นที่มีความหมาย

ความรู้สึกเรื่องเวลาการทำงานของคอมพิวเตอร์

  • เวลาโดยประมาณของงานต่าง ๆ บน PC ทั่วไปมีดังนี้
    • การรันคำสั่งทั่วไป: 1 นาโนวินาที
    • ดึงข้อมูลจากหน่วยความจำ L1 cache: 0.5 นาโนวินาที
    • branch prediction ล้มเหลว: 5 นาโนวินาที
    • ดึงข้อมูลจากหน่วยความจำ L2 cache: 7 นาโนวินาที
    • ล็อก/ปลดล็อก Mutex: 25 นาโนวินาที
    • ดึงข้อมูลจากหน่วยความจำหลัก: 100 นาโนวินาที
    • ส่ง 2KB ผ่านเครือข่าย 1Gbps: 20,000 นาโนวินาที
    • อ่าน 1MB แบบลำดับจากหน่วยความจำ: 250,000 นาโนวินาที
    • seek ไปยังตำแหน่งใหม่บนดิสก์: 8,000,000 นาโนวินาที
    • อ่าน 1MB แบบลำดับจากดิสก์: 20,000,000 นาโนวินาที
    • แพ็กเก็ตเดินทางไป-กลับระหว่างสหรัฐฯ กับยุโรป: 150 มิลลิวินาที หรือ 150,000,000 นาโนวินาที

เกณฑ์ในการเลือกภาษาโปรแกรมมิงภาษาแรก

  • ไม่มีคำตอบเดียวที่ถูกต้องสำหรับภาษาแรก
  • ใช้ เพื่อนและชุมชน เป็นเกณฑ์ได้
    • คล้ายกับคำตอบเวลาเลือกระบบปฏิบัติการว่าให้ใช้สิ่งที่เพื่อนใช้
    • ข้อได้เปรียบจากการเรียนกับเพื่อนสามารถชดเชยความแตกต่างของตัวระบบปฏิบัติการหรือภาษาได้
    • ควรพิจารณาด้วยว่าภาษาที่เลือกมีชุมชน หนังสือ เว็บไซต์ และฟอรัมออนไลน์ที่กำลังเติบโตหรือไม่
  • ความเรียบง่าย สำคัญ
    • C++ และ Java ถูกออกแบบมาให้โปรแกรมเมอร์ที่มีประสบการณ์ใช้พัฒนาเชิงอาชีพในทีมขนาดใหญ่ และมีส่วนซับซ้อนที่คำนึงถึงประสิทธิภาพการรัน
    • ผู้เริ่มต้นไม่จำเป็นต้องมีความซับซ้อนนั้น
  • สภาพแวดล้อมรันแบบโต้ตอบ ทำให้เรียนรู้ง่ายขึ้น
    • เหมือนการเล่นเปียโนที่เรียนรู้ได้ง่ายกว่าเมื่อกดคีย์แล้วได้ยินเสียงทันที เทียบกับวิธีแบบแบตช์ที่ต้องฟังหลังเล่นทั้งเพลงจบ
    • ในการเขียนโปรแกรม ภาษาที่มีโหมดโต้ตอบจึงได้เปรียบ
  • ตามเกณฑ์เหล่านี้ แนะนำ Python หรือ Scheme เป็นภาษาแรก
  • JavaScript อาจเป็นตัวเลือกได้ ไม่ใช่เพราะเป็นภาษาที่ออกแบบมาสมบูรณ์แบบสำหรับผู้เริ่มต้น แต่เพราะมีบทเรียนออนไลน์จำนวนมาก
  • ผู้เรียนที่อายุยังเป็นเลขหลักเดียวอาจชอบ Alice, Squeak, Blockly และผู้เรียนที่อายุมากกว่าก็อาจสนุกกับสิ่งเหล่านี้ได้เช่นกัน
  • สิ่งสำคัญคือเลือกสักอย่างแล้ว เริ่มต้น

หนังสือและทรัพยากรแนะนำ

  • แม้หนังสืออย่างเดียวไม่เพียงพอ แต่ทรัพยากรต่อไปนี้ช่วยในการเรียนรู้ได้
  • Structure and Interpretation of Computer Programs

    • Structure and Interpretation of Computer Programs เป็นหนังสือปูพื้นฐานวิทยาการคอมพิวเตอร์ที่ยอดเยี่ยมมาก และสอนโปรแกรมมิงในฐานะวิธีทำความเข้าใจวิทยาการคอมพิวเตอร์
    • สามารถดู วิดีโอบรรยาย และ ตัวเล่มออนไลน์ฉบับเต็ม ได้
    • เป็นหนังสือที่ท้าทาย จึงอาจคัดผู้เรียนบางส่วนที่อาจประสบความสำเร็จด้วยแนวทางอื่นออกไป
  • How to Design Programs

    • How to Design Programs เป็นหนึ่งในหนังสือที่ดีซึ่งใช้ Scheme อธิบายวิธีออกแบบโปรแกรมจริงอย่างสง่างามในแนวฟังก์ชัน
  • Python

  • Oz

    • Concepts, Techniques, and Models of Computer Programming มีบางคนมองว่าเป็นผู้สืบทอดสมัยใหม่ของ Abelson & Sussman
    • หนังสือครอบคลุมแนวคิดใหญ่ ๆ ของโปรแกรมมิงอย่างกว้างขวาง และแม้จะใช้ภาษา Oz ซึ่งไม่เป็นที่รู้จักแพร่หลาย แต่ก็สามารถเป็นพื้นฐานสำหรับการเรียนภาษาอื่นได้

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

 
GN⁺ 2024-01-16
ความคิดเห็นจาก Hacker News
  • ในปี 1999 ผมซื้อ "Sams Teach Yourself C++ in 24 Hours" ที่ CompUSA แล้วพนักงานแคชเชียร์เห็นก็หัวเราะ ก่อนจะแนะนำบทความนี้ให้
    ตอนอายุ 16 ผมกำลังดูหนังสือโปรแกรมมิงที่ Borders แล้วมีคนยื่น "The C Programming Language" ให้ และนั่นเปลี่ยนชีวิตผม
    เส้นทางอาชีพส่วนใหญ่ของผมก่อรูปขึ้นจากการบังเอิญได้เจอนักพัฒนาหรือคนที่สนใจโปรแกรมมิงในโลกจริง

    • หนังสือบางเล่มในกลุ่มนั้นห่วยจนน่าขำจริง ๆ แต่ในยุคนั้น หนังสือสักเล่มให้ความรู้สึกเหมือนเป็น กุญแจเริ่มต้น ที่จะทำให้ไอเดียโปรแกรมแปลก ๆ ในหัวกลายเป็นของจริงได้
      ครั้งสุดท้ายที่รู้สึกแบบนั้นคือออกจาก Microcenter พร้อม MacBook เครื่องใหม่กับ iPod Touch แล้วรู้สึกว่าพร้อมจะสร้าง Angry Birds ตัวต่อไปแล้ว
    • หนังสือที่เปลี่ยนชีวิตผมคือ คู่มือ BASIC ที่มากับ C64
      ราว 8 ปีต่อมา ตอนซื้อ Turbo Pascal ก็มีเอกสารที่จำเป็นทั้งหมดมาให้ ทำให้เรียนรู้ได้เร็ว และตอนเริ่มใช้ Linux ในปี 1995 ผมก็เรียนรู้แทบทุกอย่างที่จำเป็นต่อการเขียนโปรแกรมบนระบบนั้นได้จากหน้า man กับเอกสาร info เท่านั้น
      ผมยังจำได้ว่าช่วงปลายยุค 90 เคยอ่านคู่มือ EGCS ตั้งแต่ต้นจนจบ
      คิดถึงยุคที่ซอฟต์แวร์มาพร้อมข้อมูลที่จำเป็นทั้งหมด และเสียดายที่ตอนนี้ต้องค้น Google เพื่อหาหน้าผลิตภัณฑ์หรือคู่มือ
      อีกสัก 5 ปีข้างหน้า ข้อมูลที่เกี่ยวข้องคงถูกโพสต์ไว้แต่ใน Discord และไม่ถูกทำดัชนี จนเราคงได้คิดถึงแม้แต่ การค้น Google ที่เคยใช้แทนคู่มือ
      ช่วงต้นทศวรรษ 2000 ผมก็เรียน socket programming บน Linux และ FreeBSD จากหน้า man ล้วน ๆ และเมื่อมาอ่านหนังสือของ Stevens ภายหลัง ก็อ่านได้เร็วมากเพราะรู้จากหน้า man และมีประสบการณ์เขียนโปรแกรมมาบ้างแล้ว
    • จุดเริ่มต้นของผมคือ "Visual Basic Professional 3.0 Programming by Thomas W. Torgerson" ที่ซื้อจาก Barnes and Nobles ในปี 1997
      ผมอยากเรียนวิธีทำ punter/prog หลังดาวน์โหลด Visual Basic 3.0 จาก AOL มาเป็นไฟล์แนบอีเมล 100 ไฟล์
      ผมคัดลอกโค้ดจากหนังสือเพื่อให้เล่นไฟล์เสียงตอนเริ่มโปรแกรม และตอนมันใช้งานได้จริง ผมทึ่งมาก
      หลังจากนั้น การได้สร้างอาชีพในสาย พัฒนาซอฟต์แวร์ ถือเป็นเกียรติอย่างยิ่ง
    • ไม่ควรหัวเราะใส่เด็กผู้หญิงตัวเล็ก ๆ ที่อยู่ตรงชั้นหนังสือโปรแกรมมิง
      ในยุค 90 เป็นเรื่องค่อนข้างปกติที่จะไม่ได้คำแนะนำอะไรเลย มีแต่ ปฏิกิริยาแบบไม่อยากเชื่อ กลับมา
    • ผมยืนยันได้จนถึงที่สุดว่า "The C Programming Language" เป็นหนังสือภาษาโปรแกรมมิงที่ดีที่สุดเท่าที่เคยอ่าน
      นักพัฒนาทุกคนควรอ่านและเรียน C กับ K&R อย่างน้อยสักครั้ง แม้สุดท้ายจะลืม C ไปในไม่ช้าก็ตาม
  • บทความนี้มีความหมายพิเศษสำหรับผม เพราะอ่านครั้งแรกตอนเป็นวัยรุ่นที่เพิ่งเริ่มเรียนเขียนโค้ด
    พอกลับมาอ่านอีกครั้งก็แปลกใจที่เห็น Malcolm Gladwell เพราะจำได้ว่า Outliers กลายเป็นประเด็นดังหลังจากนั้นมาก
    พอเห็นการอ้างถึง Ratatouille ถึงได้รู้ว่าบทความนี้ถูกอัปเดตหลังเผยแพร่ในปี 1998 และต้นฉบับยังอยู่ใน archive โดยสั้นกว่ามาก: https://web.archive.org/web/19980206223800/https://norvig.co...
    น่านับถือที่ Peter Norvig คอยปรับแก้บทความของตัวเองต่อเนื่องมาหลายปี

    • อาจเพราะเคยถูกสั่งให้อ่านตอนมัธยม ตอนนี้ผมก็ยังไม่ค่อยชอบ Gladwell
      เขาถูกอ้างถึงบ่อยเกินไป และ กฎ 10,000 ชั่วโมง ตอนนี้ให้ความรู้สึกเหมือนเป็นมีมไปแล้ว
    • นึกถึงตัวเองเมื่อ 10 ปีก่อนที่นั่งอ่านบทความนี้ในห้องคอมพิวเตอร์ของห้องสมุดมหาวิทยาลัย
      ตอนนี้ผมเรียนโปรแกรมมิงด้วยตัวเองได้แล้ว แต่เส้นทางนั้นยากและคดเคี้ยวกว่าที่จินตนาการไว้ตอนนั้นมาก
    • ก่อน "Outliers" ก็มี "The Tipping Point" กับ "Blink" อยู่แล้ว
  • ผมเองก็เป็นคนที่เรียนจากหนังสือได้ดี แต่ท่าทีแบบนั้นมักเหมาะกับ สาขาที่ไม่ใช่คอมพิวเตอร์ ซึ่งเปลี่ยนแปลงช้ากว่า เช่น คณิตศาสตร์และฟิสิกส์
    ตัวอย่างแย่ ๆ ล่าสุดคือหนังสือ Quantum Programming ของ O'Reilly ซึ่งไม่ได้ลงรายละเอียดวงจรควอนตัมมากพอให้ผมเข้าใจจริง ๆ ว่ากำลังทำอะไรอยู่
    แต่ก็อาจเป็นได้ว่านั่นเป็นความโอ้อวดของควอนตัมคอมพิวติ้งเอง และ Nielsen/Chuang ที่กำลังอ่านอยู่ตอนนี้แม้จะเป็นเชิงทฤษฎีมาก แต่ก็อธิบายชัดเจนมาก จนผมอาจกลับไปอ่านเล่มนั้นอีกทีภายหลัง
    หนังสือเป็นเพียงเครื่องมือการเรียนรู้ และโปรเจกต์งานอดิเรกก็อาจเป็นเครื่องมือเรียนรู้ที่มีประสิทธิภาพยิ่งกว่า เพราะช่วยสะสมประสบการณ์
    ถึงอย่างนั้น ความรู้คือพลัง และหนังสือก็ยอดเยี่ยมในการช่วยชี้ทิศทางที่ถูกต้อง โดยมีเงื่อนไขว่าคุณเจอหนังสือที่ตรงกับความต้องการของตัวเอง
    ผมรู้จักบางคนที่ถ้าไม่มั่นใจว่าจะอ่านหนังสือจนจบได้ ก็จะไม่เปิดอ่านเลย ซึ่งผมมองว่าทัศนคติแบบนั้นไร้สาระ
    ผมเพิ่งสั่งหนังสือ Generative Deep Learning ของ O'Reilly ไป และถ้าได้ประเด็นสักสองสามอย่างที่เอาไปใช้ในอาชีพได้ ก็คุ้มพอแล้ว
    อย่างน้อยมันก็คงดูดีบนชั้นหนังสือ

    • หลักการพื้นฐาน ไม่เปลี่ยน
      ทุกสัปดาห์มี frontend framework ใหม่ออกมา แต่สุดท้ายทั้งหมดก็สร้าง HTML ออกมาอยู่ดี
  • เป็นเธรดย้อนหลัง 16 ปี
    การรีโพสต์ถือว่าโอเคเมื่อผ่านไปราว 1 ปี และลิงก์ไปยังเธรดเก่า ๆ มีไว้สำหรับผู้อ่านที่อยากอ่านเพิ่มเติม
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=33287618 - ตุลาคม 2022, ความคิดเห็น 112 รายการ
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=27411276 - มิถุนายน 2021, ความคิดเห็น 115 รายการ
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=20543495 - กรกฎาคม 2019, ความคิดเห็น 87 รายการ
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=16574248 - มีนาคม 2018, ความคิดเห็น 51 รายการ
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=9395284 - เมษายน 2015, ความคิดเห็น 61 รายการ
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=5519158 - เมษายน 2013, ความคิดเห็น 86 รายการ
    Teach Yourself Programming in Ten Years by Peter Norvig (2001) - https://news.ycombinator.com/item?id=3439772 - มกราคม 2012, ความคิดเห็น 29 รายการ
    Teach Yourself Programming in 10 Years. - https://news.ycombinator.com/item?id=1060176 - มกราคม 2010, ความคิดเห็น 32 รายการ
    Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=191235 - พฤษภาคม 2008, ความคิดเห็น 19 รายการ
    Norvig: Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=43243 - สิงหาคม 2007, ความคิดเห็น 7 รายการ

    • อยากรู้ว่าคนที่เคยคอมเมนต์ในช่วงปี 2007–2013 จะมาแชร์ได้ไหมว่า ตลอด 10 ปีที่ผ่านมาได้เรียนรู้อะไรบ้าง
    • ถ้ามีวิธีแจ้งให้ทราบถึงเธรดเก่า ๆ ก่อนโพสต์ก็คงดี
    • ไม่แน่ใจว่านี่เป็นคำวิจารณ์ว่ามีการรีโพสต์มากเกินไป หรือหมายความว่าการซ้ำกันปีละครั้งประมาณนี้เป็นเรื่องที่ดีต่อสุขภาพของชุมชน
  • น่าประทับใจที่ ลิงก์ Amazon.com เก่า ๆ บนหน้านั้น แม้จะมีพารามิเตอร์ query ค่อนข้างซับซ้อนต่อท้ายอยู่ ก็ยังคืนผลลัพธ์ที่เกี่ยวข้องได้อยู่
    เป็นตัวอย่างที่ดีของ “Cool URIs don't change”
    [0] http://www.amazon.com/gp/search/ref=sr_adv_b/?search-alias=s...
    [1] https://www.w3.org/Provider/Style/URI

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

    • ผมจบบูตแคมป์มา และเขียนโปรแกรมเป็นอาชีพมา 8 ปีแล้ว
      สมัยมัธยมและมหาวิทยาลัยเคยลงเรียนวิชาเขียนโปรแกรมเล่น ๆ อยู่ไม่กี่วิชา แต่ความรู้มีจำกัดมาก
      บูตแคมป์นั้นสมชื่อจริง ๆ เวลาเรียนหลักคือ 9 โมงถึง 5 โมง แต่หลายคนมาถึงตอน 7 โมงเช้าและออกไปตอน 4 ทุ่ม
      เสาร์อาทิตย์ก็ไปด้วย บางทีก็หยุดแค่วันอาทิตย์
      ผมตั้งใจเลือกบูตแคมป์ในเมืองอื่นเพื่อไม่ให้ชีวิตสังคมมารบกวน
      เน้น Ruby กับ JavaScript และไม่กี่เดือนหลังจบก็ได้งานเป็นอินเทิร์น C#/.NET
      ผมเลือกตำแหน่งอินเทิร์นเพราะคิดว่าการโน้มน้าวให้ได้ตำแหน่งจูเนียร์ดีเวลลอปเปอร์ทันทีน่าจะยาก และภายใน 2 สัปดาห์ก็ได้เลื่อนเป็นจูเนียร์ดีเวลลอปเปอร์
      โรงเรียนนั้นถูก Kaplan ซื้อกิจการไปแล้วก็หายไป
    • คนที่ประสบความสำเร็จจากบูตแคมป์มีแต่พวกที่ฉลาดมากอยู่แล้ว หรือมาจากพื้นฐานด้านเทคโนโลยี/คณิตศาสตร์ขั้นสูง
    • ผมเลิกเรียนวิทยาการคอมพิวเตอร์หลังจาก 3 เดือน และก่อนหน้านั้นไม่เคยเขียนโปรแกรมมาก่อน
      ผมเรียนพื้นฐาน JavaScript ด้วยตัวเองอยู่ 8 เดือนในชั้นใต้ดินบ้านแม่ แล้วก็หางานได้
      หลังจากนั้นก็ทุ่มเวลาให้กับการเขียนโปรแกรมมหาศาล จนถึงตอนนี้น่าจะเกินหลายหมื่นชั่วโมงแล้ว
      เคยทำคอมไพเลอร์ กราฟิก 3D เซมิคอนดักเตอร์ และเกมเอนจิน
      ประสบการณ์ของผมดูเหมือนจะสนับสนุนทั้งสองฝั่ง
      ราวปี 2012 การเข้าสู่วงการด้วยประสบการณ์น้อยยังค่อนข้างง่าย แต่หลังจากนั้น ถ้าจะเป็นวิศวกรที่ดีซึ่งคนอยากจ้างเพราะมีโปรเจกต์น่าสนใจ ก็ต้องใช้ความพยายามมหาศาล
    • เคยจ้างคนที่มาจากบูตแคมป์ แต่ไม่เคยผ่านบูตแคมป์เอง
      จากข้อมูลที่มีจำกัด ก็เหมือนกับนักพัฒนาที่ผ่านการศึกษาแบบดั้งเดิม คือ แล้วแต่ดวง
      ผลลัพธ์ที่ดีที่สุดคือกรณีคนที่มีการฝึกฝนสายคลาสสิกอย่างฟิสิกส์ เคมี วิศวกรรม แล้วอยากเปลี่ยนอาชีพ พวกเขาเหมือนจูเนียร์ระดับสูงที่เรียนรู้ได้เร็ว
      ถ้าอยากใส่พนักงานใหม่ที่มีแรงจูงใจเข้าไปในพื้นที่ซอฟต์แวร์ที่การเขียนโปรแกรมล้วน ๆ ไม่ใช่เรื่องสำคัญมาก ก็อาจเป็นการจ้างที่ยอดเยี่ยม
      ส่วนเบี่ยงเบนมาตรฐานกว้างมาก แต่ไม่แน่ใจว่ากว้างกว่าผู้จบหลักสูตร 2 ปีหรือไม่
    • ผมผ่าน โปรแกรมบัณฑิตจบใหม่ ของบริษัทที่ปรึกษา ซึ่งฝึกอบรม 3 เดือนแล้วให้ทำงานตามสัญญา 2 ปี
      ตอนมหาวิทยาลัยเรียนสายมนุษยศาสตร์ และไม่เคยโค้ดมาก่อน
      2 ปีแรกหนักมากจริง ๆ เพราะไม่มีพื้นฐาน เลยรู้สึกเหมือนว่ายทวนกระแสน้ำตลอดเวลา
      กว่าจะรู้สึกว่าสร้างคุณค่าได้อย่างอิสระก็เป็นช่วงท้ายของโปรแกรม 2 ปีแล้ว
      ความรู้ของผมค่อนข้างเน้นการประยุกต์ใช้งาน และเพราะขาดพื้นฐานวิทยาการคอมพิวเตอร์ บางครั้งเลยยากกว่าเดิมเพราะต้องค่อย ๆ เรียนพื้นฐานแทรกไปด้วย
      อย่างไรก็ตาม บทบาทปัจจุบันของผมคือ data engineer ดังนั้นด้านวิทยาการคอมพิวเตอร์แบบดั้งเดิมอย่างโครงสร้างข้อมูลและอัลกอริทึมจึงถูก要求ค่อนข้างน้อยกว่า
  • แก่นสำคัญคือ การฝึกฝนอย่างตั้งใจ
    ไม่ใช่แค่ทำซ้ำ ๆ แต่ต้องท้าทายโจทย์ที่ยากกว่าความสามารถปัจจุบันเล็กน้อย ลองทำ วิเคราะห์ระหว่างทำและหลังทำ แก้ข้อผิดพลาด แล้วทำซ้ำอีก
    ถ้าจะเรียนรู้อย่างต่อเนื่อง ก็ต้องท้าทายตัวเองและก้าวออกจาก comfort zone

    • สงสัยว่าเครื่องมือ AI อย่าง GitHub Copilot จะเปลี่ยนนิสัยการเรียนรู้ของผู้คนอย่างไร
      ใช้มาหลายเดือนแล้วบังเอิญถูกล็อกเอาต์ ตอนนี้กลับรู้สึกว่าความไม่สะดวกเล็ก ๆ ของการไปค้นเอกสารทางการนั้นมีคุณค่า
      สัปดาห์แรกรู้สึกแปลกใจว่าตัวเองช้าลงมาก
      การยอมผ่านขั้นตอนเพิ่มเติมเพื่อเรียนจากแหล่งข้อมูลปฐมภูมิ และบางครั้งเห็นคุณค่าของความไม่สะดวก เป็นสิ่งสำคัญต่อการเติบโตเป็นโปรแกรมเมอร์
    • ในฐานะนักพัฒนาซอฟต์แวร์และคนที่มีประสบการณ์เป็นติวเตอร์/ผู้ช่วยสอน ผมกังวลว่านักพัฒนารุ่นถัดไปจะเขียนโค้ดได้จริงหรือไม่
      โดยเฉพาะถ้าทำงานระดับปี 1–2 ให้เสร็จด้วย Copilot อย่างเดียว ก็อาจเท่ากับทำให้ความมีประโยชน์ของตัวเองถูกทำให้เป็นอัตโนมัติจนหายไป
      อีกด้านหนึ่ง เราก็เคยพูดคล้าย ๆ กันเกี่ยวกับ “เด็ก iPad”
      iPad ก็มีระบบไฟล์ และแอปต่าง ๆ ก็มีฟีเจอร์มากขึ้นเรื่อย ๆ ภายใต้แนวทางที่ Apple อนุมัติ ดังนั้นผมไม่คิดว่ามันเป็นการประมาณโน้ตบุ๊กที่แย่นัก
      ผมเองก็ใช้ Copilot แต่ใช้หลัก ๆ เป็น ระบบเติมคำอัตโนมัติที่ฉลาด สำหรับตั้งค่าตัวแปรหรืองานซ้ำ ๆ เล็กน้อย
      มันมีไว้ประหยัดเวลาที่ควรใช้ไปกับการวางบริบทของการแก้ปัญหาและการโต้ตอบกับเพื่อนร่วมทีม ไม่ใช่สิ่งที่จะมาแทนวิศวกร
    • พูดถูก แต่ถ้าจะอธิบายให้ดีกว่านั้น แก่นสำคัญคือ การทำเป็นงานอดิเรก
      ความเชี่ยวชาญมาจากประสบการณ์ และประสบการณ์จะสะสมได้ก็ต่อเมื่อคุณกลับมาทำมันเรื่อย ๆ
      บางคนผลักดันตัวเองให้ลำบากไม่รู้จบได้ แต่สำหรับคนทั่วไป การเริ่มจากการหาส่วนหนึ่งของซอฟต์แวร์ที่รักได้จริง ๆ แล้วค่อย ๆ บ่มเพาะมัน น่าจะเป็นทางที่ฉลาดกว่า
    • ต้องชอบการถูกท้าทาย
      ผมเคยเห็นคนที่ฉลาดกว่าผมอย่างชัดเจนในสายโค้ด ออกจากสายนี้ไปเพราะฉลาดเกินไป
      เพราะพวกเขารู้สึกว่ามันไม่ท้าทายอีกต่อไป หรือเหนื่อยกับความท้าทายผิดประเภทอย่าง “การรอให้คนอื่นตามทัน”
      ส่วนใหญ่เป็นคนที่ทำงานกับเทคโนโลยีล้ำสมัยซึ่งมักกลายเป็นมาตรฐานในอีกไม่กี่ปีต่อมา
      ถ้าแรงขับเคลื่อนคือความหลงใหล ก็อาจนับว่าโชคดีที่ไม่ได้ฉลาดเกินไป
    • ในทฤษฎีการศึกษา เรียกสิ่งนี้ว่า zone of proximal development
  • แม้จะระบุว่าเป็นบทความปี 1998 แต่มีการพูดถึง Clojure และ Go จึงดูเหมือนเป็นบทความที่ถูกอัปเดตภายหลัง

    • ท้ายหน้ามีเขียนว่า Peter Norvig (Copyright 2001—2014)
  • เป็นบทความที่ดี
    ถ้าคิดจากวันละ 8 ชั่วโมง สัปดาห์ละ 40 ชั่วโมง การจะสะสมให้ครบ 10,000 ชั่วโมง ต้องใช้เวลา 250 สัปดาห์
    ต่อให้เขียนโปรแกรมแทบไม่หยุดก็ประมาณ 5 ปี และในความเป็นจริงมักใกล้ 10 ปีกว่าจะถึงเป้าหมาย

    • ในทางปฏิบัติขึ้นอยู่กับว่าคุณสนุกกับการเขียนโปรแกรมแค่ไหน
      ถ้าเขียนโปรแกรมเยอะ ๆ ปีละ 3,000 ชั่วโมงก็ไปถึงได้ไม่ยาก
      ผมเขียนโปรแกรมวันละ 12 ชั่วโมงในแทบทุกวัน และสัปดาห์ละ 6–7 วันในแทบทุกสัปดาห์
      วันที่มีแรงจูงใจสูงมากก็ทำถึง 18 ชั่วโมง
      ผมทำแบบนี้มาเกือบ 10 ปีแล้ว และบางครั้งก็พักประมาณหนึ่งเดือน โดยลดลงเหลือสัปดาห์ละ 3–4 วันแต่ยังทำเป็นเวลานาน
      ต่อให้คำนวณแบบอนุรักษนิยมก็ราวปีละ 3,500 ชั่วโมง
      เหตุผลที่ทำงานเยอะขนาดนี้คือผมรักการเขียนโปรแกรมจริง ๆ และนอกจากการโต้คลื่นตอนเช้าแล้ว ก็ไม่มีอะไรที่ผมอยากทำมากกว่านี้
    • heuristic 10,000 ชั่วโมง ไม่ได้แม่นยำเป็นพิเศษ แค่เป็นที่รู้จักเท่านั้น
      ถึงอย่างนั้น การจะเป็นนักพัฒนาที่แข็งแกร่งโดยทั่วไปก็ดูเหมือนต้องใช้ประสบการณ์ทำงานจริงราว 10 ปี
      ผมไม่เคยเห็นใครไปถึงระดับนั้นจริง ๆ ภายใน 5 ปี
      คนที่หมกมุ่นทำมาตั้งแต่วัยรุ่นอาจลดเวลาได้หลายปี แต่พอถึงจุดหนึ่งช่วงเวลานั้นก็เริ่มซ้อนทับกัน
      แน่นอนว่ายังมีคำพูดเก่า ๆ ว่าปัญหาคือ “ประสบการณ์ 1 ปีที่ทำซ้ำ 10 ครั้ง”
      ผมเห็นนักพัฒนาที่มีประสบการณ์เกิน 10 ปีแต่ยังไม่แข็งแกร่งอยู่มากมาย
    • ทำงานสัปดาห์ละ 40 ชั่วโมงเป็นเวลา 5 ปี นั่นก็แทบจะเป็นอาชีพซอฟต์แวร์อยู่แล้วไม่ใช่หรือ?
      ดูเหมือนแค่เข้าไปในบทบาท junior แล้วทำงานไต่ระดับไปตลอด 5 ปีก็พอ
    • อาชีพไหน ๆ ก็เป็นแบบเดียวกัน
      สัญชาตญาณจะค่อย ๆ สั่งสมจากการทำโจทย์ที่ยากขึ้นเรื่อย ๆ
      ถึงจุดหนึ่ง คุณจะสามารถเชื่อมโยงและนำสิ่งที่รู้ในด้านหนึ่งไปใช้กับอีกด้านหนึ่งได้ และตอนนั้นเองที่ ความคิดสร้างสรรค์ เริ่มทำงาน
  • ผมหาแหล่งที่มาของวิดีโอที่ดูเมื่อ 5–6 ปีก่อนไม่เจอ แต่มันพูดทำนองว่าเมื่อจำนวนโปรแกรมเมอร์เพิ่มขึ้น คนส่วนใหญ่จึงมีประสบการณ์ต่ำกว่า 5 ปี
    ในบริบทที่ IT และเว็บเข้ามาเกี่ยวข้องกับชีวิตมากขึ้นเรื่อย ๆ มันก็สมเหตุสมผล
    [0] https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM เจอได้เพราะคอมเมนต์ของ wild_egg
    พอทำมา 20 ปี ตอนนี้ก็มีข้อมูลอยู่พอสมควรที่ผมไม่จำเป็นต้องรู้อีกแล้ว และหลายอย่างก็คงเป็นข้อมูลที่คนมีประสบการณ์ต่ำกว่า 5 ปีไม่จำเป็นต้องใช้เลย
    ในทางกลับกัน ประสบการณ์ก็คือประสบการณ์ และการรู้ว่าสิ่งต่าง ๆ ถูกสร้างขึ้นด้วยโครงสร้างแบบใดและมีอยู่เพราะเหตุใดก็ช่วยได้เสมอ
    มีโปรแกรมเมอร์จำนวนมากที่แม้มีประสบการณ์น้อยกว่าผม แต่ทำสิ่งต่าง ๆ ได้มากมายในแบบที่ผมยังจินตนาการไม่ออกด้วยซ้ำ
    พูดตรง ๆ ว่าสาขาที่มี Turing completeness นี้กว้างมากทีเดียว

    • ผมเขียนโปรแกรมมา 40 ปี และในนั้น 33 ปีทำเป็นอาชีพ แต่สิ่งที่คิดว่าเรียนไปแล้วเสียเปล่า นึกออกแค่ Scrum เท่านั้น
      ผมไม่เคยท่องจำไวยากรณ์แยกต่างหาก และมักเปิด man page กับคู่มือไว้ขณะเขียนโปรแกรมเสมอ
      แต่ทุกภาษาและเทคโนโลยีที่เรียนมา สอนบางอย่างที่มีประโยชน์เกี่ยวกับปัญหาพื้นฐานของคอมพิวติ้งและระบบ
      วิธีรับมือกับปัญหาอาจเปลี่ยนเสื้อผ้าไป แต่ตัวปัญหาเองยังเหมือนเดิม
      ไม่มีทางลัด และผมรู้แน่ชัดว่าตัวผมในฐานะโปรแกรมเมอร์ตอนนี้มีความสามารถมากกว่าตัวผมตอนปีที่ 5 หลายลำดับขั้น
      เหตุผลที่ผมตั้งตารอการเรียนรู้สิ่งใหม่และทำงานใหม่ ๆ มากกว่าที่เคย คือสิ่งเหล่านั้นจะเปิดให้เห็นส่วนต่าง ๆ ของเทคโนโลยีนี้มากขึ้น
      สิ่งที่กังวลมีเพียงว่าสักวันร่างกายและจิตใจจะตามไม่ไหว ไม่ใช่ว่าสิ่งให้เรียนรู้จะหมดลง หรือจะถูกคนรุ่นใหม่แซงหน้า
    • นั่นน่าจะเป็นเนื้อหาในบรรยาย "The Future of Programming" ของ Bob Martin
      https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM
    • วงการนี้ยังอายุน้อย จึงพัฒนาอย่างรวดเร็ว และเป็นธรรมชาติที่จะมี ข้อมูลชั่วคราว สะสมอยู่มาก
      ยังให้ความรู้สึกเหมือนยุคของนักเล่นแร่แปรธาตุ
      สักวันหนึ่งนักเคมีจะปรากฏตัวขึ้น จัดระบบการสังเกตแบบแก้ขัด และทิ้งหลายสิ่งไป
      จนกว่าจะถึงตอนนั้น… Newton ก็เป็นนักเล่นแร่แปรธาตุเช่นกัน แต่ก็ยังสร้างคุณูปการไว้ไม่น้อย