नकल करना
मैंने अपने Android और iOS सीखने के अनुभवों पर विचार किया, और पाया कि बहुत सारे मूल्यवान ज्ञान वे थे जो मैंने नकल करके सीखे थे।
कैसे नकल करें? दो प्रोजेक्ट खोलें। उदाहरण के लिए, Jack के फ्रेंड सर्कल के कार्यान्वयन की नकल करने के लिए, मैं उसके कोड की दो पंक्तियाँ देखता हूँ, फिर अपने प्रोजेक्ट में उसका कोड लिखता हूँ। अगर समझ में नहीं आता है तो वापस जाकर देखता हूँ, अगर समझ में आ जाता है तो अपने विचार के अनुसार लिखता हूँ, और एक बार में ज्यादा लिखता हूँ।
इस तरीके से, मैंने Android में स्वयं पुल-टू-रिफ्रेश वॉटरफॉल लिस्ट और iOS में हाथ से UI लिखना जैसी चीजें बहुत गहराई से सीखीं।
Android की पुल-टू-रिफ्रेश (Pull-to-Refresh) फीचर ने मुझे पहली बार XML के बिना सीधे view को कंट्रोल करने का अनुभव दिया, और मुझे जेस्चर (gestures) को समझने का मौका मिला। यह मेरे लिए एक सुधार था। कभी-कभी मैं मूल लेखक के कोड को कॉपी करते हुए अचानक कुछ समझ जाता हूँ। कुछ चीजें ऐसी होती हैं जिन्हें सिर्फ देखकर समझना मुश्किल होता है, चाहे कितनी भी सोच लो। क्योंकि देखते समय कई चीजें अनदेखी हो जाती हैं, महत्वपूर्ण चीजें दिखाई नहीं देतीं, लेकिन जब कोड लिखते हैं और हाथों से काम करते हैं, तो यह आपको और अधिक लगाव देता है, और आपको बार-बार सोचने पर मजबूर करता है कि क्यों, और आप अधिक विवरणों पर ध्यान देते हैं, जिससे अंततः आप उस चीज को समझ पाते हैं। जैसे मेरे पिछले पोस्ट में पैरलैक्स इफेक्ट (Parallax Effect) के बारे में था। शुरुआत में मुझे नहीं पता था कि बैकग्राउंड इमेज को क्षैतिज (horizontal) या लंबवत (vertical) रखने से वह हिलती है, लेकिन बाद में कोड को कॉपी करते हुए मैंने कई चीजें नोटिस कीं, और मैंने ब्लर इफेक्ट (Blur Effect) बनाने का एक तरीका सीखा।
iOS में पहले मैं xib का बहुत उपयोग करता था, हाथ से कोड लिखने की कोशिश कई बार की लेकिन छोड़ दिया, मित्र मंडली (WeChat Moments) जैसी परियोजनाओं की नकल करते समय, मैं बिल्कुल नकल करने जैसा महसूस करता था। अधिकांश कोड, नामों में कभी-कभी अंतर के अलावा, बाकी सब कुछ समान था। लेकिन फिर भी मैंने हाथ से कोड लिखने के कई महत्वपूर्ण पहलुओं पर ध्यान दिया। जैसे कि लिस्ट सेल, अगर ऊंचाई सामग्री के साथ बदलती है, तो आपको इसे पेंट करने से पहले इसकी ऊंचाई की गणना करनी होगी। इसे tableview को पास करें। ऊंचाई की गणना कैसे करें? एक तरीका यह है कि निश्चित चौड़ाई का उपयोग करके ऊंचाई की गणना की जाए। ये चीजें कोड की नकल करते समय ध्यान में आती हैं।
जब हम किसी चीज़ की नकल करते हैं, तो अक्सर उसमें और ज़्यादा डूब जाते हैं। मैं कोड देखता हूं, और देखते-देखते नींद आने लगती है। एक तो दिमाग थक जाता है, दूसरा पूरा शरीर शांत हो जाता है, जिससे आराम की स्थिति में आसानी से चला जाता है। मेरा एक दोस्त कोड देखते समय कुछ नोट्स बनाता है। Zhihu पर किसी ने कहा कि issue को सुलझाने के लिए कोड देखें, प्रोजेक्ट को समझें। ये सब अच्छे तरीके हैं, मुख्य बात यह है कि इसमें शामिल होना चाहिए, सिर्फ देखना ही काफी नहीं है। हालांकि, हो सकता है कि कुछ लोग सिर्फ देखकर और सोचकर ही लंबे समय तक जुड़े रह सकें।
नकल करने और खुद से कुछ बनाने के बीच अंतर होता है। नकल करना आसान होता है क्योंकि इसमें आप बस किसी और के कोड को कॉपी कर सकते हैं। लेकिन कुछ नया बनाने की प्रक्रिया काफी चुनौतीपूर्ण होती है। अक्सर दूसरों के ऐप्स को नकल करना आसान होता है क्योंकि आप उनके लेआउट को देखकर frame की गणना कर सकते हैं। नकल करना थोड़ा आसान होने के कारण, इसे लंबे समय तक जारी रखा जा सकता है। यह इतना कठिन नहीं होता कि आप हार मान लें। हालांकि, नकल करने से प्राप्त ज्ञान कभी-कभी खुद से कुछ बनाने से भी ज्यादा हो सकता है।
नकल करना, गलतियों को कम करता है और सही ज्ञान को तेजी से हासिल करने में मदद करता है। प्रोग्रामिंग सीखते समय, आप प्रोजेक्ट करते हुए Google पर खोज सकते हैं। इस तरह से, आप बहुत सारी गलतियाँ करेंगे, यहाँ वहाँ खोजबीन करेंगे, लेकिन अक्सर यह तरीका बहुत उपयुक्त नहीं होता, खासकर शुरुआत में। और कई बार ये गलतियाँ बेमतलब होती हैं। कई बार सही ज्ञान हासिल करना और यह जानना कि यह सही क्यों है, काफी होता है। अक्सर, गलतियाँ करते समय हम बेतरतीब ढंग से कोशिश करते हैं, जैसे HTML का फॉर्मेट, लेआउट गड़बड़ हो गया, इसे ठीक करो, उसे ठीक करो, और अगली बार फिर वही समस्या आ जाती है। नकल करते समय, क्योंकि सही जवाब दूसरों के कोड में होता है, आप उसे देख सकते हैं। सही जवाब आपकी पहुँच में होता है। इसलिए सही ज्ञान तेजी से हासिल होता है। उदाहरण के लिए, HTML का फॉर्मेट, मैं कुछ HTML फॉर्मेट वाले प्रोजेक्ट ढूंढता हूँ, और उनके कोड को लाइन बाई लाइन कॉपी करता हूँ, और कॉपी करते हुए सोचता हूँ, यह शायद मेरे बेतरतीब ढंग से कोशिश करने से ज्यादा तेज और बेहतर तरीका है।
नकल करो!