यह ओवरकिल कब बनता है?


10

सबसे पहले, मैं माफी माँगता हूँ क्योंकि मैं नहीं जानता कि कैसे एक सामुदायिक धागा बनाने के लिए; इसलिए किसी ने मेरी मदद करो कृपया।

एक डेवलपर के रूप में, कई प्लेटफार्मों, प्रौद्योगिकियों और यहां तक ​​कि एक बुनियादी ढांचे के स्तर पर; मैं हमेशा खुद से पूछती हूँ, कि मैं कब बहुत कुछ कर रही हूँ?!?

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

लेकिन संतुलन कहां है, और आपको कैसे पता चलेगा कि आप समय खो रहे हैं, इसे हासिल नहीं कर रहे हैं?


1
क्या हम उस दिन से एक मिलियन उपयोगकर्ताओं के लिए स्केलिंग जैसी चीजों के बारे में बात कर रहे हैं जब आपके पास अभी कोई ग्राहक नहीं है? या अधिक कार्यात्मक चीजें जैसे कि कर की गणना "कॉन्फ़िगर करने योग्य" की जाती है जब कोई सुझाव नहीं होता है तो वे कभी भी बदल सकते हैं और भले ही उन्हें कोई भी पता नहीं था कि वे इस काल्पनिक नई दुनिया में कैसे काम कर सकते हैं?
जॉन हॉपकिंस

1
समुदाय विकी बहुत अधिक पदावनत है। यह वास्तव में योजना के अनुसार कभी काम नहीं किया। इसके बारे में चिंता मत करो।
डेविड थॉर्नले

जब आप एक लाख उपयोगकर्ताओं के बारे में बात कर रहे हैं, तो ओवरकिल आपकी शब्दावली में नहीं होना चाहिए।
थेओफिस पैंटलिड्स

जवाबों:


12

आप बहुत अधिक कर रहे हैं जब औसत डेवलपर समझ नहीं सकता है कि आपने अपना कोड पढ़कर क्या किया

  • अपनी टीम के साथ लगातार कोड समीक्षा करें।
  • उन आर्किटेक्चर, प्रौद्योगिकियों या पैटर्नों के साथ चर्चा करें जिनका आप उपयोग करने की योजना बना रहे हैं। (यदि आपके पास दैनिक स्टैंड-अप मीटिंग्स हैं)

मैं सभी सीवी चालित "आर्किटेक्ट्स" से लड़ता हूँ जिससे मेरा सामना होता है। मैं चाहता हूँ कि गुंबद अस्तित्व में है! ;)

मेरा मानना ​​है कि दुनिया पैसे का एक बड़ा ढेर बर्बाद कर रही है जिसका उपयोग हम अपने (प्रोग्रामर के) जीवन को बेहतर बनाने के लिए कर सकते हैं।


5
"मैं सभी सीवी चालित" आर्किटेक्ट्स "I मुठभेड़" से
लड़ता हूं

2
मैं जरूरी इस पर सहमत नहीं हूँ (व्यावहारिक रूप से), डेवलपर्स के एक असमान स्तर को देखते हुए। अमानी बार मैं एक समान पुस्तकालय का उपयोग करने के लिए इसी तरह की परियोजनाओं को रिफ्लेक्टर करता हूं, और हमेशा पहले की तरह पठनीय नहीं।
थेफनिस पैंटलिड्स 16

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

1
मुझे आपका पहला वाक्य पसंद है; कोड की स्पष्टता महत्वपूर्ण है। लेकिन बार-बार कोड की समीक्षा? दैनिक बैठकों में वास्तुकला की चर्चा ... वास्तव में? और वास्तव में "सीवी संचालित आर्किटेक्ट" का क्या मतलब है?
रॉबर्ट हार्वे

1
बार-बार कोड की समीक्षा का मतलब है कि वे स्वचालित होना चाहिए। आप एक सुविधा लिखते हैं, आपका एक सहकर्मी इसकी समीक्षा करता है और इसे मान्य करने के लिए इसे समझना चाहिए। यदि वह आपसे सवाल करता है, तो आप कोड को बेहतर बनाने के लिए मिलकर काम करेंगे। आप स्टैंड-अप के दौरान अपनी वास्तु संबंधी समस्याओं का उल्लेख करते हैं, लेकिन चर्चा इसके बाद होती है। पढ़ें कौन एक वास्तुकार की जरूरत है ( martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf )। CV संचालित का मतलब है कि आप एक तकनीक

