यह हमेशा एक व्यापार है।
एक प्रारंभिक प्रोग्रामर के रूप में, आपको पुन: कोड कोड पर विचार करते समय दो सवाल पूछने चाहिए।
- क्या मैं उस समस्या के बारे में अधिक जानूंगा, जिसे मैं खरोंच से सब कुछ लिखकर हल करना चाहता हूं, या समस्या डोमेन पर ध्यान केंद्रित करके और जटिलता को उस समस्या के लिए महत्वपूर्ण नहीं बना सकता है जिसमें मैं दिलचस्पी रखता हूं?
- क्या मेरे लिए समस्या को हल करना अधिक महत्वपूर्ण है या क्या यह अधिक महत्वपूर्ण है कि मैं कुछ मूलभूत अवधारणाओं को समझूं?
यदि आपको अपनी परियोजना खत्म करने की ज़रूरत नहीं है, तो जटिल समस्याओं पर अपने पहियों को स्पिन करना ठीक है जो अन्य लोग पहले से ही हल कर चुके हैं, क्योंकि आप कुछ सीखेंगे। लेकिन आप शायद "खत्म" करने से पहले कुछ और बात कर लेंगे, जो आपके लिए महत्वपूर्ण हो सकता है या नहीं। जब आप अपने आप को हल करने की कोशिश करना शुरू करते हैं, तो जब तक आप एक जटिल डोमेन पर अपने सिर के ऊपर नहीं मिलते, अन्य परियोजनाएं तेजी से चमकदार दिखना शुरू हो जाएंगी।
नियंत्रण छोड़ने के बारे में जुनूनी न हों क्योंकि आप किसी और के सोचने के तरीके के बारे में बता रहे हैं; जो आप पूरा करने की कोशिश कर रहे हैं उस पर अधिक ध्यान केंद्रित करें।
यदि आपका लक्ष्य HTML पार्सर लिखना है क्योंकि आप समझना चाहते हैं कि पार्सर्स कैसे काम करते हैं, तो इसके लिए जाएं। यदि आपका लक्ष्य HTML पार्सर लिखना है, क्योंकि आप उपयोगकर्ता इनपुट को संक्षिप्त करना चाहते हैं या HTML के कुछ यादृच्छिक बिट्स को बदलना चाहते हैं, तो आप शायद गलत चीज़ पर ध्यान केंद्रित करते हैं, क्योंकि आप शायद पार्सिंग के बजाय पार्सिंग के आवेदन में अधिक रुचि रखते हैं। । अगर आपको ऐसा लगता है कि HTML parser लिखना पसंद है क्योंकि आप किसी और की लाइब्रेरी को समझने के लिए समय नहीं लेना चाहते हैं, तो आप शायद अपना समय बर्बाद कर रहे हैं, क्योंकि, कम से कम इस मामले में, मैं गारंटी देता हूं कि किसी और ने अधिक समय बिताया है कि कैसे इस समस्या को प्रभावी ढंग से हल करने की तुलना में आपके पास होगा। वास्तव में तुच्छ मामलों में, आप कोड का पुन: उपयोग न करके समय बचा सकते हैं, लेकिन जटिल लोगों में, जब तक कि आप पुस्तकालय का उपयोग नहीं करते हैं या आपके दस्तावेज़ और कोड नमूने पढ़ने की क्षमता बेकार है,
दूसरी तरफ, मैं कहूंगा कि यह आपकी अपनी ग्राफ़िक्स लाइब्रेरी लिखने के लायक है, क्योंकि आप हस्तांतरणीय, मौलिक एल्गोरिदम और डेटा संरचनाओं पर अधिक ध्यान केंद्रित करेंगे, जिन्हें आप अन्य डोमेन पर लागू करने में सक्षम होंगे, भले ही आप उपयोग कर रहे हों किसी और की लाइब्रेरी जब आप उन समस्याओं पर काम करते हैं।