अनायास एक प्रोग्रामर बनने: कैसे सही यह करने के लिए? [बन्द है]


21

मेरी पृष्ठभूमि इलेक्ट्रिकल इंजीनियरिंग, डीएसपी अधिक सटीक है। वर्तमान में मैं जिस कंपनी के लिए काम कर रहा हूं, वह बहुत सारे विविध प्रोजेक्ट करती है, जिसमें ज्यादातर एनालॉग हार्डवेयर का निर्माण होता है। कंप्यूटर के कुछ और करीब होने के नाते यहाँ के आसपास मैं अक्सर दोनों एम्बेडेड उपकरणों (जो मैं पूरी तरह से ठीक हूं) और विंडोज या लिनक्स ओएस के लिए एक लेखन कोड हूं। यह मेरे लिए विदेशी क्षेत्र है।

मैं कोड कर सकता हूं, और मैं कुछ भाषाओं (C / C ++, Java, कुछ VB.NET) को जानता हूं, लेकिन मैंने केवल उन्हें सिग्नल और इमेज प्रोसेसिंग, न्यूरल नेटवर्क और अन्य समान अनुप्रयोगों में एल्गोरिथ्म सिमुलेशन के लिए उपयोग किया है। मेरे लिए प्रोग्रामिंग किसी अन्य चीज़ से अधिक एक कम्प्यूटेशनल उपकरण रहा है। हालांकि, मुझे अधिक से अधिक परियोजनाएं मिलती हैं जहां मुझे उचित पूर्ण सॉफ्टवेयर लिखना पड़ता है, और मुझे वास्तव में यह नहीं पता है कि यह कैसे करना है, क्योंकि मुझे कभी ऐसा नहीं करना था, और मुझे वास्तव में पर्याप्त रुचि नहीं थी। मैंने खुद काफी इंजीनियरों को देखा है जो नौकरी की मांग के कारण कुछ हद तक कोडर्स में परिवर्तित हो गए थे, और उनमें से अधिकांश वे क्या कर रहे थे उस पर महान नहीं थे। मुझे यकीन है कि बहुत से लोगों का सामना हुआ है।

अगर मुझे अच्छे यूजर इंटरफेस, अच्छी आंतरिक वास्तुकला और इतने पर उचित सॉफ्टवेयर लिखना सीखना था, तो मैं यह कैसे करूँ? हम काम पर जो कोई मुझे बता सकते हैं अच्छी आदत है और क्या नहीं है क्या नहीं है। यह देखते हुए कि मैं शब्द के सबसे कच्चे अर्थों में कोड लिख सकता हूं , अच्छा सॉफ्टवेयर लिखने के बारे में और क्या पता है और मैं अपने दम पर कैसे प्राप्त करूं?


यदि आपने हमें वह भाषा बताई है जिसका आप उपयोग कर रहे हैं, तो हम आपको गहराई से उत्तर देने में सक्षम होंगे। फिर, कि एक सामान्य जवाब की बात को नकारना होगा।
सारथ्रियन -

2
एक संरक्षक के साथ औपचारिक प्रशिक्षण या प्रत्यक्ष कार्य अनुभव के बिना तो राइट वे ™ चीजें करना यथार्थवादी नहीं होगा। तुम सीख रहे हो। एक कारण है कि कंप्यूटर विज्ञान और इंजीनियरिंग शाखाएं इलेक्ट्रिकल इंजीनियरिंग से दूर हैं। एक समझदार कंपनी सॉफ्टवेयर इंजीनियरों को एप्लिकेशन इंटरफेस, एप्लिकेशन ड्राइवर और यहां तक ​​कि फर्मवेयर लिखने के लिए नियुक्त करेगी क्योंकि वे गुणवत्ता चाहते हैं और चाहते हैं कि यह सही हो और इसे बनाए रखा जा सके। मैं आपके बॉस को समझाऊंगा कि आप जो कर रहे हैं, वह आपकी विशेषज्ञता के दायरे से थोड़ा परे है और ये काम एक सॉफ्टवेयर इंजीनियर के लिए सबसे अच्छा होना चाहिए।
maple_shaft

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

@maple_shaft मैं उन अधिकांश चीजों से सहमत हूं जो आप कह रहे हैं; हालाँकि, मैंने कभी नहीं कहा कि मेरे साथी कंप्यूटर का उपयोग कैसे नहीं करते हैं। उनमें से कोई भी एक सॉफ्टवेयर इंजीनियर नहीं है जो मुझे काउच कर सकता है, लेकिन वे सभी बहुत कंप्यूटर प्रवीण हैं। मुझे कोडिंग करने में कोई समस्या नहीं है, मुझे नई चीजें सीखना पसंद है, और मुझे वास्तव में इसे करने में कोई समस्या नहीं है।
फोनॉन

