यहाँ पहले से ही कुछ अच्छे उत्तर हैं, लेकिन मुझे लगा कि मैं कुछ और छोटे बिंदु जोड़ सकता हूँ:
जब मैं एक शुरुआत करता था तो मुझे लगता था कि मैं प्रोग्रामिंग के बारे में सब कुछ जानता था, लेकिन जैसा कि मैंने और अधिक सीखा मुझे एहसास हुआ कि यह क्षेत्र कितना मुश्किल है
इसे Dunning-Kruger प्रभाव कहा जाता है । यह शुरुआती प्रोग्रामर और वास्तव में, कई क्षेत्रों के शुरुआती लोगों के बीच बेहद आम है।
वेबसाइटों पर अधिकांश स्रोत कोड, जो Google chrome द्वारा देखे जाते हैं, बहुत गड़बड़ और असंगठित लगते हैं
क्या उन वेब साइटों को लिखने वाले लोग चाहते थे कि आप उन्हें समझ सकें? शायद ऩही। यह उनके हित में है कि कोड को समझना मुश्किल है।
यह सिर्फ मुझे आश्चर्यचकित करता है कि कोई इतना कैसे सीख सकता है।
विशेषज्ञता द्वारा । मैं एक असाधारण रूप से संकीर्ण क्षेत्र में विशेषज्ञ हूं: सी # कंपाइलर सिमेंटिक एनालाइजर का डिजाइन और कार्यान्वयन। अगर मैंने ओपनग्लस या एक्सएमएल या एचटीएमएल या जो भी पंद्रह साल का अध्ययन किया है, मैं उस पर एक विशेषज्ञ होगा और सिमेंटिक एनालाइजर्स द्वारा रहस्यमय होगा। लेकिन मैंने ऐसा नहीं किया, और इस तरह मुझे ओएनजीसीएल, एक्सएमएल और एचटीएमएल की बहुत ही बुनियादी समझ है।
संक्षेप में, यह प्रश्न है कि क्या ये बातें किसी प्रोग्रामर के लिए स्पष्ट हो जाती हैं क्योंकि वह अपने करियर में आगे बढ़ता है।
हां, क्योंकि आप बड़े पैटर्न देखना शुरू करते हैं। उदाहरण के लिए OpenGL लें। आपने शायद "एपीआई पुस्तकालयों" का एक गुच्छा देखा है - संबंधित कोड के बड़े टुकड़े जहां आप कोड के साथ इंटरफेस करते हैं, विशेष तर्कों के साथ नामित कार्यों के एक गुच्छा को कॉल करके है। और आप ओपनजीएल की एक बुनियादी समझ केवल यह समझने से प्राप्त कर सकते हैं कि यह एक एपीआई है।
जब आप अधिक अनुभव प्राप्त कर चुके होते हैं और विभिन्न प्रोग्रामिंग तकनीकों का एक गुच्छा देखते हैं, तो आप महसूस करते हैं कि प्रतीत होता है कि असंबंधित प्रौद्योगिकियां - कहती हैं, OpenGL और LINQ C # में - समानताएं हैं। दोनों API हैं जहां आप वर्कफ़्लोज़ का निर्माण करते हैं, जो चारों ओर डेटा को पाइप करते हैं, और आप ऑप्टिमाइज़र और अन्य परिवर्तन को समृद्ध और दिलचस्प तरीकों से वर्कफ़्लो पर चला सकते हैं। एक बार जब आपके पास उपकरण के बॉक्स में वह अवधारणा होती है, तो अचानक उस पैटर्न का उपयोग करने वाले किसी भी एपीआई की पूरी शक्ति में टैप करना बहुत आसान हो जाता है।
जैसे कि ऊपर सूचीबद्ध विषय जटिल होते हैं (OpenGL, MySQL, उन्नत html साइटें) पढ़ना, लिखना और समझना आसान हो जाता है जैसा कि आप और अधिक सीखते हैं, या क्या यह आपके द्वारा जाने के रूप में अधिक जटिल है?
वे आसान और अधिक जटिल दोनों बन जाते हैं। आसान इसलिए, क्योंकि जैसा मैंने कहा था, आप विचार के बड़े पैटर्न को पहचानना शुरू करते हैं, जो सिस्टम के डिजाइन से गुजरता है, जो आपको सिस्टम को अधिक प्रभावी ढंग से उपयोग करने में सक्षम बनाता है। अधिक जटिल क्योंकि अब आप अधिक जटिल समस्याओं को हल करने के लिए सिस्टम का उपयोग कर सकते हैं , और फिर आप सिस्टम की सीमाओं में भागना शुरू करते हैं।
आप इस भावना का मुकाबला कैसे कर सकते हैं कि आप प्रोग्रामिंग की दुनिया में एक चींटी हैं और यह सामान आपको स्क्वैश करने के बारे में है?
तुम चींटी हो; हम सब चींटियाँ हैं। लेकिन सामान वह पैर नहीं है जो आपको बर्बाद करता है; यह वह दुनिया है जिसका आपको पता लगाना, उसमें रहना, लाभ उठाना और सुधार करना है। आप, चींटी, केवल एक छोटे से छोटे हिस्से का पता लगाने के लिए। एक हिस्सा आप को पसंद है जहाँ आप वास्तविक मूल्य जोड़ सकते हैं और उसमें एक विशेषज्ञ बन सकते हैं।