अनुभवहीन डेवलपर्स के बारे में सोचने के लिए सबसे खराब चीजें क्या हैं? [बन्द है]


15

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

ऐसी कौन सी गलतियाँ हैं जो अनुभवहीन डेवलपर्स करते हैं जिससे अधिक अनुभवी डेवलपर्स के लिए निराशा पैदा हो सकती है?


1
मैं "चेकलिस्ट" पर जाने के लिए सुरक्षा को वास्तव में कुछ नहीं कहूंगा - सुरक्षा को डिजाइन के सभी स्तरों पर विचार किया जाना चाहिए, न कि बाद में जोड़ा गया। सुरक्षा सुविधाएँ! = सुरक्षित सुविधाएँ!
बिली ओनली

हो सकता है कि "चेकलिस्ट" का अर्थ गलत बात हो। मैं विकास के अंत में सोचने वाली चीजों की सूची नहीं खोज रहा हूं; मैं उत्सुक हूं कि आपको किन चीजों पर विचार करना चाहिए क्योंकि आप एक एप्लिकेशन विकसित कर रहे हैं। क्या आपके पास कोई सुझाव है कि मैं अपने प्रश्न को कैसे शांत कर सकता हूं?
awmckinley

@awmckinley: फिर आपका प्रश्न "मैं एक एप्लिकेशन कैसे विकसित करूं" - लेकिन यह प्रश्न उत्तर देने योग्य होने के लिए बहुत व्यापक है।
बिली ओनली

@ बिली ओनली: बस मेरे सवाल का संपादन किया। क्या यह अधिक समझ में आता है?
awmckinley

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

जवाबों:


12

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

  • कोड में जाँच करना जो बिल्ड को तोड़ता है
  • कोड का पुन: उपयोग नहीं है जो पहले से ही है
  • चीजों को अपने तरीके से करने की बजाए उसी तरह से करें जैसे बाकी सब - जो रखरखाव को महंगा बनाता है

यह कहना नहीं है कि उनका कोड अलगाव में खरोंच तक नहीं है, लेकिन वे अलगाव में काम नहीं कर रहे हैं।


+1: मौलिक रूप से, ये वे मुद्दे हैं जिनका आप सामना करते हैं। जूनियर कोडर कोडिंग में खराब हो सकते हैं, लेकिन फिर कुछ अनुभवी लोग कोडिंग में भी खराब होते हैं। मुख्य अंतर इन जैसे आइटम हैं।
gbjbaanb

8
  1. टेस्ट।
  2. टेस्ट।
  3. अधिक परीक्षण।
  4. स्रोत नियंत्रण
  5. आपके द्वारा लक्षित किसी भी कार्यक्रम के लिए उपयुक्त कर।

