अगर मैं अपनी मौजूदा कंपनी में चीजों को गड़बड़ कर रहा हूं तो मैं अच्छी प्रोग्रामिंग कैसे कर सकता हूं और एक अच्छा प्रोग्रामर बन सकता हूं?


जवाब 1:

1.क्यों आप एक अच्छा प्रोग्रामर बनना चाहते हैं: क्या यह इसलिए है क्योंकि आप एक नौकरी चाहते हैं, अधिमानतः उच्च भुगतान वाली सॉफ़्टवेयर फर्म में? महान। तब आप NowHERE तक पहुंचने के लिए तैयार हैं। सभी अच्छे प्रोग्रामर जिन्हें मैं जानता हूं वे अच्छे हैं क्योंकि उन्होंने जो किया उससे प्यार किया। प्रोग्रामिंग में रुचि विकसित करें। देखें, इंजीनियरिंग में प्रोग्रामिंग एकमात्र शाखा है जहां आप जो सीखते हैं उसे सीधे लागू कर सकते हैं। आपके पिताजी के पास एक कार हो सकती है, लेकिन वह निश्चित रूप से आपको V2 को ट्वेंट करने या v6 के लिए स्वैप करने की अनुमति नहीं देते हैं कि क्या होता है। लेकिन कंप्यूटर के साथ आप जो चाहें कर सकते हैं। आप एक वायरस का अनुकरण करना चाहते हैं? ठंडा। वर्चुअल ओएस स्थापित करें और इसे चलाएं। फिर, जब आप कर लें, तो वर्चुअल हार्ड डिस्क को हटा दें। यदि आप जो करते हैं उसमें अच्छे हैं, तो आपको भुगतान मिलेगा और निश्चित रूप से उस सपने की नौकरी मिलेगी। हां, यहां तक ​​कि मैं एक बड़ी सॉफ्टवेयर कंपनी में काम करना चाहता हूं। लेकिन मोटी तनख्वाह की वजह से नहीं। इसकी वजह वे जो काम करते हैं। एक्सपोज़र की वजह से मेरे पास होगा। क्या आपने कभी यह पता लगाने की जहमत उठाई है कि ये सभी कंपनियां क्या करती हैं और अपने उत्पादों के पीछे की तकनीकों को सक्षम करती हैं या जिस तरह का आरएंडडी वे करती हैं? नौकरियां आएंगी। अपने आप को एक के लिए एक चूसने वाला मत बनाओ। सचिन आज महान क्रिकेटर नहीं हैं क्योंकि उन्होंने पैसा कमाने और दर्जनों एंडोर्समेंट पाने के लिए क्रिकेट खेलने का फैसला किया।

2. प्रोग्रामिंग लैंग्वेज: बहुत बार लोग अच्छे कोडिंग कौशल की बराबरी कर लेते हैं, जिन्हें प्रोग्रामिंग लैंग्वेज की संख्या से जाना जाता है। Thats सिर्फ असत्य लानत है। जबकि बहुत सारी प्रोग्रामिंग भाषा जानना अच्छा है और कभी-कभी, यहां तक ​​कि आवश्यक है; यह अधिक महत्वपूर्ण है कि आप एक या दो lanugages को अच्छी तरह से जानते हैं। मैं 'जानता हूं' और एक दर्जन से अधिक प्रोग्रामिंग भाषाओं का उपयोग कर चुका हूं और फिर भी सी और जावा वे हैं जो मैं वास्तव में आरामदायक हूं। निश्चित रूप से दुख की बात है। मैं वास्तव में असेंबली और लिस्प में भी अच्छा बनना चाहता था। उन कौशल को विकसित करने का समय या मौका कभी नहीं मिला। किसी भाषा में अच्छा होने में वर्षों (कम से कम 2 वर्ष) लगते हैं। किसी भाषा के अच्छे होने का मतलब है, आप समझते हैं कि इसका कहाँ उपयोग किया जाता है और कहाँ उस भाषा का उपयोग करने से कोई नुकसान नहीं होता है। दूसरी ओर, किसी भाषा को जानने में 3 दिन से लेकर एक सप्ताह तक का समय लगता है। यदि आप एक शुरुआती हैं, तो पहले सी सीखें। यशवंत कानटेकर को मत खरीदिए। ब्रायन डब्ल्यू कर्निघन और डेनिस एम रिची की पुस्तक "द सी प्रोग्रामिंग लैंग्वेज" खरीदें (यदि आप नहीं जानते कि वे कौन हैं, तो यह करें। 1. अपने आप को थप्पड़ मारें 2. Google उनके नाम)। यह पुस्तक सबसे आसान नहीं है लेकिन सबसे अच्छी है। इसकी एक छोटी सी किताब लेकिन यह सबसे शक्तिशाली है। इस पर प्रोग्रामरों की पीढ़ियों को लाया गया है। और अगर आपको लगता है कि यह पुस्तक आपके लिए कठिन है, तो कृपया एक अच्छे प्रोग्रामर होने की किसी भी गलत इच्छाओं को पूरा न करें और इस पोस्ट को आगे पढ़कर अपना समय बर्बाद न करें। प्रोग्रामिंग एक कला है (विज्ञान नहीं। हां आप इसे सही तरीके से पढ़ते हैं), और किसी भी कला की तरह इसमें श्रमसाध्य प्रयास की आवश्यकता होती है।