6
@ फॉनोन ग्रेट, यह एक अच्छा दृष्टिकोण है, लेकिन यह सुनिश्चित करें कि आपकी कंपनी आपको किताबें, प्रशिक्षण पाठ्यक्रम खरीदती है, और यदि आप चाहते हैं कि आप उस भूमिका को निभाने के लिए सीखने का समय दें। मैं बस इतना ही कह रहा हूं। इसलिए कई कंपनियां आपको यह समझाकर आपको ठगने की कोशिश करेंगी कि आपके लिए इन चीजों को खरीदना आपकी जिम्मेदारी है।
maple_shaft

जवाबों:


11

कुछ किताबें हैं जो आपकी बहुत मदद करेंगी। मेरा सुझाव है कि हमेशा आपके पास अगला कोड पूरा होगा । यह एक अमूल्य संदर्भ है। पिछली कंपनी में जहां मैंने यह काम किया था वह वह पुस्तक थी जिसे हमने हर जूनियर प्रोग्रामर को काम पर रखने के बाद दिया था।

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

ये किताबें आपको शुरू हो जाएंगी, फिर कोड, कोड, कोड और कोड अधिक ... लेकिन पता है कि कब रोकना है, आपका सॉफ्टवेयर कभी भी सही नहीं होगा।


6

मेरी कंपनी हर समय ऐसा करती है ... और यह मुझे पागल कर देती है।

"मैं एक सॉफ्टवेयर डेवलपर हूं, मैं ईई कैसे बनूं?"

खैर, मुझे लगता है कि उत्तर स्पष्ट है। इसमें काफी समय और मेहनत लगती है। और हां, सही शिक्षण सामग्री। इंजीनियरिंग पृष्ठभूमि में मदद करता है, मेरे विश्वविद्यालय में सीएस और इंजीनियरिंग स्कूल एक ही इमारत में बहुत अधिक ओवरलैप के साथ थे। एल्गोरिदम और गणित नींव हैं।

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

यह कहने के लिए नहीं कि आप अपने दम पर बहुत सभ्य नहीं हो सकते हैं, अगर आप समय रहते हैं। बस सामग्री की भयावहता को पहचान ताकि आप अपने आप अभिभूत नहीं है और या तो से बाहर निकलें या बी अपने सीखने की प्रक्रिया में प्रमुख शॉर्टकट लेने के द्वारा अपने ऐप्लिकेशन पर बिल्ड प्रमुख तकनीकी ऋण।

इस सब के कारण, कोई "कैच-ऑल" नहीं है, इस किताब के साथ एक भयानक देव बन गया। मेरा सुझाव है कि आप अपनी सबसे अधिक इस्तेमाल की जाने वाली भाषा पर एक अच्छी तरह से रेट की गई किताब को उठाकर शुरू करें और विशेष रूप से कोड समीक्षाओं के लिए स्टैक समुदाय में भाग लें।

Amazon.com आज़माएं, उनके पास अच्छी पुस्तक समीक्षाएं हैं।


3

किताबें : मुख्य बात यह है कि अपनी पसंद की भाषा पर (अच्छी) किताबें पढ़ें। एक बार जब आप अपनी पसंद की भाषा जानते हैं, तो आप " अधिक प्रभावी एक्स" या "वाई बेस्ट प्रैक्टिसेस" इत्यादि प्राप्त कर सकते हैं । मुझे लगता है कि आपके पास होने वाले अंतराल को कम करने के लिए कुकबुक बहुत अच्छी है। इसलिए, मुझे लगता है कि कम से कम तीन किताबें आपको मिलनी चाहिए। एक बात: भाषा की अपनी समझ को बेहतर बनाने के लिए व्यायाम और कोड काटा करें। बेशक, आपको एक अच्छे xUnit पैटर्न की आवश्यकता है ।

एल्गोरिदम विशेष रूप से महत्वपूर्ण हैं और आपको अपनी पसंद की भाषा में, उन्हें फिर से विवरण देने वाली पुस्तक चुननी चाहिए। डिजाइन पैटर्न और एंटी-पैटर्न किसी भी भाषा के बारे में जानने के दौरान लायक हैं।

निचला रेखा: इसमें समय लगता है। जल्दी मत करो।


+1, लेकिन हमेशा ध्यान रखें, कि केवल एक नियम में कोई अपवाद नहीं है: सभी नियमों में अपवाद हैं।
Jan Hudec

@ जानहुडेक: आपके मन में यहाँ कौन सी बात है?
सारथ्रियन -

