क्या आपने रेल्स कम्पेटेंसी चार्ट देखा है?
CodeFellows के ब्रुक रिगियो ने इसे एक साथ रखा ताकि एक आधुनिक रेल्स डेवलपर को जिन सभी अवधारणाओं को जानना चाहिए, उन्हें दिखाया जा सके। एक नज़र डालें:

भयानक, है ना? यह एक दो-सौ-टेंटेकल वाले राक्षस की तरह दिखता है जो आप पर हमला करने की तैयारी कर रहा है।
यह कोई आश्चर्य की बात नहीं है कि रेल्स सीखना डराने वाला है। कुछ शाखाएं, जैसे SQL और डिप्लॉयमेंट, पूरे करियर पथ हो सकते हैं। आप एप्लिकेशन आर्किटेक्चर पर वर्षों बिता सकते हैं और फिर भी विशेषज्ञ की तरह महसूस नहीं कर सकते।
लेकिन यह सटीक है। यदि आप इस चार्ट को एक पेशेवर रेल्स डेव को दिखाते हैं, तो आप शायद सुनेंगे, "हाँ, यह लगभग सही लगता है।" यदि कुछ भी हो, तो आप सुनेंगे कि इसमें क्या गायब है।
तो आप इस सब से कैसे निपट सकते हैं? 5 साल पहले शुरू किए बिना आप यह सब कैसे सीख सकते हैं?
आप इन सभी विषयों को कैसे संभालते हैं?
हाँ, अधिकांश पेशेवर रेल्स डेवलपर्स उन अवधारणाओं में से बहुत कुछ के बारे में बहुत कुछ जानते हैं। लेकिन आपको अपने रेल्स ऐप्स बनाना शुरू करने के लिए इन सभी चीजों को जानने की आवश्यकता नहीं है। आपको डिप्लॉयमेंट का अध्ययन करने की आवश्यकता नहीं है जब तक आप डिप्लॉय करने के लिए तैयार न हों, और आप पहली बार जब आपको इसे करना हो तो SQL में चीजों को कैसे ग्रुप करना है, इसे देख सकते हैं।
एक चीज जो यह चार्ट अच्छी तरह से चित्रित नहीं करता (भले ही ब्लॉग पोस्ट इसके बारे में बात करता है) वह है कि विभिन्न क्षेत्र एक-दूसरे को कैसे मजबूत करते हैं। उदाहरण के लिए, यूनिट टेस्ट, इंटीग्रेशन टेस्ट, एक्सेप्टेंस टेस्ट, और बाकी सभी समान कौशल और ज्ञान का उपयोग करते हैं। हाँ, विभिन्न प्रकार के टेस्ट के बीच कुछ अंतर हैं। लेकिन एक बार जब आप ढेर सारे यूनिट टेस्ट लिखकर टेस्टिंग के मूल सिद्धांतों को समझना शुरू कर देते हैं, तो आप अन्य प्रकारों को बहुत तेजी से सीख लेंगे।
आप जितना अधिक सीखते हैं, उतनी ही तेजी से आप सीखेंगे। फंक्शनल प्रोग्रामिंग सीखना बहुत आसान है जब आप ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग जानते हैं। सर्विस-ओरिएंटेड आर्किटेक्चर ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की तरह थोड़ा "महसूस" कर सकते हैं। CSS सेलेक्टर्स सीखना jQuery का उपयोग करना बहुत आसान बना देगा। आपके द्वारा सीखे गए कई सिद्धांत विभिन्न शाखाओं में अनुवादित होंगे।
आप कहां से शुरू करते हैं?
यदि आप इन सभी कौशलों को एक ही समय में लेने की कोशिश करते हैं, तो आप उन्हें एक-एक करके मास्टर करने से मिलने वाली अतिरिक्त गति का लाभ नहीं उठा पाएंगे। तो एक समय में कुछ पर ध्यान केंद्रित करें, और उन्हें अच्छी तरह से सीखें।
अपने आप से यह प्रश्न पूछें:
"मुझे जिस समस्या का सामना करना पड़ रहा है उस पर प्रगति करने के लिए मुझे क्या जानने की आवश्यकता है?"
अपने उत्तर का उपयोग यह निर्धारित करने के लिए करें कि किन क्षमताओं से शुरू करना है। जैसे ही आप उन्हें उठाते हैं, आप उनके आसपास के कौशल की जांच कर सकते हैं, और आपने अभी जो सीखा है उसका लाभ उठाकर समान चीजों को तेजी से सीख सकते हैं। उदाहरण के लिए, यदि आप कमांड लाइन के साथ सहज महसूस कर रहे हैं, तो आप पैकेज मैनेजमेंट और परमिशन जैसी चीजों में बहुत आसानी से शाखा लगा सकते हैं।
इन कौशलों को जैसे-जैसे आपको उनकी आवश्यकता होती है, बनाकर, आपके पास प्रेरणा का एक छोटा अतिरिक्त किक होगा। आप उस सामान पर समय बिता रहे होंगे जो आपके लिए मायने रखता है।
उदाहरण के लिए, अगर मैं मल्टीटेनेंसी सीख रहा होता क्योंकि मुझे लगता है कि यह कुछ ऐसा है जो मुझे बस जानना चाहिए, तो मैं पहले ब्लॉग पोस्ट के आधे रास्ते में सो रहा होता। अगर मैं इसे सीख रहा होता क्योंकि यह मेरे ऐप को काम करने का एकमात्र तरीका था, तो मैं हर ट्यूटोरियल और रेफरेंस गाइड से चिपका होता जो मुझे मिल सकता था।
कुछ सौ कौशल देखना और यह जानना कि आपको उन सभी को सीखना है, दिल तोड़ने वाला है। खासकर जब वे पहली कुछ क्षमताएं आपको हफ्तों या महीनों में लेने लगती हैं। आपको लगेगा कि आप कभी पेशेवर रेल्स डेव नहीं बनेंगे।
चार्ट गलत नहीं है। एक रेल्स डेव के रूप में, आप अंततः उनमें से अधिकांश के बारे में बहुत कुछ जानेंगे। लेकिन हम सभी वहां से शुरू नहीं हुए।
तो, कहीं से शुरू करें। प्राथमिकता दें, और उस पथ के साथ आगे बढ़ें जो आपके ऐप के निर्माण की ओर ले जाता है। अंतराल भरने के लिए शाखा लगाएं। और पहचानें कि आप समय के साथ तेज होते जाएंगे।
और यदि आप उन कौशलों को तेजी से सीखना चाहते हैं, और जब यह मायने रखता है तो उनका उपयोग करना याद रखना चाहते हैं, तो Practicing Rails का यह मुफ्त नमूना अध्याय प्राप्त करें। आप वह विधि सीखेंगे जिसका उपयोग मैं नए रेल्स विचारों को तेजी से और पूरी तरह से सीखने के लिए करता हूँ, बिना अभिभूत हुए।