एक जावा प्रोग्रामर पुस्तकें अवश्य पढ़ें: शुरुआत से पेशेवर तक
[अनुवादक का नोट: रूसी में उनके पर्याप्त अनुवाद की कठिनाई और सामान्य जूनियर-मध्य-वरिष्ठ-लीड के साथ विसंगति के कारण अंग्रेजी में "व्यावसायिकता" के लिए ग्रेडेशन शब्द छोड़ दिए गए थे। अनुवाद काफी स्वतंत्र है - यदि भाषा का पर्याप्त ज्ञान है, तो मूल को पढ़ना बेहतर है, जैसा कि लेखक सलाह देता है। दोनों भाषाएँ मेरे लिए मूल नहीं हैं, इसलिए मुझे पीएम में त्रुटियों के बारे में बताएं - हम इसे ठीक कर देंगे। इसके बाद, वर्ग कोष्ठक में, अनुवादक के नोट्स]
मैंने देखा कि हाल के महीनों में मैं नौसिखिए और अनुभवी डेवलपर्स दोनों के लिए समान पुस्तकों की सिफारिश कर रहा हूं। इसलिए मैंने इन किताबों की एक सूची बनाने का फैसला किया। उन्होंने मुझे एक शुरुआत से आज के स्तर तक मेरी वृद्धि की प्रक्रिया में एक अच्छी कंपनी बना दिया (जो कुछ भी है :)
मेरे दोस्तों और सहयोगियों ने मुझे सूची बनाने में मदद की।
फ्रैंक एपेल ,
रुडिगर हेरमैन ,
बेंजामिन मस्कला और
राल्फ स्टर्नबर्ग के लिए विशेष धन्यवाद
सूची में पुस्तकों का क्रम मेरी व्यक्तिगत पसंद को दर्शाता है। अपनी इच्छानुसार इसे बदलें :) एक महत्वपूर्ण बात - यदि आप इस सूची से पुस्तक खरीद रहे हैं, तो हमेशा अंग्रेजी संस्करण चुनें। यहां तक कि अगर आपकी खुद की भाषा में अनुवाद है, तो मूल संस्करण लगभग हमेशा सबसे अच्छा विकल्प है।
शुरुआती
यदि आपने अभी जावा को जानना शुरू किया है, तो सबसे पहले आपको भाषा के वाक्य विन्यास से परिचित होना होगा। इसके लिए बड़ी संख्या में पुस्तकें हैं। लगभग हमेशा इन पुस्तकों की सामग्री बहुत समान होती है, लेकिन लेखन शैली नाटकीय रूप से भिन्न होती है।
सिफारिश करने लायक दो पुस्तकें हैं।
हेड फर्स्ट जावा कस्टम है लेकिन पढ़ने में आसान है। पूरी श्रृंखला की तरह, आप इसे प्यार कर सकते हैं या नहीं (मैं उन्हें प्यार करता हूं)।
जावा, ए बिगिनर गाइड एक अधिक पारंपरिक पुस्तक है जो जावा को पूरी तरह से समझाती है। आपके द्वारा वाक्य रचना और मूल रचनाओं से पूरी तरह परिचित होने के बाद, मैं अगले चरण पर जाने से पहले एक और पुस्तक पढ़ने की सलाह देता हूं (यह अन्य प्रोग्रामिंग भाषाओं के लिए सही है)।
टेस्ट ड्रिवेन डेवलपमेंट (केंट बेक द्वारा) हम उस प्रोग्रामिंग तकनीक का वर्णन करते हैं जिसका उपयोग हम एक्लिप्स सोर्स में करते हैं। आईएमएचओ टीडीडी को प्रत्येक प्रोग्रामर के प्रशिक्षण में शामिल किया जाना चाहिए।
तंख़्वाहदार मजदूर
जर्नीमैन, एक प्रोग्रामर जो पहले से ही भाषा जानता है, उसने कई छोटी परियोजनाएं बनाई हैं, लेकिन जो अभी तक एक पेशेवर के रूप में विकसित नहीं हुई हैं। बेशक, मुझे यकीन है कि आप इस कथन से सहमत नहीं हैं (मैं सहमत नहीं था, उदाहरण के लिए)। लेकिन इस स्थिति में पाँच साल बाद आप सहमत होंगे :)
भाषा का सरल ज्ञान पर्याप्त नहीं है - आपको उन्हें गहरा करने की आवश्यकता है। इन उद्देश्यों के लिए, लगभग कोई भी जावा पेशेवर जोशुआ बलोच द्वारा
प्रभावी जावा की सिफारिश करेगा। एक अन्य पुस्तक,
द प्रोगामेटिक प्रोग्रामर, नोटों के संग्रह की तरह है। यह उन विषयों के बारे में विस्तार से बताता है जिन्हें आप एक प्रोग्रामर के रूप में सामना करेंगे, इसलिए यह भी एक पढ़ा जाना चाहिए। लेकिन भाषा को जानना आपको प्रोग्राम लिखना अच्छी तरह से नहीं सिखाता है। मेरे दृष्टिकोण से, प्रोग्रामर के दीर्घकालिक कार्यों में से एक यह सीखना है कि एप्लिकेशन आर्किटेक्चर को सही ढंग से कैसे बनाया जाए। इन उद्देश्यों के लिए, गैंग ऑफ फोर [नहीं, ये सीसीपी में वामपंथी नहीं हैं, द्वारा लिखित
डिजाइन पैटर्न बुक , लेकिन लेखकों के एक समूह (एरिच गामा, रिचर्ड हेल्म, राल्फ जॉनसन, जॉन वाइसिसाइड्स) का सामान्य नाम एक अच्छी शुरुआत है।
टीडीडी (बेक द्वारा लिखित) के अनुसार, सुनहरा नियम है: लाल, हरा, परावर्तक। मार्टिन फाउलर अपनी पुस्तक
रिफैक्टिंग बुक में अंतिम बिंदु बताते हैं। सभी परीक्षण सफल होने के बाद और आपने पूरी तरह से कोड को फिर से काम में लिया, आपको पुस्तक को
क्लीन कोड (रॉबर्ट सी। मार्टिन) (कम से कम दो बार) पढ़ने की आवश्यकता है। पहली बार के बाद, मुझे यकीन है कि आप अपने कोड [और शायद ही बेहतर के लिए] के बारे में अलग तरह से सोचने लगेंगे।
ओएसजी इन एक्शन इस सूची में अजीब लग रहा है। मैंने इसे यहां इसलिए जोड़ा क्योंकि मुझे लगता है कि प्रतिरूपकता अनुप्रयोग डिजाइन के सबसे महत्वपूर्ण सिद्धांतों में से एक है। एक जावा प्रोग्रामर को बस OSGI को जानना होगा। याद रखें, मैंने उल्लेख किया है कि आप मेरे साथ सहमत नहीं होंगे कि आप कम से कम कुछ वर्षों के लिए जर्नी की स्थिति में पेशेवर नहीं बनेंगे? मुझे यकीन है कि
द क्लीन कोडर पढ़ने के बाद मैंने आपको मना लिया। रॉबर्ट सी। मार्टिन ने खुद को और अपने विकास पथ को शुरुआती से पेशेवर तक लिखा है। यह वास्तव में एक वास्तविक रहस्योद्घाटन है!
पेशेवर
मैं "व्यावसायिक" शब्द का उपयोग करता हूं क्योंकि इस संदर्भ में कई लेखक इसका उपयोग करते हैं। लेकिन मुझे प्रोग्रामर के स्तर का वर्णन करने के लिए इस शब्द का उपयोग करना पसंद नहीं है। "व्यावसायिक" लगता है जैसे आप पहले ही शीर्ष पर पहुंच चुके हैं। लेकिन यह केवल सच नहीं है। एक प्रोग्रामर अपनी पढ़ाई कभी खत्म नहीं कर सकता [हालांकि, यह 83% व्यवसायों के लिए सच है]। इस श्रेणी में मैंने जो पुस्तकें रखी हैं, वे अधिक उन्नत हैं। वे विवरणों में तल्लीन होते हैं या टीम लीडर के रूप में आपको प्रशिक्षित करते हैं।
मल्टीथ्रेडिंग का उपयोग किए बिना जावा में थोड़ा सा किया जा सकता है। जब आप ट्रिपमैन की स्थिति में होते हैं, तो सबसे अधिक संभावना है कि आपके पास टीम में एक व्यक्ति होगा [अच्छी तरह से, हाँ, हाँ] जो इस विषय में आपकी मदद कर सकता है। लेकिन जल्दी या बाद में, वह क्षण आएगा जब आपको खुद को मल्टीथ्रेडिंग सीखने की आवश्यकता होगी। ब्रायन गोएत्ज़ ने अपनी पुस्तक
जावा कॉन्सिक्वेरिटी इन प्रैक्टिस में एक महान काम किया है। पेशेवर होने का मतलब है जिम्मेदारी लेना। और चूंकि आप एक प्रोग्रामर हैं, इसका मतलब आउटडेटेड कोड के लिए जिम्मेदार होना भी है। माइकल फेदर ने इस उबाऊ विषय
को विरासत कोड के साथ प्रभावी रूप से
वोकिंग में थोड़ा और मजेदार बताया। आपको अपनी टीम की जिम्मेदारी लेने में भी सक्षम होना चाहिए। टॉम डेमार्को और टिमोथी लिस्टर ने
पीपुलवेयर में इस विषय को प्रकट करने की कोशिश की, जहां उन्होंने बताया कि प्रभावी टीम कैसे काम करती है और ऐसी टीमों की महत्वपूर्ण विशेषताएं। किसी कठिन विषय को समझाना बहुत मुश्किल काम है। कुछ लेखक इसके लिए सक्षम हैं। मार्टिन फाउलर ने
पैटर्न ऑफ़ एंटरप्राइज एप्लीकेशन आर्किटेक्चर में बहुत अच्छा काम किया, जिसने सॉफ्टवेयर डिज़ाइन प्रक्रिया का विस्तार से वर्णन किया।
मुझे उम्मीद है कि आपको ये किताबें पसंद आई होंगी (या इसे पसंद करेंगे अगर आपने इसे अभी तक नहीं पढ़ा है)। यदि आप सूची से सहमत नहीं हैं, या अन्य दिलचस्प पुस्तकों की सिफारिश कर सकते हैं - टिप्पणियों में ध्यान दें [मैं लेखक में शामिल होता हूं। मूल लेख की टिप्पणियों में भी कई दिलचस्प किताबें हैं। सूची की वे पुस्तकें जो मैंने पहले ही पढ़ी हैं, वे निश्चित रूप से इसके लायक हैं। खैर, अब जारी रखने के लिए एक अच्छी सूची है]