जब आपको प्रोग्रामिंग कार्य का सामना करना पड़ता है जो आपने कभी नहीं किया है तो क्या करें?


37

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

मैं अंत में कोडिंग शुरू करने में सक्षम होने के लिए बहुत उत्साहित हूं। मैंने जो टीम ज्वाइन की है वह अभी के लिए छोटी है क्योंकि एक नए प्रोजेक्ट के साथ शुरू हो रही है, जो बहुत अच्छी है क्योंकि मैं इस परियोजना के पूरे जीवन चक्र में शामिल होना चाहता हूं। यह एक वेब आधारित एसपीए प्रोजेक्ट है जिसमें एक बैकअप है जो ASP.NET MVC / ASP.NET वेब एपीआई का उपयोग करता है और सामने के अंत में डुरंडल फ्रेमवर्क और संबंधित पुस्तकालयों का उपयोग करता है।

मेरी समस्या यह है कि अपने सहयोगियों के साथ एक बैठक करने और अगले महीने के लिए कार्यों और अनुमानों को स्थापित करने के बाद मैं खुद को इस स्थिति में पाता हूं कि मुझे नहीं पता कि क्या मैं किसी भी कार्य को करने में सक्षम हूं।

मैंने कभी भी बनाए गए कार्यों में से कोई भी नहीं किया है और मुझे नहीं पता कि मुझे कैसे आगे बढ़ना चाहिए।

उदाहरण के लिए बनाए गए कार्यों में से एक पूरे अनुप्रयोग के लिए एक सामान्य त्रुटि हैंडलिंग तंत्र बना रहा है।

जब वह उन कार्यों का सामना करता है जो उसने कभी नहीं किया है, तो आम तौर पर कैसे आगे बढ़ता है



7
यह प्रोग्रामिंग के लिए अद्वितीय लग सकता है, लेकिन पहले जोड़े की सभी नौकरियां जो ज्यादातर लोग करते हैं, उन्हें इस तरह से महसूस होता है। उन्होंने आपको किराया नहीं दिया क्योंकि आप जवाब जानते थे - यह एक प्रवेश स्तर की नौकरी है! - उन्होंने आपको काम पर रखा क्योंकि आप उनका पता लगा सकेंगे।
मार्को

जवाबों:


59

कार्य की तैयारी करने के लिए आपको कई चीजें करनी चाहिए:

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

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

यही कारण है कि मैं एक इंजीनियर हूं; मुझे नए सामान का पता लगाना पसंद है।

नई चीजें सीखना कभी बंद न करें। सीखना वही है जो आपको बेहतर बनाता है।


27

कोई सही समाधान नहीं है, लेकिन कुछ चीजें जो मदद कर सकती हैं:

  • छोटी से छोटी संभावित इकाइयों में कार्य तोड़ें - उन्हें तब तक तोड़ें जब तक आपके पास चीजें न हों।

  • यह सुनिश्चित करने के लिए कि आप वास्तव में इसे समझ रहे हैं, तात्कालिक कार्य या समस्या को हाथ में लें। फिर कुछ विश्लेषण करें और दोहराएं।

  • सबसे सरल काम पहले उठाओ, भले ही यह बहुत आसान लगता है बस गति प्राप्त करने के लिए । कुछ लोग सबसे कठिन काम पसंद करते हैं, इसलिए 'कड़ी मेहनत' करना मुश्किल है। मैंने पाया है कि 'सरलतम कार्य' आम तौर पर बेहतर काम करता है क्योंकि आप बस कुछ गति पाने के लिए देख रहे हैं और मैंने किसी भी वास्तविक गति को प्राप्त करने से पहले परियोजनाओं को रोकने के लिए 'सबसे कठिन' नेतृत्व को देखा है।

  • आरंभ करने के लिए सही कार्य और दृष्टिकोण का चयन करने में सहायता के लिए पूछें।

  • एक संरक्षक की तलाश करें जो आपको एक या दो सप्ताह के लिए निरंतर (आदर्श रूप से दैनिक) फीडबैक दे सके।

  • बहुत से प्रश्न पूछें, लेकिन अपने साथियों पर विनम्र होने पर ध्यान दें। हमेशा पूछें कि क्या उनके पास समय है, और सामान्य मौखिक और गैर-मौखिक संकेतों पर ध्यान दें कि उनके पास तब समय नहीं है।

  • आपके द्वारा सामना किए जा रहे मुद्दों की एक सतत सूची रखें और फिर या तो दैनिक घोटाले में या अपने चयन के एक नियमित समय पर, उनके साथ दूसरों के माध्यम से जाएं।

  • सबसे बुनियादी सवाल पूछने से डरो मत। दूसरों द्वारा मान्यताओं को चुनौती देना कठिन हो सकता है, लेकिन यदि आप उस चीज़ के साथ आगे नहीं बढ़ सकते हैं जो आपको दी गई है, तो आपको फिर से सवाल करना होगा।

  • यदि आप उद्देश्य जानते हैं, तो जितना हो सके उतना करें जब तक आप अटक नहीं जाते हैं और तब प्रगति और स्टैक ओवरफ्लो पर सवाल पोस्ट करते हैं।