विंडोज पर, ये कर हैं :

  • उच्च डीपीआई वातावरण से निपटना
  • रोमिंग यूजर प्रोफाइल
  • फास्ट उपयोगकर्ता स्विचिंग
  • RDP प्रभावी होने पर दूरस्थ डेस्कटॉप (जैसे आप डबल बफरिंग का उपयोग नहीं करना चाहते हैं
  • श्रेणीबद्ध भंडारण प्रबंधन के साथ अच्छी तरह से खेलना
  • एकाधिक मॉनिटर्स
  • 64 बिट विंडोज

हर प्लेटफ़ॉर्म पर, आपको इससे निपटना होगा:

  • यूनिकोड
  • स्थानीयकरण
  • पॉवर मैनेजमेंट

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

3
@awmckinley: मेरे द्वारा स्रोत नियंत्रण लाने का कारण यह है कि आप विकास के कई प्रमुख होने के बिना प्रभावी रूप से रिलीज का प्रबंधन करने में सक्षम नहीं होंगे - भले ही आप केवल एकल डेवलपर हों। जब आप रिलीज़ n पर काम कर रहे हों तब भी आपको रिलीज़ n + 1 के बारे में सोचना होगा।
बिली ओनली

5

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

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

मेरी राय में, यह सबसे महत्वपूर्ण तरीकों में से एक है जिसमें वास्तविक दुनिया में विकास विश्वविद्यालय से पढ़ाए गए विकास से भिन्न होता है।


3

वास्तव में व्यापक प्रश्न; विस्तार से जवाब देने के लिए ... कई किताबें हैं।

आरंभ करने के लिए यहां एक सामान्य प्रणाली-परिभाषा चेकलिस्ट है -

  • सिस्टम में महत्वपूर्ण संसाधन क्या हैं और उन पर मांग कैसे बदल सकती है?
  • सिस्टम की प्रदर्शन क्षमताएं क्या हैं और उन्हें बढ़ने की आवश्यकता कैसे हो सकती है?
  • आवश्यकता के कौन से क्षेत्र अनावश्यक और हटाने योग्य हो सकते हैं?
  • क्या विभिन्न क्षमताओं के साथ सिस्टम के विभिन्न संस्करणों की आवश्यकता की संभावना है?
  • यदि पहचाने गए परिवर्तनों के बारे में जनशक्ति और कंप्यूटर संसाधनों पर क्या प्रभाव पड़ते हैं?
  • मौजूदा ऑपरेशन सिस्टम पर नई प्रणाली का क्या प्रभाव पड़ेगा?
  • फ़ंक्शन के किन क्षेत्रों में सिस्टम के साथ अनुभव के प्रकाश में परिवर्तन की आवश्यकता होती है?
  • सिस्टम के भावी उपयोगकर्ता कौन हैं?
  • सिस्टम के भविष्य के रखवाले क्या हैं?
  • भविष्य के संवर्द्धन क्या हैं जो सिस्टम के भावी उपयोगकर्ता संभावना के रूप में पहचान सकते हैं?
  • सिस्टम उपयोगकर्ता की समग्र योजनाओं में कैसे फिट बैठता है और उन्हें कैसे विकसित होने की उम्मीद है?

1

किसी की विकास मशीन, और लक्ष्य मशीन पर सिस्टम की स्वच्छ डिकम्पलिंग, ताकि कोई "ठीक है, यह मेरी मशीन पर काम करता है" स्थितियों के साथ समाप्त न हो।

और आप कितनी जल्दी अपनी विकास मशीन को फिर से संगठित कर सकते हैं?

  • क्या आप जानते हैं कि आपको किन पैकेजों की आवश्यकता है?
  • क्या आपके पास अपने डेटाबेस के पुनर्निर्माण के लिए एक पुश बटन समाधान है?
  • क्या आपके पास स्रोत कोड पर अखंडता का परीक्षण करने के लिए एक पुश बटन समाधान है?

1

मुझे लगता है कि इसका संभवतया डिजाइन - यानी यह सोचने का तरीका कि आप इसे करने से पहले क्या करने जा रहे हैं।

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

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

जाहिर है कि वह इसे काम कर रहा है लेकिन यह सुव्यवस्थित नहीं था, और इसका मतलब था कि स्थापना, और रखरखाव, परेशानी भरा होगा।


1

मुझे लगता है कि कोडिंग तकनीक में सबसे बड़ा अंतर है। सभी के पास थोड़ा अलग दृष्टिकोण है, लेकिन अनुभवहीन डेवलपर्स कोड का उत्पादन करते हैं:

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

0

क्योंकि आपने सबसे खराब चीजें पूछीं, तो मेरा जवाब इस प्रकार है:

  1. स्पाईवेयर, मालवेयर और ट्रोजन वायरस से विकास मशीन को सैनिटाइज करने के बारे में सोचना भूल गया।
  2. एक सुरक्षित बैकअप बनाने के बारे में सोचना भूल गए जो सुरक्षित भौगोलिक क्षेत्रों में सुरक्षित है।

0

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

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

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