कुछ लोग सीखे जाने वाली पहली भाषा के रूप में अजगर का सुझाव देते हैं। अजगर निश्चित रूप से एक अच्छी भाषा है और आसान भी है। लेकिन आपको ज्यादातर मदद के लिए इंटरनेट पर निर्भर रहना पड़ेगा क्योंकि आपके आसपास के कई लोग पायथन को नहीं जानते होंगे। साथ ही C का सभी प्रोग्रामिंग भाषाओं में सबसे व्यापक उपयोग है। इसके अलावा टर्बो सी का उपयोग न करें। यह बहुत पुराना है। जीसीसी का उपयोग करें। यदि आप विंडोज में हैं तो देव सी ++ डाउनलोड करें। इसमें जीसीसी है

3. एल्गोरिदम: किसी भी अच्छे प्रोग्रामर को एल्गोरिदम की अच्छी समझ होती है। यह आवश्यक नहीं है कि आप दिल से प्रत्येक अहंकार को जानते हों (वास्तव में अच्छे प्रोग्रामर कभी भी रटे द्वारा चीजें नहीं सीखते हैं) लेकिन आपको यह समझना चाहिए कि कब क्या उपयोग करना है। अल्गोस आपकी समझ को व्यापक करेगा और आपको समस्याओं से निपटने के नए तरीके देगा। एक और महत्वपूर्ण बात डेटा संरचनाएं हैं। यह एल्गो से ज्यादा महत्वपूर्ण है। एक बार जब आपने सही डेटा संरचना को चुना (या विकसित) किया है, तो एल्गोरिथ्म स्वयं स्पष्ट हो जाता है। एल्गो के लिए, थॉमस एच कॉर्मेन एट अल की पुस्तक "इंट्रोडक्शन टू अल्गोरिदम" पढ़ें। आप एंडी तेनबाम की "सी और सी ++ में डेटा संरचनाएं" का भी उल्लेख कर सकते हैं। इसके अलावा, यदि आप कोडिंग प्रतियोगिता (सम्मानजनक वाले) में भाग लेने की इच्छा रखते हैं, तो डोनाल्ड ई नूथ द्वारा "द आर्ट ऑफ प्रोग्रामिंग वॉल्यूम I से V" अनिवार्य हैं। डोनाल्ड नुथ द्वारा "ठोस गणित" भी हो सकता है। फिर से पढ़ने का मतलब सब कुछ याद रखना नहीं है। बस कोशिश करें और समझें कि क्या लिखा है।

4. कोडिंग कॉन्टेस्ट्स: कोडिंग कॉन्टेस्ट्स आपके एल्गोरिथम कौशल को विकसित करने के लिए अच्छे हैं और वे आपको तेजी से सोचने पर मजबूर करते हैं। ACM ICPC या में भाग लेने के लिए यह एक अच्छा विचार है

क्राउडसोर्सिंग के माध्यम से तेजी से वितरित करें

