3 คะแนน โดย GN⁺ 2024-01-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เรียนการเขียนโปรแกรมด้วยตนเองให้ได้ภายใน 10 ปี

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

สิ่งที่ "เรียน C++ ด้วยตนเองภายใน 24 ชั่วโมง" หมายถึง

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

เรียนการเขียนโปรแกรมด้วยตนเองให้ได้ภายใน 10 ปี

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

หากคุณอยากเป็นโปรแกรมเมอร์

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

ภาคผนวก: การเลือกภาษา

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

ภาคผนวก: หนังสือและแหล่งข้อมูลอื่น ๆ

  • แม้จะย้ำว่า "การเรียนจากหนังสือเพียงอย่างเดียวไม่เพียงพอ" แต่ก็ยังแนะนำหนังสือและหน้าเว็บบางส่วน
  • แนะนำหนังสือและแหล่งข้อมูลสำหรับเรียนการเขียนโปรแกรมด้วย Scheme และ Python

ความเห็นของ GN⁺

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

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

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

      • การได้พบกับผู้ที่สนใจการเขียนโปรแกรมส่งผลอย่างมากต่อการสร้างเส้นทางอาชีพ
  • ผู้ใช้อีกคนกล่าวว่าเอสเซย์ที่เขาอ่านครั้งแรกในช่วงวัยรุ่นมีความหมายพิเศษมาก และเมื่อกลับมาอ่านอีกครั้งก็สังเกตเห็นการอ้างอิงถึง Malcolm Gladwell และการพูดถึง Ratatouille ทำให้ตระหนักว่าบทความนี้ถูกอัปเดตหลังจากเผยแพร่ในปี 1998 ต้นฉบับยังคงหาอ่านได้ใน archive และสั้นกว่ามาก

      • กล่าวถึงข้อเท็จจริงที่ว่าเอสเซย์นี้ถูกอัปเดตเมื่อเวลาผ่านไป
  • ผู้ใช้อีกคนบอกว่าตัวเองมักเรียนรู้ผ่านหนังสือ แต่ทัศนคตินี้มีประโยชน์มากกว่าในสาขาที่ไม่ใช่ CS และเปลี่ยนแปลงช้า เช่น คณิตศาสตร์หรือฟิสิกส์ เขาวิจารณ์ว่าหนังสือของ O'Reilly เกี่ยวกับ quantum programming ที่เพิ่งอ่านไม่นานนี้ไม่ได้อธิบาย quantum circuits อย่างละเอียด จึงไม่ช่วยให้เข้าใจว่าตนเองกำลังทำอะไรอยู่จริง ๆ เขาคิดว่าหนังสือเป็นเพียงเครื่องมือการเรียนรู้ และโปรเจกต์งานอดิเรกก็อาจมีประสิทธิภาพกว่าผ่านประสบการณ์ หนังสือมีประโยชน์ในการชี้ทิศทางที่ถูกต้อง แต่แน่นอนว่าต้องหาหนังสือที่เหมาะกับความต้องการของตัวเอง บางคนมีทัศนคติว่าจะเปิดหนังสือก็ต่อเมื่อสามารถอ่านได้ทั้งเล่มเท่านั้น แต่เขาคิดว่านั่นเป็นทัศนคติที่ไร้สาระ เขาได้สั่งหนังสือ O'Reilly เรื่อง Generative Deep Learning และหวังว่าจะได้อะไรบางอย่างจากมัน โดยมองว่าแม้จะเก็บข้อมูลจากหนังสือไว้ใช้ในอาชีพได้เพียงไม่กี่อย่างก็นับว่าคุ้มแล้ว

      • ความเห็นเกี่ยวกับบทบาทของหนังสือในฐานะเครื่องมือการเรียนรู้และความสำคัญของโปรเจกต์งานอดิเรก
  • ผู้ใช้คนหนึ่งบอกว่าประทับใจมากที่ลิงก์ Amazon.com เก่า ๆ บนหน้ายังคงพาไปยังผลลัพธ์ที่เกี่ยวข้องได้ และยกให้เป็นตัวอย่างที่ดีของ "Cool URIs don't change"

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

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

      • เน้นย้ำความสำคัญของ deliberate practice
  • ผู้ใช้คนหนึ่งนึกถึงวิดีโอที่ดูเมื่อ 5-6 ปีก่อน ซึ่งพูดถึงว่าจำนวนโปรแกรมเมอร์กำลังเพิ่มขึ้น และส่วนใหญ่มีประสบการณ์ไม่ถึง 5 ปี เขาบอกว่านี่ก็สมเหตุสมผลเมื่อ IT/เว็บเข้ามามีอิทธิพลต่อชีวิตเรามากขึ้น ผู้ใช้รายนี้มีประสบการณ์ 20 ปี และบอกว่าเขารู้หลายอย่างที่คนซึ่งมีประสบการณ์ต่ำกว่า 5 ปีไม่มีความจำเป็นต้องรู้ แต่ประสบการณ์ก็ยังมีประโยชน์อยู่ และโปรแกรมเมอร์ที่มีประสบการณ์น้อยกว่าก็สามารถทำสิ่งต่าง ๆ ได้มากมายจนเกินกว่าที่เขาจะจินตนาการได้เช่นกัน

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

      • การคาดเดาว่าบทความอาจถูกอัปเดต
  • ผู้ใช้คนหนึ่งคิดว่าการเรียนการเขียนโปรแกรมจะค่อย ๆ มีความเป็นศิลปะมากขึ้น จนท้ายที่สุดไปถึงระดับของศิลปะ และบอกว่าพื้นฐานต่าง ๆ ใช้เวลาอุทิศตัว 2-3 ปีก็เพียงพอแล้ว

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

      • ความเห็นเกี่ยวกับความจำเป็นของการเรียนรู้อย่างต่อเนื่องในอาชีพโปรแกรมเมอร์