11
मैं ज्यादातर सहमत हूं, "पहले सबसे सरल कार्य उठाओ" के अलावा । प्रोजेक्ट रिस्क के नजरिए से, सबसे पहले आवश्यक कार्य करना बेहतर होगा। यदि कठिन भागों वास्तव में बहुत कठिन है, तो जल्दी सीखना बेहतर है। तब आप (शायद) एक सरल डिजाइन के लिए बैकग्राउंड कर सकते हैं ... या आवश्यकताओं को फिर से जोड़ सकते हैं।
स्टीफन सी

18

बेशक आपको पता नहीं है कि "सामान्य त्रुटि तंत्र" कैसे लिखना है। जब तक कुछ आवश्यकताओं को परिभाषित नहीं किया जाता है तब तक कोई भी "सामान्य त्रुटि तंत्र" लिखना नहीं जानता है। ऐसा लगता है कि आपके पास किसी की धारणा है कि इस परियोजना को शुरू करने के लिए किसी "सामान्य त्रुटि तंत्र" की आवश्यकता है।

व्यक्तिगत रूप से, मैं इस धारणा पर वापस धकेलूंगा। वास्तविक उपयोगकर्ता आवश्यकताओं को लागू करने से पहले "सामान्य" कुछ भी लिखना लगभग हमेशा समय की बर्बादी है। और चूंकि यह सामान्य है , परिभाषा के अनुसार यह आपकी कंपनी या एप्लिकेशन के लिए विशिष्ट नहीं है, इसलिए संभवत: पहले से उपलब्ध कुछ ऐसा है जो आपकी लगभग 95% आवश्यकताओं को पूरा करेगा।

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

यदि वह विफल हो जाता है, तो वह अगला कदम त्रुटि तंत्र के लिए एक इंटरफ़ेस को परिभाषित करने और इसे हितधारकों द्वारा अनुमोदित करने के लिए है। उसके बाद, कार्यान्वयन संभवतः तुच्छ होगा।

=================

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


5
मुझे लगता है कि मैं संभवतः अपना अधिकांश समय कार्यक्षमता को हटाने वाले लोगों को खर्च करने में लगा रहा हूं , जब उन्हें लगा कि वास्तव में यह पता चला है कि यह केवल हल्का काम और समस्याग्रस्त था, जब यह जल्दी से नई जरूरतों के अनुकूल हो जाता है। आपकी चेतावनी हाजिर है!
Eamon Nerbonne

11

मुझे लगता है कि आप एक कौशल घाटे की तुलना में चिंता से अधिक पीड़ित हैं। कुछ बिंदु पर, सब कुछ नया नहीं था? क्या आपको कभी कोई कार्य दिया गया है और कुछ हद तक इसे हल करने में सक्षम नहीं है? आपको चीजों का पता लगाने के लिए भुगतान किया जाता है।

अपनी टीम का उपयोग करें - यदि आप एक अच्छी टीम में हैं, तो आपको मदद मांगनी चाहिए। ऐसी चीजें हैं जो आपको पता चलेंगी कि सबसे वरिष्ठ को भी नहीं पता होगा। मदद के लिए पूछना कमजोरी का संकेत नहीं है (कुछ प्रश्न साइट पर चलने से ज्यादा नहीं।)।

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

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

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

यह डॉक्टरों के बारे में अभी भी पुराना मजाक है "दवा" का अभ्यास कर रहा है; उनके पास सभी उत्तर नहीं हैं।


मैं आपकी टीम का उपयोग करने से सहमत हूं। क्या वे गति के लिए आपको प्राप्त करने के लिए एक समय के लिए युग्मित प्रोग्रामिंग के लिए खुले होंगे?
नेणतापीर

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

6

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

मेरी व्यक्तिगत प्रक्रिया कुछ इस प्रकार है:

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

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

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