। फिर कोडिंग कॉन्टेस्ट्स होते हैं (जैसे सन कोड फॉर फ्रीडम, गूगल का समर ऑफ कोड, माइक्रोसॉफ्ट का इमैजिन कप) जहां आप एक पूरा सॉफ्टवेयर डेवलप करते हैं। इस तरह के कॉन्टेस्ट कई महीनों तक फैले रहते हैं। दोनों को विभिन्न प्रकार के कौशल की आवश्यकता होती है। आप एक में अच्छे और दूसरे में बुरे हो सकते हैं और फिर भी आप एक अच्छे प्रोग्रामर हो सकते हैं। ICPC जैसी प्रतियोगिताओं में बहुत अभ्यास, तेज़ सोच की आवश्यकता होती है और आपसे अपेक्षा की जाती है कि आप अपने दिमाग के पीछे एल्गो रखें। दूसरी ओर, सीएफएफ, जीएसओसी को लंबे समय तक रचनात्मकता और ध्यान केंद्रित करने की आवश्यकता होती है। तुम भी तेजी से समाधान के साथ आने के लिए नहीं है और आप algos खोदना नहीं है। ICPC T10 की तरह है जबकि CFF, GSoc और इमैजिन कप टेस्ट मैच की तरह हैं। मैं आपको दोनों प्रकारों में भाग लेने का सुझाव दूंगा और फिर निर्णय लूंगा कि आप दोनों में से किसी पर ध्यान देना चाहते हैं या नहीं।

5. FOSS परियोजनाओं में भाग लेना: आपको कुछ मुफ्त सॉफ्टवेयर परियोजनाओं में भाग लेना चाहिए। अभी बहुत सारे हैं। मैं अभी SCALASCA पर काम कर रहा हूं और फिर मैं Sun Grid Engine और Sun xVM Hypervisor पर जाऊंगा और वहां योगदान दूंगा। आप इनसे बहुत कुछ सीखते हैं। आपको बहुत सारे कोड देखने और सर्वोत्तम अभ्यास सीखने को मिलते हैं। और क्या मैंने उल्लेख किया है, यह आपके सीवी पर भी अच्छा लगता है। ज्यादातर लोग ठंडे पैर पकड़ते हैं जब वे इस तरह की परियोजनाओं की कुछ शर्तों से गुजरते हैं। उदाहरण के लिए थंडरबर्ड को ही लीजिए। आपको बहुत सी / सी ++ और जावास्क्रिप्ट (विकासशील मॉड्यूल के लिए) जानने की आवश्यकता होगी। अब उस दिन तक इंतजार न करें जब आप योगदान देने से पहले इन भाषाओं के विशेषज्ञ हों। प्रोग्रामिंग एक कला है, जब आपको ड्राइंग करना चाहिए तो अपनी पेंसिल को तेज करने में समय बर्बाद न करें। आप मुझसे दिशा-निर्देश मांग सकते हैं।

6. डिजाइन पैटर्न: किसी भी कला का अनुकरण करके सीखा जाता है। और इसलिए, आपको सबसे अच्छा अनुकरण करना चाहिए। डिज़ाइन पैटर्न कुछ सामान्य रूप से सामना किए गए सॉफ़्टवेयर डिज़ाइन समस्याओं के समाधान (सॉफ़्टवेयर प्रकार) के वास्तुशिल्प परीक्षण और परीक्षण किए जाते हैं। और इसलिए, जरूरत में कुछ सामान्य डिजाइन पेटेंट का एक बुनियादी ज्ञान यदि आप कुछ ऐसा विकसित करने की योजना बना रहे हैं जो कि मामूली रूप से जटिल है। मेरा सुझाव है कि पहला कदम के रूप में ओरेली से "हेड फर्स्ट डिज़ाइन पैटर्न"।

7. अनुकरण द्वारा सीखना: सबसे अच्छा अनुकरण करें। और यह सबसे अच्छा और / या कुछ सर्वोत्तम मुफ्त सॉफ्टवेयर परियोजनाओं से कोड के माध्यम से जाने वाली पुस्तकों को पढ़ने से संभव है। मैं एरिक एस रेमंड द्वारा "द आर्ट ऑफ यूनिक्स प्रोग्रामिंग" पुस्तक को पढ़ने के लिए प्रोग्रामिंग के बारे में किसी को भी गंभीर आग्रह करूंगा (न ही यह जानने के लिए खुद को थप्पड़ मारना चाहिए कि एरिक रेमंड कौन है और फिर उसका नाम जाना है)। यदि आप उस पुस्तक को नहीं पढ़े हैं तो आप प्रोग्रामर नहीं हैं। अवधि।


