มีคำตอบที่ดีจริงๆที่นี่แล้ว แต่ฉันคิดว่าฉันอาจเพิ่มคะแนนสั้น ๆ เพิ่มเติม:
เมื่อฉันเป็นผู้เริ่มต้นฉันเคยคิดว่าฉันรู้ทุกอย่างเกี่ยวกับการเขียนโปรแกรม แต่เมื่อฉันเรียนรู้มากขึ้นฉันก็รู้ว่าเรื่องนี้ยากเพียงใด
นี้เรียกว่าผลการติดตามหนี้-Kruger มันเป็นเรื่องธรรมดามากในหมู่โปรแกรมเมอร์ผู้เริ่มต้นและในความเป็นจริงผู้เริ่มต้นในหลายสาขา
ซอร์สโค้ดส่วนใหญ่บนเว็บไซต์ที่ Google Chrome มองเห็นนั้นดูยุ่งเหยิงและไม่มีระเบียบ
คนที่เขียนเว็บไซต์เหล่านั้นต้องการให้คุณเข้าใจพวกเขาหรือไม่? อาจจะไม่. พวกเขามีความสนใจที่จะมีรหัสที่เข้าใจได้ยาก
มันทำให้ฉันสงสัยว่าจะเรียนรู้ได้มากขนาดไหน
โดยมีความเชี่ยวชาญ ฉันเป็นผู้เชี่ยวชาญในสาขาแคบพิเศษ: การออกแบบและการใช้งาน C # compiler semantic analyzers หากฉันใช้เวลาสิบห้าปีในการศึกษา OpenGL หรือ XML หรือ HTML หรืออะไรก็ตามฉันจะเป็นผู้เชี่ยวชาญในเรื่องนั้นและได้รับการวิเคราะห์โดยนักวิเคราะห์ความหมาย แต่ฉันไม่ได้ทำดังนั้นฉันจึงมีความเข้าใจพื้นฐานเกี่ยวกับ OpenGL, XML และ HTML เท่านั้น
คำถามสั้น ๆ คือถ้าสิ่งเหล่านี้กลายเป็นที่ชัดเจนกับโปรแกรมเมอร์ในขณะที่เขาก้าวหน้าในอาชีพของเขา
ใช่เพราะคุณเริ่มเห็นรูปแบบที่ใหญ่ขึ้น ใช้ OpenGL เป็นตัวอย่าง คุณอาจเคยเห็น "API ไลบรารี" เป็นส่วนใหญ่ - โค้ดที่เกี่ยวข้องชิ้นใหญ่ซึ่งวิธีการที่คุณเชื่อมต่อกับโค้ดนั้นคือการเรียกใช้ฟังก์ชันที่ตั้งชื่อโดยมีอาร์กิวเมนต์เฉพาะ และคุณสามารถทำความเข้าใจพื้นฐานของ OpenGL ได้เพียงแค่เข้าใจว่ามันเป็น API
เมื่อคุณได้รับประสบการณ์มากขึ้นและได้เห็นเทคนิคการเขียนโปรแกรมที่แตกต่างกันมากมายคุณจะรู้ว่าเทคโนโลยีที่ไม่เกี่ยวข้อง - ดูเหมือนว่า OpenGL และ LINQ ใน C # - มีความเหมือนกัน ทั้งสองเป็น API ที่คุณสร้างเวิร์กโฟลว์ที่ไปป์ไลน์ข้อมูลและคุณสามารถเรียกใช้เครื่องมือเพิ่มประสิทธิภาพและการแปลงอื่น ๆ บนเวิร์กโฟลว์ด้วยวิธีที่หลากหลายและน่าสนใจ เมื่อคุณมีแนวคิดนั้นในกล่องเครื่องมือของคุณทันใดนั้นก็จะกลายเป็นเรื่องง่ายกว่าที่จะเข้าถึงพลังเต็มรูปแบบของ API ใด ๆ ที่ใช้รูปแบบนั้น
หัวข้อที่ซับซ้อนตามที่ระบุไว้ข้างต้น (OpenGL, MySQL, ไซต์ html ขั้นสูง) กลายเป็นเรื่องง่ายต่อการอ่านเขียนและทำความเข้าใจเมื่อคุณเรียนรู้มากขึ้นหรือแค่ซับซ้อนขึ้นเมื่อคุณไป
พวกเขากลายเป็นทั้งง่ายขึ้นและซับซ้อนมากขึ้น ง่ายขึ้นเพราะอย่างที่ฉันพูดคุณเริ่มตระหนักถึงรูปแบบของความคิดที่ใหญ่กว่าซึ่งอยู่ภายใต้การออกแบบของระบบซึ่งช่วยให้คุณใช้ระบบได้อย่างมีประสิทธิภาพมากขึ้น มีความซับซ้อนมากขึ้นเพราะตอนนี้คุณสามารถใช้ระบบเพื่อแก้ไขปัญหาที่ซับซ้อนมากขึ้นและจากนั้นคุณก็เริ่มทำงานกับข้อ จำกัด ของระบบ
คุณจะต่อสู้กับความรู้สึกนี้ว่าคุณเป็นมดในโลกแห่งการเขียนโปรแกรมได้อย่างไร
คุณเป็นมด พวกเราทุกคนเป็นมด แต่สิ่งนั้นไม่ใช่เท้าที่ทำให้คุณอ่อนกำลัง เป็นโลกที่คุณได้สำรวจใช้ชีวิตอยู่รับประโยชน์จากและปรับปรุง คุณมดได้เพียงสำรวจส่วนเล็ก ๆ ของมัน เลือกชิ้นส่วนที่คุณชอบซึ่งคุณสามารถเพิ่มมูลค่าที่แท้จริงและกลายเป็นผู้เชี่ยวชาญในนั้น