मेरे अनुभव पर: चूंकि आप लाइब्रेरी-निर्भरता को खत्म नहीं कर सकते, इसलिए आपको और आपकी टीम को समस्या को हल करने के लिए पर्याप्त जानकारी होनी चाहिए।
प्रोग्रामर के रूप में, हमारे पास बहुत कम समय है, इसलिए हमें उसी को चुनना चाहिए जिसकी सर्वोच्च प्राथमिकता है। समस्या को हल किया जाना चाहिए, जितना संभव हो उतना तेज़ और कोमल। केवल यह कारण "कुछ चीजों के बारे में सीखना" कुछ हद तक बेमानी है।
जिन चीजों को मैं यहां जोड़ना चाहता हूं, वह "निर्भरता" है। एक समुदाय के रूप में, हम सभी दूसरों पर निर्भर हैं। हम अपने आवेदन के निर्माण के लिए दिग्गजों पर खड़े हैं: जावा, .NET, एपीआई ... और हम अपने काम के बारे में दिग्गजों पर भरोसा करते हैं; क्योंकि यह इतने सारे लोगों के लिए काम करता है। यदि आपके पास फ्रेमवर्क, या एपीआई के बारे में कोई समस्या है, तो एक अच्छा मौका है कि अन्य लोगों ने इसका कहीं न कहीं सामना किया है, और एक समाधान / काम है।
यहाँ एक ही समस्या है: हो सकता है, कहीं न कहीं, एक प्रतिबंधित मापदंड में दिग्गज गिर गए। उदाहरण के लिए, कुछ ओएस में फ्लैश का समर्थन नहीं किया जाता है, और कई चीजें हैं जो हम इसके बिना नहीं कर सकते। यह संभावना शून्य से अधिक है, लेकिन इस मामले में हमारे पास बहुत कम चीजें हैं जो हम कर सकते हैं। केवल इन मामलों में, "हुड के पीछे क्या है" के बारे में ज्ञान उपयोगी साबित होता है, क्योंकि यह इंगित करता है कि समस्या वास्तव में कहां है और एक बड़ा काम बना सकती है; लेकिन मुझे यकीन नहीं है कि जिस समय हम निवेश करते हैं वास्तव में इसके लायक है।
उस संभावना का सामना करने के लिए, मुझे लगता है कि एक समाधान है: क्योंकि अधिकांश प्रोग्रामर आसानी से एक पुस्तकालय की "सतह के काम" को पकड़ सकते हैं, और केवल कभी-कभी हमें वास्तव में किसी ऐसे व्यक्ति की आवश्यकता होती है जो बहुत अच्छी तरह से समझने वाला हो: ऐसा करने के लिए टीम को विभाजित करें। एक टीम को शामिल करने की कोशिश करना, जिसमें हर एक ने लगभग 1,2 उपयोगी पुस्तकालयों / उपकरणों / "कौशल सेट" को शामिल किया है : इसमें jQuery के बारे में अच्छा अनुभव है, एक ने डेटाबेस के साथ विशेषज्ञ किया है, ... यह जोखिमों को कम करने में बहुत मदद करेगा।