11

जब प्रक्रियाएं परिणामों से आगे निकल जाती हैं।

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

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


4

मेरे लिए मुझे पसंद है कि केंट बेक एक्सपी में आगे रखता है (सुनिश्चित नहीं है कि यह "उसका" विचार है या किसी और का है, लेकिन यह वह जगह है जहां मैंने पहली बार सुना है):

आज की समस्याओं को हल करने के लिए यह कठिन है कि कल की समस्याएं क्या हैं और उन्हें भी हल करें।

डेवलपर्स उन आवश्यकताओं के समाधान पर बहुत समय बिता सकते हैं जो मौजूद नहीं हैं, किनारे के मामले जो कभी नहीं होंगे या यहां तक ​​कि वास्तविक समस्याएं भी होंगी जहां समस्या का प्रभाव इसे रोकने की लागत से काफी कम है।

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

उपयोगकर्ता के लिए इस गैर-इष्टतम परिणाम से परे, इस तरह से अधिक इंजीनियरिंग के डेवलपर पर प्रभाव जटिल कोड से अधिक हो जाता है जो समर्थन करने के लिए कठिन है और बढ़ाने के लिए कठिन है।

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

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


कैसे सब कुछ modularizing के बारे में, और फिर आप पैमाने के रूप में मॉड्यूल की जगह? या वह ओवरकिल भी है !?
थेफानिस पैंटलैड्स 16

1
@ Theofanis Patelides - अच्छी तरह से संरचित कोड हमेशा एक अच्छा विचार है, लेकिन ज्यादातर चीजों के साथ आप निश्चित रूप से इसे बहुत दूर ले जा सकते हैं। मुझे लगता है कि इनमें से कई चीजों के साथ यह समय के साथ सहज हो जाता है - आप जानते हैं कि आपने पहले जो काम किया है वह क्या है और समय की बर्बादी क्या है।
जॉन हॉपकिंस

1

आपका प्रश्न काफी खुला है, इसलिए मैं इसकी व्याख्या "प्रोजेक्ट के एक हिस्से पर बहुत अधिक कर रहा हूँ":

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

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

ट्रैसर कोड लिखना ( कोड कम्प्लीट से ) संभवतः इससे बचने का एक अच्छा विचार है: आप अपनी परियोजना को कोड लिखकर शुरू करते हैं जो पूरे कोड को जोड़ता है - GUI से (या इसके पास) बैकएंड पर और फिर वापस। इस तरह से आपके पास हमेशा कुछ ऐसा होता है जो काम करता है और जब तक आप पूरी चीजों को नहीं चलाते हैं तब तक छोटी चीजों को पूरा करने में समय व्यतीत नहीं करते हैं।

लेकिन फिर भी, यह अनुशासन और प्राथमिकता का विषय है।


मैं सहमत हूं, लेकिन मैंने खुद को कई बार कार्यक्षमता के घंटे बिताते हुए पाया है और फिर इसे एक गैर-तकनीकी एंड्यूसर के साथ गुजर रहा है, और इसे छोटी चीज़ों के कारण बदल रहा है!
थेफनिस पैंटलिड्स 16

1

जब मैं जवाब नहीं "मैं पागल हो रहा हूँ मैं बाद में ऐसा नहीं किया और यह मुझे काटता है ..

IRL संसाधन और समय की कमी आमतौर पर मुझे मिलती है, इससे पहले कि मुझे यह सवाल पूछना है। उस बिंदु पर आप सिर्फ सबसे महत्वपूर्ण / प्राप्त बिट्स पर ध्यान केंद्रित करते हैं और सर्वश्रेष्ठ के लिए आशा करते हैं।


1
मेरे लिए प्लान ए से विचलित करने के अलावा और अधिक परेशान करने वाला कुछ नहीं है
थियोफनीस पैंटलाइड्स

1

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

सबसे खराब स्थिति तब होती है जब अंतिम उपयोगकर्ता / ग्राहक / ग्राहक आप होते हैं! :)

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