3

आप कोडिंग में चूसना। हाँ।

लेकिन - इसका मतलब यह नहीं है कि आप सॉफ्टवेयर वितरित नहीं कर सकते, जिससे लोग खुश हों;)

विनम्र होना। "व्यवसाय" तर्क लिखें , जिसकी आपको आवश्यकता है। बाकी सभी चीजों के लिए लाइब्रेरी कोड का उपयोग करें। मौलिक एल्गोरिदम (जैसे सरणी छँटाई ) लिखने का प्रयास न करें, किसी भी "फैंसी ट्रिक्स" का उपयोग न करें, कुछ ड्रैकोनियन कोड-कन्वेंशन से चिपके रहें ।

अच्छे IDE का उपयोग करें। यह आवश्यक है, क्योंकि यह आपको अपना कोड प्रारूपित करने और टाइपो / सरल गलतियों को ट्रैक करने में मदद करेगा।

" कोड कम्प्लीट " और " प्रोगामैटिक प्रोग्रामर " जैसी किताबें पढ़ें , अपने आप को बल देने की कोशिश करें और ओओपी (इसके सरल, और आपके कोड को और अधिक बनाए रखने में आपकी मदद करेंगे) सीखने की कोशिश करें।

एसवीएन का उपयोग करें , अक्सर प्रतिबद्ध करें , - इसलिए आप अपने परिवर्तनों को वापस करने में सक्षम होंगे (जब आप कुछ बर्बाद कर देंगे)।

अगर संभव हो तो अकादमिक पृष्ठभूमि वाले किसी व्यक्ति को खोजें , जो वास्तविक प्रोग्रामर हो। तो आप उसके साथ अपनी नौसिखिया समस्याओं को साझा करने, और ज्ञानवर्धक उत्तर प्राप्त करने में सक्षम होंगे।

और, ज़ाहिर है, सबसे महत्वपूर्ण बात यह भी है कि कोडिंग, कोडिंग, कोडिंग भी रखें


ps: यदि आप C ++ कोड लिखने में सक्षम हैं जो काम करता है, और आप तंत्रिका नेटवर्क (!) लिखते हैं - तो आपका मस्तिष्क प्रोग्रामिंग के लिए अनुकूल है?) शुभकामनाएँ!


2

यहां अच्छे जवाब हैं।

आपके पक्ष में एक बड़ा स्पिन सरल तथ्य है जिसे आप जानना चाहते हैं।

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

इस तरह, जब आप एक वर्ष या उससे अधिक समय में कोड पर वापस आते हैं, तो आप यह नहीं सोचेंगे कि "यह गड़बड़ किसने की?" आप चीजों को खोजने और उन्हें टूटने के जोखिम के बिना बदलने में सक्षम होंगे। **

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

** मेरा सबसे बड़ा सिरदर्द उन लोगों द्वारा लिखे गए कोड के साथ काम करने की कोशिश कर रहा है, जिन्होंने प्रारूपण या नामकरण के बारे में नहीं सोचा था।


1

जबकि चीजों को करने और न करने के लिए बहुत सारे अच्छे संसाधन हैं, अंत में सबसे महत्वपूर्ण बात यह है कि बहुत सारे कोड देख रहे हैं और इसके साथ काम कर रहे हैं और देखें कि अपने लिए बनाए रखना कितना आसान या जटिल है।

सीखने का एक अच्छा तरीका यह है कि किसी को प्रारंभिक डिजाइन करने के लिए और अपने कोड की समीक्षा करने के लिए अनुभवी होना चाहिए और आपको उनके लिए उपयोगी तकनीकों को दिखाना होगा। इसलिए यदि आप किसी भी तरह से अपने मालिकों को अग्रणी (छोटी) सॉफ्टवेयर परियोजनाओं में अनुभव के साथ कम से कम एक सॉफ्टवेयर इंजीनियर को नियुक्त करने के लिए राजी करने का प्रबंधन करते हैं और परियोजनाओं का नेतृत्व करने के लिए सॉफ्टवेयर डिजाइन करते हैं, तो मुझे लगता है कि यह सबसे अच्छा विकल्प होगा।

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


0

एक बात मैं वास्तव में गुणवत्ता कोडिंग और वास्तुकला की चिंताओं को सीखने के लिए सुझाऊंगा "अंकल बॉब" (रॉबर्ट मार्टिन) की शिक्षाएं। उनके पास कुछ $ 1 वीडियो हैं जो अच्छी तरह से काटे गए आकार के हैं, यदि संभवतः अत्यधिक सनकी हैं, साथ ही साथ कुछ अच्छी किताबें भी हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.