जवाब 2:

आपके एक अच्छा प्रोग्रामर बनने की संभावना इस बात पर अधिक निर्भर करती है कि आप अपने काम के समय के दौरान कार्यालय के घंटों के बाद क्या करते हैं जब तक कि आप बिल्कुल भाग्यशाली न हों।

इसलिए, बहुत सारे अच्छे कोड पढ़ें, उस सिद्धांत का उपयोग करके कोडिंग का अभ्यास करें, समझें कि टीम के साथ प्रभावी रूप से कैसे काम करें, कोडिंग और डिज़ाइन ब्लॉग पढ़ें जो बेहतर कोडिंग प्रथाओं पर जोर देते हैं।

अपने पसंदीदा ओपन सोर्स प्रोजेक्ट्स का पालन करें और देखें कि वे अपने कोड को कैसे बनाते हैं, रिलीज़ करते हैं, बंडल ऐप आदि बनाते हैं।

अंत में जब आप अपने द्वारा सीखे गए सिद्धांतों का उपयोग करके अपने स्वयं के उत्पाद का निर्माण करते हैं और स्वचालित रूप से ये सभी प्रयास आपके दैनिक कार्य में भी दिखाई देंगे। उत्पाद को महान नहीं होना चाहिए, लेकिन आपके लिए एक संदर्भ के रूप में काम करना चाहिए। कुछ वास्तव में महान पुस्तकें हैं, जैसे कि रीफैक्टरिंग, क्लीन कोड, अनुमान, वेब फ्रंट एंड प्रैक्टिस, ठोस सिद्धांत, पुन: प्रयोज्यता, प्रदर्शन, जिन्हें आपको पूरी लगन से पालन करने की कोशिश करनी चाहिए।

उपरोक्त बातों के अलावा, मैंने इसे दैनिक आदत के रूप में रेखांकित किया, अभ्यास किया और खेती की और आप बहुत बेहतर प्रोग्रामर होंगे।

एक बहुत कोड और ऐसा करने का आनंद लें। अंत में यह समस्या को हल करने में है और कला इसे और अधिक कुशल तरीके से हल करने और पहले समस्या को हल करने की कोशिश में है।

धन्यवाद..


जवाब 3:

आमतौर पर लोग किसी व्यक्ति को उस कंपनी के साथ जुड़ने की कोशिश करते हैं जिसके लिए वह काम कर रहा है, लेकिन आपको अपना सर्वश्रेष्ठ शॉट देने से पीछे नहीं हटना चाहिए। आप अपने आप में एक इकाई हैं, इससे कोई फर्क नहीं पड़ता कि आप अपनी प्रतिभा के साथ किन समस्याओं का सामना करते हैं। यदि आप एक अच्छे प्रोग्रामर बनने के लिए संघर्ष कर रहे हैं और आप अपने आप को अवांछित स्थिति में रोकते हैं, तो वहां और वहां कारण का पता लगाएं। ऐसा हो सकता है क्योंकि आपको किसी-न-किसी हुनर-सेट की कमी हो सकती है लेकिन, यह कहानी का अंत नहीं होना चाहिए। वर्तमान परिदृश्य में कंपनियां किसी भी प्रोग्रामिंग स्किल-सेट को बेहतर बनाने के लिए डिजिटल मेंटर / गाइड प्रदान कर रही हैं। मुझे जो सबसे वास्तविक लगता है और वह सुझाएगा

। इस वेबसाइट पर हर संभव तरीके से मार्गदर्शन करने के लिए हर भाषा के शीर्ष पायदान प्रोग्रामर का एक पूल है। वर्तमान परिदृश्य में डिजिटल शिक्षा का बाज़ार बहुत बढ़ गया है और वास्तविक दुनिया की तुलना में सुगमता, कम चार्जिंग / मुफ्त सेवाओं और सीखने का एक सुंदर तरीका होने के कारण इसका विस्तार हो रहा है।